波紋
単純な円を書くコードで半径を abs(cos(time))
にすることで規則的に動くようにした。
[-1<cos(th)<1]
を[-1.3*.7<cos(th)<.7*.7]
にすることで 2 つの大きさが交互になる。
後は RGB 毎にタイミングをずらし(-f
)て、太さも変えた(/2., /4.
)。
細い線が先に動くように見えるので波紋のように見える(といいな)。
precision highp float;uniform vec2 resolution;uniform float time;vec2 p;float c(float f){return pow(length(p)-abs((cos(time-f)-.3)*.7),2.);}void main(){vec2 r=resolution;p=(gl_FragCoord.xy*2.-r)/r.y;gl_FragColor.xyz=1e-4/vec3(c(0.),c(.1)/2.,c(.3)/4.);} #つぶやきGLSL #classic pic.twitter.com/CFfchAvWLQ
— Narumium (@Nr_Narumium) October 17, 2020
整形コード
precision highp float;
uniform vec2 resolution;
uniform float time;
vec2 p;
float c(float f){return pow(length(p)-abs((cos(time-f)-.3)*.7),2.);}
void main(){
vec2 r=resolution;p=(gl_FragCoord.xy*2.-r)/r.y;
gl_FragColor.xyz=1e-4/vec3(c(0.),c(.1)/2.,c(.3)/4.);
}