Molten mercury — the frame reskinned as poured metal.
GLSL fragment shader
The effect's own code. The uniforms and helpers above it — uTex, uFeedback, the depth proxy, the frame ring, depthAt(), timeAt() — are the same header every Ether-MOSH shader opens with, and are documented once on the registry rather than reprinted on all 143 pages.
void main(){ vec2 px = 1.0 / uResolution; vec2 uv = vUv + (vec2(noise(vUv * 3.0 + uTime * 0.2), noise(vUv * 3.0 - uTime * 0.17)) - 0.5) * 0.04 * uFlow; float sp = mix(1.0, 4.0, uFlow); vec3 L = vec3(0.299, 0.587, 0.114); vec3 base = texture2D(uTex, uv).rgb; float l = dot(base, L); float lx = dot(texture2D(uTex, uv + vec2(px.x * sp, 0.0)).rgb, L); float ly = dot(texture2D(uTex, uv + vec2(0.0, px.y * sp)).rgb, L); // Treat luminance as a height field; its gradient is the surface normal. // Flow also deepens the relief, so X sweeps gentle ripple → violent molten. float relief = mix(4.0, 18.0, uFlow); vec3 n = normalize(vec3((l - lx) * relief, (l - ly) * relief, 1.0)); vec3 rfl = reflect(vec3(0.0, 0.0, -1.0), n); float band = sin(rfl.y * 6.0 + uTime * 0.6) * 0.5 + 0.5; vec3 sky = mix(vec3(0.05, 0.06, 0.13), vec3(0.92, 0.96, 1.0), pow(band, 2.0)); sky += vec3(1.0, 0.45, 0.85) * pow(max(0.0, rfl.x), 5.0) * 0.6; sky += vec3(0.2, 0.9, 1.0) * pow(max(0.0, -rfl.x), 5.0) * 0.45; // Sheen is the polish axis: matte keeps the frame's own colour, mirror // replaces it with the reflected environment. Without this the shader // collapses to grey steel and the Y axis does nothing. vec3 metal = mix(base * (0.55 + l * 0.9), sky * (0.4 + l * 0.8), uSheen); float spec = pow(max(0.0, dot(rfl, normalize(vec3(0.4, 0.6, 1.0)))), mix(6.0, 120.0, uSheen)); vec3 col = metal + spec * (0.4 + uPulse * 0.8) * mix(0.35, 1.0, uSheen); // "Mirror" mode replaces the surface's color, not its identity — the // silhouette is still the same object, so alpha rides the same // flow-displaced uv the color itself samples from. gl_FragColor = vec4(col, texture2D(uTex, uv).a); }