mirror of
https://github.com/CookieCollective/Live-Coding-Sources.git
synced 2025-07-22 08:40:12 +02:00
59 lines
894 B
GLSL
59 lines
894 B
GLSL
|
|
precision mediump float;
|
|
|
|
uniform float time;
|
|
uniform vec2 resolution;
|
|
|
|
float scene(vec3 p)
|
|
{
|
|
return p.y;
|
|
}
|
|
|
|
vec3 rm(vec3 o, vec3 r)
|
|
{
|
|
vec3 p = o;
|
|
|
|
for(int i = 0; i < 512; ++i)
|
|
{
|
|
float d = scene(p);
|
|
}
|
|
|
|
return p;
|
|
}
|
|
|
|
float rand(vec2 uv)
|
|
{
|
|
return fract(sin(dot(vec2(12.9898, 78.233), uv))*43758.5453);
|
|
}
|
|
|
|
vec3 sc(vec3 p, vec2 uv)
|
|
{
|
|
vec3 co = vec3(0., 0.07, .14);
|
|
|
|
co += smoothstep(.99, 1., rand(uv));
|
|
float md = length(uv-vec2(-.8, .4));
|
|
|
|
co = mix(co, vec3(1.), 1.-smoothstep(.12, .125, md));
|
|
|
|
|
|
|
|
co += .5*exp(-4.*md)*vec3(1.2, 1.1, .8);
|
|
co += .2*exp(-2.*md);
|
|
|
|
return co;
|
|
}
|
|
|
|
void main () {
|
|
vec2 uv = -1.+2.*gl_FragCoord.xy / resolution.xy;
|
|
uv.x *= gl_FragCoord.x/gl_FragCoord.y;
|
|
vec3 rd = normalize(vec3(uv, -1.));
|
|
vec3 o = vec3(0., 0., 0.);
|
|
vec3 p = rm(o, rd);
|
|
|
|
vec3 rp = o-(100.-o.y)/(rd/rd.y);
|
|
|
|
vec3 co = sc(rp, uv);
|
|
|
|
gl_FragColor = vec4(co, 1);
|
|
}
|