#version 330 in vec2 fragTexCoord; in vec4 fragColor; out vec4 finalColor; uniform vec3 color; uniform float sun_radius; uniform float start_transperency; vec2 offset = vec2(1.0f, 1.0f); float sun_end = 1.0f; void main() { offset.x -= fragTexCoord.x * 2; offset.y -= fragTexCoord.y * 2; float radius = length(offset); if(radius < sun_radius){ finalColor = vec4(color, 1.0f); }else if(radius < sun_end){ float gradient = radius; gradient -= sun_radius; gradient = gradient / (sun_end - sun_radius) * start_transperency; finalColor = vec4(color, start_transperency - gradient); }else{ finalColor = vec4(color, 0.0f); } }