Synchronize a GSplats material's splat-texture binding after a
geometry commit.
Splat data lives in an RGBA32F texture that shares the geometry's
lifetime (gsplat-geometry.ts::attachSplatStorage). A pool acquire
may hand the node a DIFFERENT geometry+texture pair (growth,
best-fit reuse, first commit after the placeholder mesh), so the
commit rebinds uSplatTex on the render material and — via
userData.pickNode — the pick material. Idempotent: both wrapper
classes no-op when the texture identity is unchanged (the common
same-geometry commit), so this is safe to call on every commit.
(The geometry itself is re-pointed by the commit's ownership
handoff + invalidateRenderObjectFor; this helper covers only the
material side.)
Synchronize a GSplats material's splat-texture binding after a geometry commit.
Splat data lives in an RGBA32F texture that shares the geometry's lifetime (
gsplat-geometry.ts::attachSplatStorage). A pool acquire may hand the node a DIFFERENT geometry+texture pair (growth, best-fit reuse, first commit after the placeholder mesh), so the commit rebindsuSplatTexon the render material and — viauserData.pickNode— the pick material. Idempotent: both wrapper classes no-op when the texture identity is unchanged (the common same-geometry commit), so this is safe to call on every commit. (The geometry itself is re-pointed by the commit's ownership handoff +invalidateRenderObjectFor; this helper covers only the material side.)