Registry assembly + re-export surface for the TSL ↔ GLSL parity
harness. The page entry (../tsl-harness.ts, loaded by
tsl-harness.html) imports everything it needs from here.
The registry entries live in six shader-family modules —
post-processing.ts, points.ts, lines.ts, gsplats.ts,
mesh.ts, and the shared-math erf.ts — and are merged here into
the single SHADER_REGISTRY the Playwright parity/codegen specs
drive by name.
The registry is deliberately WIDER than the codegen snapshot list: an entry earns
a snapshot only when it generates distinct shader code, while an entry that
exercises a distinct BINDING or a distinct RUNTIME-UNIFORM ARM belongs in the
parity spec alone. mesh-rgb's size-3 colour attribute and
mesh-pick-commutative's cutout-off state each compile to a shader byte-identical
to one already snapshotted, so a second snapshot would pin nothing new — while the
rendered pixels differ, which is what those entries are for.
Registry assembly + re-export surface for the TSL ↔ GLSL parity harness. The page entry (
../tsl-harness.ts, loaded bytsl-harness.html) imports everything it needs from here.The registry entries live in six shader-family modules —
post-processing.ts,points.ts,lines.ts,gsplats.ts,mesh.ts, and the shared-matherf.ts— and are merged here into the singleSHADER_REGISTRYthe Playwright parity/codegen specs drive by name.The registry is deliberately WIDER than the codegen snapshot list: an entry earns a snapshot only when it generates distinct shader code, while an entry that exercises a distinct BINDING or a distinct RUNTIME-UNIFORM ARM belongs in the parity spec alone.
mesh-rgb's size-3 colour attribute andmesh-pick-commutative's cutout-off state each compile to a shader byte-identical to one already snapshotted, so a second snapshot would pin nothing new — while the rendered pixels differ, which is what those entries are for.