Package-level declarations

Types

Link copied to clipboard
class GltfGaussianLoader(rawSpzLoader: SpzGaussianLoader = SpzGaussianLoader(options = SpzDecodeOptions.ANISOTROPIC)) : GaussianLoader

Loader for glb-wrapped Gaussian splats — glTF 2.0 binary declaring KHR_gaussian_splatting + KHR_gaussian_splatting_compression_spz_2, with the SPZ stream as a bufferView in the BIN chunk. The de-facto production wire format (Cesium, gs_view, Niantic Lightship VPS). Also accepts raw .spz (NGSP) so a single registration on earth.worldwind.layer.ogc3d.Ogc3dTilesLayer.gaussianLoader handles both.

Link copied to clipboard
class JvmSpzInflater : SpzInflater

JVM + Android SpzInflater backed by GZIPInputStream. Pre-sizes the output from the GZIP trailer's ISIZE field (avoiding the BAOS internal-buffer + final-copy alloc), with a growable fallback when ISIZE is unusable.

Link copied to clipboard
class SpzDecodeOptions(val skipRotations: Boolean = false, val skipOpacities: Boolean = false, val skipSphericalHarmonics: Boolean = false)

Per-attribute skip flags for SpzGaussianLoader. Each skip* flag short-circuits the corresponding decode loop (the cursor still advances over the bytes when later sections follow), and the payload field is left empty/null. Use ROUND_SPLAT when the renderer only needs centres + scales + rgba — the rotation, opacity, and SH decodes are by far the most expensive operations in the parser.

Link copied to clipboard
class SpzGaussianLoader(defaultRtcCenter: DoubleArray? = null, options: SpzDecodeOptions = SpzDecodeOptions.FULL) : GaussianLoader

Concrete GaussianLoader for Niantic's SPZ wire format — the de-facto Gaussian-splat exchange format. Spec: https://github.com/nianticlabs/spz. Decoder matches the reference src/cc/load-spz.cc for versions 1, 2, and 3.

Link copied to clipboard
fun interface SpzInflater

Platform-pluggable gzip / deflate inflater. SPZ payloads are gzip-compressed after the fixed 16-byte header — the engine has no built-in inflater that works across all KMP targets (JVM has GZIPInputStream, K/N doesn't, Kotlin/JS would need a separate Pako binding), so we expose this hook and let the app wire the most appropriate implementation per target.

Functions

Link copied to clipboard

Install the platform-default SpzInflater on SpzGaussianLoader.inflater when the slot is empty. Idempotent. No-op on platforms without a built-in gzip; apps targeting those must wire their own SpzInflater before the first SPZ tile is fetched.

Kotlin/Native has no built-in gzip — leave SpzGaussianLoader.inflater unset. Apps that need SPZ on iOS register a compression-framework backed SpzInflater before fetching the first SPZ tile.

JVM + Android default: GZIPInputStream-backed JvmSpzInflater.

Browser targets (js + wasmJs) have no synchronous gzip primitive — CompressionStream is async-only. Leave SpzGaussianLoader.inflater unset; apps that need SPZ in the browser register a pako-binding-backed SpzInflater before fetching the first SPZ tile.