diff --git a/shader.glsl b/shader.glsl index bda7fe9..623f066 100644 --- a/shader.glsl +++ b/shader.glsl @@ -182,7 +182,7 @@ vec3 map(vec3 p, int displace) d2 = min(d2, step); stepDist += .2; } - d2 += noise(p.xz * 50.+200., .01, 0); // - noise (p.yz*2.+1.5, 0.15,0); + d2 += noise(p.xz * 50.+200., .01, 0) - noise (p.yz*2.+1.5, 0.15,0); d = min(d, d2); if (d==d2) mat = 2.0; @@ -234,7 +234,7 @@ vec3 map(vec3 p, int displace) // glyph locking prism material if( d == prismTop) if(u_time > rotateDelay + .2) { mat = 5.; - glo = prismTop; + glo = min(d2, prismTop); } } } @@ -247,16 +247,18 @@ vec3 map(vec3 p, int displace) //////////////// float rayMarch(vec3 ro, vec3 rd, int a) { - float d,t = 0.; // total distance travelled + vec3 d; + float t = 0.; // total distance travelled // Raymarching for (int i = 0; i < 100; i++) { - d = map(ro + rd * t, 0).x; // Get distance to objects - if (a==0) glow += 0.05/(1.0 + 10.*pow(map(ro + rd * t, 0).z, .5)); - t += d; // "march" the ray - if (d < 1e-4 || t > 600.) break; + d = map(ro + rd * t, 0); // Get distance to objects + if (a==0) glow += 0.05/(1.0 + 10.*pow(d.z, .5)); + t += d.x; // "march" the ray + if (d.x < 1e-3 || t > 400.) break; } return t; } + vec3 getNormal(vec3 p) { vec2 e = vec2(.01, 0.); vec3 n = map(p, 1).x - vec3(