BLOKS Shader Bulletin Board
intro raymarch
Shader Preview Unavailable
This realtime shader may be too intensive for your current device or browser.
Shader Code
float map(vec3 p)
{
return length(p) - 1.0;
}
float march(vec3 ro, vec3 rd)
{
float d = 0.0;
for(int i = 0; i < 64; i++)
{
vec3 p = ro + rd * d;
float ds = map(p);
if(ds < 0.001) break;
d += ds;
if(d > 20.0) break;
}
return d;
}
void mainImage(out vec4 fragColor, in vec2 fragCoord)
{
vec2 uv = fragCoord.xy / iResolution.xy;
vec2 p = uv * 2.0 - 1.0;
p.x *= iResolution.x / iResolution.y;
vec3 ro = vec3(0.0, 0.0, -4.0);
vec3 rd = normalize(vec3(p, 1.5));
float d = march(ro, rd);
vec3 color = vec3(0.02, 0.04, 0.08);
if(d < 20.0)
{
color += vec3(0.1, 0.7, 1.0)
* exp(-d * 0.2);
}
fragColor = vec4(color, 1.0);
}
