FORGED BY SIN/ SHADER FIELD GUIDE

Three.js 0.184.0 / one shared custom shader / 20 modes

S00 / Lambert reference S06 / Two-band toon
Loading the fixed control scene...

Graphic light

S06 / Two-band toon

MATERIAL FRAGMENT

Hard quantization turns smooth light into two graphic values.

Mechanism
A fragment-shader threshold selects shadow or light response.
Only change
Diffuse response is quantized to two values.
Honest limitation
Useful as a stress test; too blunt for the production answer.
Held fixed
Scene SC01 / camera C01 / light R01 / atlas A01 / output O01

Fixed comparison contract

No CPU scene state changes.

Engine
Three.js 0.184.0, WebGL, ACES, sRGB
Capture
1024 x 640, DPR 1, fixed projection
Asset
Original textured goblin, one embedded atlas
Scene
Identical source meshes, CPU transforms, sky, fog, and contact mark
Lighting
One immutable view-space key vector; no shadow map
Runtime mutation
Only uMode; S08 consumes it in the vertex stage; no material or GPU allocation on selection

Deliberately outside this experiment

These need more than the current object shader.

True silhouettes and crease lines need another draw or scene buffers. Kuwahara, bloom, LUT grading, screen-wide pixelation, and full-frame dithering need the completed frame. Semantic Sable-like lines need authored masks, IDs, line geometry, or texture ink. They are not hidden inside any specimen here.

Evidence, not mockups

Each card is a real GPU capture.

The capture manifest records image hashes, pixel deltas, the source asset hash, the renderer string, and the invariant control fingerprint. The live workbench runs the same shader program used for the captures.

S06 / Two-band toonCompare selected