Hi, I have some questions about coordinate precision when displaying 3D Gaussian Splatting in CesiumJS.
I have built my own pipeline to create 3D Tiles using KHR_gaussian_splatting + KHR_gaussian_splatting_compression_spz_2, and have confirmed that rendering works correctly.
However, I have found that SPZ compression introduces rounding errors due to quantization — specifically, positions are stored as 24-bit fixed-point integers with fractionalBits=12. While I understand this is unlikely to cause visible artifacts in most cases, I am exploring options for higher-precision or lossless display for use cases such as surveying and infrastructure inspection.
I would appreciate clarification on the following points.
Question 1: Support for KHR_gaussian_splatting without SPZ compression
Does CesiumJS currently support loading a glTF tile content that uses KHR_gaussian_splatting alone, without KHR_gaussian_splatting_compression_spz_2? Or is the internal implementation built around SPZ decoding, such that a non-SPZ glTF would either fail to display or fall back to point cloud rendering?
Question 2: Support for non-default fractionalBits in SPZ
In the SPZ library, packGaussians currently hardcodes fractionalBits=12. However, the format specification stores this value in the file header, and the decoder is designed to read it dynamically. Does the CesiumJS SPZ decoder correctly handle fractionalBits values other than 12 — for example, 14 or 16?
Question 3: Recommended approach for lossless display
Is there any supported path in CesiumJS to display 3DGS data at full float32 precision, without quantization error? If no such path currently exists, are there any plans to support this in the future?
For context, our target use cases involve precision-critical applications such as surveying and infrastructure monitoring.
Thank you in advance for any guidance.