33 lines
559 B
GLSL
33 lines
559 B
GLSL
uniform sampler2D tex;
|
|
uniform vec2 sunpos;
|
|
|
|
#define SAMPLES 12
|
|
|
|
const float decaystep = 0.88;
|
|
|
|
out vec4 FragColor;
|
|
|
|
void main()
|
|
{
|
|
vec2 uv = 4. * gl_FragCoord.xy / u_screen;
|
|
vec2 texc = uv;
|
|
vec2 tosun = sunpos - texc;
|
|
|
|
// if (dot(tosun, tosun) > 0.49) discard;
|
|
|
|
vec2 dist = tosun * 1.0/(float(SAMPLES) * 1.12);
|
|
|
|
vec3 col = texture(tex, texc).xyz;
|
|
float decay = 1.0;
|
|
|
|
for (int i = 0; i < SAMPLES; i++) {
|
|
texc += dist;
|
|
vec3 here = texture(tex, texc).xyz;
|
|
here *= decay;
|
|
col += here;
|
|
decay *= decaystep;
|
|
}
|
|
|
|
FragColor = vec4(col, 1.0) * 0.8;
|
|
}
|