3色ハート
ハート を RGB 毎に別方向に動かした。
gl_FragCoord
や gl_FragColor
のような変数名の重さがよくわかる。
本当はclassicに収めたかった #つぶやきGLSL #geeker
— Narumium (@Nr_Narumium) May 13, 2020
float h(vec2 p){return step(.0,p.x*p.x*p.y*p.y*p.y-pow(dot(p,p)-1.,3.));}void main(){vec2 p=3.*(gl_FragCoord.xy*2.-r)/r.y;float s=sin(t),a=pow(s,2.);gl_FragColor=vec4(vec3(h(p+vec2(s,-s)),h(p+vec2(-a)),h(p+vec2(a))),1);} pic.twitter.com/iSw2rrHSah
整形コード
float h(vec2 p){
return step(.0,p.x*p.x*p.y*p.y*p.y-pow(dot(p,p)-1.,3.));
}
void main(){
vec2 p=3.*(gl_FragCoord.xy*2.-r)/r.y;
float s=sin(t),a=pow(s,2.);
gl_FragColor=vec4(
vec3(
h(p+vec2(s,-s)),
h(p+vec2(-a)),
h(p+vec2(a))
),
1);
}