46 lines
1.0 KiB
GLSL
46 lines
1.0 KiB
GLSL
/*
|
|
"Speak" by @XorDev
|
|
|
|
Playing with music reactive shaders
|
|
|
|
<512 playlist:
|
|
https://www.shadertoy.com/playlist/N3SyzR
|
|
*/
|
|
|
|
void mainImage(out vec4 O, vec2 I)
|
|
{
|
|
//Animation time
|
|
float t=iTime,
|
|
//Raymarch depth
|
|
z,
|
|
//Step distance
|
|
d,
|
|
//Signed distance
|
|
s,
|
|
//Raymarch iterator
|
|
i;
|
|
|
|
//Clear fragColor and raymarch 60 steps
|
|
for(O*=i; i++<6e1;
|
|
//Coloring and brightness
|
|
O+=(cos(i*.1+t+vec4(6,1,2,0))+1.)/d)
|
|
{
|
|
//Sample point (from ray direction)
|
|
vec3 p = z*normalize(vec3(I+I,0)-iResolution.xyy),
|
|
//Rotation axis
|
|
a = normalize(cos(vec3(0,2,4)+t+.1*i));
|
|
//Move camera back 5 units
|
|
p.z+=9.,
|
|
//Rotated coordinates
|
|
a = a*dot(a,p)-cross(a,p);
|
|
|
|
//Turbulence loop
|
|
for(d=.6;d<9.;d+=d)
|
|
a-=cos(a*d+t-.1*i).zxy/d;
|
|
|
|
//Distance to hollow, distorted sphere
|
|
z+=d=.1*abs(s=length(a)-3.- sin(texture(iChannel0,vec2(1,s)*.1).r/.1));
|
|
}
|
|
//Tanh tonemap
|
|
O = tanh(O/1e3);
|
|
} |