#version 300 es precision mediump float; in vec2 fragTexCoord; in vec4 fragColor; out vec4 finalColor; uniform vec3 color; vec2 offset = vec2(1.0, 1.0); float start_transparency = 0.40f; float sun_radius = 0.6f; float sun_end = 1.0f; void main() { offset.x -= fragTexCoord.x * 2.0; offset.y -= fragTexCoord.y * 2.0; float radius = length(offset); if(radius < sun_radius){ finalColor = vec4(color, 1.0); }else if(radius < sun_end){ float gradient = radius; gradient -= sun_radius; gradient = gradient / 0.4f * start_transparency; finalColor = vec4(color, start_transparency - gradient); }else{ finalColor = vec4(color, 0.0); } }