The decoded float cloud (from SpzDecoder.decode).
Position grid divisor exponent (meters = q / 2^fractionalBits);
defaults to 12, matching the meta SpzContainerDecoder.open reports.
Optionalkeep: SplatKeepMaskOptional keep-mask (from computeStrayMask); culled splats are skipped in one pass — no intermediate cloud copy.
The quantized DecodedSplatTile with count === cloud.numPoints (or
keep.count when masked) and shDegree === min(3, cloud.shDegree)
(sh1/sh2/sh3 attached per that degree).
Domain conversions baked in here (all verified against the SPZ spec):
cloud.scales are already LOG-scales; cloud.alphas are opacity LOGITS
(pre-sigmoid — real captures contain ±Infinity, which the sigmoid maps to 255/0;
NaN is guarded to 0); cloud.colors are raw SH band-0 DC coefficients. Source SH
is read at the cloud's own per-splat stride (degree 4 = 72 floats/splat) and the
tile is capped at degree 3 — band-4 coefficients are dropped. All output arrays
are preallocated once; the per-splat loop is allocation-free.
Quantize a flat float SpzGaussianCloud into ONE
DecodedSplatTile— the exact inverse of@bitruvius/geo-core's dequant formulas (splatPositionToMeters,splatScale,splatOpacity,splatColorDc,splatShCoeff,decodeSmallestThree), so the render shaders expand it byte-identically to any other splat container.