59 lines
2.2 KiB
GLSL
59 lines
2.2 KiB
GLSL
uniform sampler2D tex;
|
|
uniform float progression;
|
|
|
|
vec3 desaturate(vec3 c, float s)
|
|
{
|
|
return mix( c, vec3(dot(vec3(0.33), c)), s);
|
|
}
|
|
|
|
void main()
|
|
{
|
|
float A = 3.1415 * 0.5;
|
|
float TOUR = 13.0;
|
|
|
|
float t = gl_TexCoord[0].y;
|
|
float s = gl_TexCoord[0].x + 0.15 * sin(t * 2.0 * 3.1415);
|
|
|
|
float v = smoothstep(0.0,0.1,t) - smoothstep(0.9,1.0,t);
|
|
|
|
float center1 = 0.5 + 0.5 * sin(TOUR * t);
|
|
float distu1 = abs(center1 - s);
|
|
float value1 = sqrt(max(0.0, 2.5 - (9.0 - 3.0 * abs(cos(TOUR * t))) * distu1));
|
|
float alpha1 = value1 *max(0.0,-cos(TOUR * t));
|
|
|
|
float center2 = 0.5 + 0.5 * sin(TOUR * t + A);
|
|
float distu2 = abs(center2 - s);
|
|
float value2 = sqrt(max(0.0, 2.5 - (9.0 - 3.0 * abs(cos(TOUR * t + A))) * distu2));
|
|
float alpha2 = value2 *max(0.0,-cos(TOUR * t + A));
|
|
|
|
float center3 = 0.5 + 0.5 * sin(TOUR * t + A * 2.0);
|
|
float distu3 = abs(center3 - s);
|
|
float value3 = sqrt(max(0.0, 2.5 - (9.0 - 3.0 * abs(cos(TOUR * t + A * 2.0))) * distu3));
|
|
float alpha3 = value3 *max(0.0,-cos(TOUR * t + A * 2.0));
|
|
|
|
float center4 = 0.5 + 0.5 * sin(TOUR * t + A * 3.0);
|
|
float distu4 = abs(center4 - s);
|
|
float value4 = sqrt(max(0.0, 2.5 - (9.0 - 3.0 * abs(cos(TOUR * t + A * 3.0))) * distu4));
|
|
float alpha4 = value4 * max(0.0, -cos(TOUR * t + A * 3.0));
|
|
|
|
const float desat = 0.3;
|
|
float refs1 = (gl_TexCoord[0].x + 0.51) / 2.0;
|
|
float refs2 = (gl_TexCoord[0].x + 0.44) / 2.0;
|
|
float refs3 = (gl_TexCoord[0].x + 0.55) / 2.0;
|
|
float refs4 = (gl_TexCoord[0].x + 0.48) / 2.0;
|
|
vec3 c1 = (refs1 < progression) ? desaturate(vec3(1.0, 0.59, 1.0), desat) : vec3(0.3,0.3,0.3);
|
|
vec3 c2 = (refs2 < progression) ? desaturate(vec3(0.6,0.18,0.19), desat) : vec3(0.4,0.4,0.4);
|
|
vec3 c3 = (refs3 < progression) ? desaturate(vec3(0.97,0.62,118.0/255.0), desat) : vec3(0.6,0.6,0.6);
|
|
vec3 c4 = (refs4 < progression) ? desaturate(vec3(254.0/255.0,79.0/255.0,138.0/255.0), desat) : vec3(0.5,0.5,0.5);
|
|
|
|
vec4 final_color = vec4(alpha1 * c1
|
|
+ alpha2 * c2
|
|
+ alpha3 * c3
|
|
+ alpha4 * c4, v * (alpha1 + alpha2 + alpha3 + alpha4));
|
|
|
|
vec2 p = gl_TexCoord[0].xy;
|
|
gl_FragColor = gl_Color * final_color * mix(texture2D(tex, p * vec2(1.5, 4.5)), vec4(1.0,1.0,1.0,1.0), 0.5);
|
|
}
|
|
|
|
|