GSplat picking material TSL factory — NodeMaterial counterpart to
GSPLAT_PICK_SOURCE in shaders.ts.
Same 3D→2D covariance projection pipeline as gsplat.tsl, but the
fragment outputs picking data:
R: nodeId (uniform)
G: elementId (instance index) LOW 16 bits
B: brightness clamped to [0, 1]
A: the same elementId's HIGH 16 bits (one f32 channel cannot
carry the whole index exactly — see luxarElementIdParts)
Depth = 1.0 - brightness (brightness-as-depth tie-breaking) — or the
real fragment depth when uSurfaceDepth == 1 (surface/'normal' mode:
front-most wins, matching the depth-sorted occluding surface).
Picking always uses max-projection mode — no ray integration boost
— so the Σ_cam⁻¹ cofactor expansion is omitted vs gsplat.tsl.
GSplat picking material TSL factory — NodeMaterial counterpart to
GSPLAT_PICK_SOURCEinshaders.ts.Same 3D→2D covariance projection pipeline as
gsplat.tsl, but the fragment outputs picking data:luxarElementIdParts) Depth = 1.0 - brightness (brightness-as-depth tie-breaking) — or the real fragment depth whenuSurfaceDepth == 1(surface/'normal' mode: front-most wins, matching the depth-sorted occluding surface).Picking always uses max-projection mode — no ray integration boost — so the Σ_cam⁻¹ cofactor expansion is omitted vs gsplat.tsl.