Ctr + s || Command + s : リロード(エディタにフォーカス中)
Esc : アニメーションの停止
ダウンロードボタンから HTML ファイルをダウンロードできます。文法チェックはしてません。
precision mediump float;
uniform vec2 m; // mouse
uniform float t; // time
uniform vec2 r; // resolution
uniform sampler2D smp; // prev scene
vec3 hsv(float h, float s, float v){
vec4 t = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
vec3 p = abs(fract(vec3(h) + t.xyz) * 6.0 - vec3(t.w));
return v * mix(vec3(t.x), clamp(p - vec3(t.x), 0.0, 1.0), s);
}
void main(void){
vec2 p = (gl_FragCoord.xy * 2.0 - r) / min(r.x, r.y);
int j = 0;
vec2 x = vec2(-0.345, 0.654);
vec2 y = vec2(t * 0.005, 0.0);
vec2 z = p;
for(int i = 0; i < 360; i++){
j++;
if(length(z) > 2.0){break;}
z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + x + y;
}
float h = abs(mod(t * 15.0 - float(j), 360.0) / 360.0);
float f = 0.1 / length(p - m);
vec4 smpColor = texture2D(smp, gl_FragCoord.xy / min(r.x, r.y));
if(length(smpColor) > 0.0){
vec3 tmp = mix(hsv(h, 1.0, 1.0) + f, smpColor.rgb, 0.975);
gl_FragColor = vec4(tmp, 1.0);
}else{
gl_FragColor = vec4(hsv(h, 1.0, 1.0) + f, 1.0);
}
}