Pen-and-ink engraving that follows the shading.
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(){ vec4 srcTex = texture2D(uTex, vUv); vec3 c = srcTex.rgb; float l = dot(c, vec3(0.299, 0.587, 0.114)); vec2 a = vUv * uResolution / uResolution.y * mix(90.0, 320.0, uDensity); // Four hatch layers, each cutting in as the tone gets darker. float h = 1.0; if (l < 0.85) h = min(h, smoothstep(0.0, 0.5, abs(sin((a.x + a.y) * 0.7)))); if (l < 0.62) h = min(h, smoothstep(0.0, 0.5, abs(sin((a.x - a.y) * 0.7)))); if (l < 0.42) h = min(h, smoothstep(0.0, 0.5, abs(sin(a.y * 0.9)))); if (l < 0.22) h = min(h, smoothstep(0.0, 0.5, abs(sin(a.x * 0.9)))); vec3 ink = mix(vec3(0.06, 0.05, 0.08), vec3(0.98, 0.97, 0.94), h); gl_FragColor = vec4(mix(c, ink, uAmount), srcTex.a); }