The varyings and vertex stage both shaded families share, generated for one
variant pair — exported for wgpu-standard.ts, whose vertex needs are
identical (its world position is computed the same way; only its uniforms
differ, and the uniform block's WGSL is the caller's to splice).
The clip position is formed as viewProjection × world — the standard
stage's re-association, adopted for both families here because the world
position is a varying both need and computing model × position twice per
vertex buys nothing a transcript or a pixel can see. The depth remap is
wgpu-unlit.ts's, applied on the way out.
The normal-less variant writes the zero vector GL's default attribute
yields, so the shared fragment guard shades it ambient-only — see the module
header's departure 2.
The varyings and vertex stage both shaded families share, generated for one variant pair — exported for
wgpu-standard.ts, whose vertex needs are identical (its world position is computed the same way; only its uniforms differ, and the uniform block's WGSL is the caller's to splice).The clip position is formed as
viewProjection × world— the standard stage's re-association, adopted for both families here because the world position is a varying both need and computingmodel × positiontwice per vertex buys nothing a transcript or a pixel can see. The depth remap iswgpu-unlit.ts's, applied on the way out.The normal-less variant writes the zero vector GL's default attribute yields, so the shared fragment guard shades it ambient-only — see the module header's departure 2.