BVC is the volumetric pillar of the Bitruvius Suite, built by the team behind TurboLEPCC and TurboSPZ.
Explore the SuiteSplats. Point clouds. One codec, at GPU speed.
BVC compresses the two formats 3D actually ships in, lidar point clouds and Gaussian splats, into lossless files smaller than the incumbents' lossy ones, then adds the axes they can't reach: GPU decode, browser decode, exact data.
Performance
Three numbers
that matter.
Every figure on this page is reproduced by committed benchmark harnesses on public test data, on two reference machines, a 24-core Intel workstation and an Apple M3 Max, producing byte-identical files on both.
billion points per second at scale
Apple M3 Max, 16 cores, the read dial of the same wire
our lossless file vs their lossy one
they degrade the data and still lose on size
faster reads on a single core, in a 34% smaller file
a 10.65M-point survey: ~4 s as LAZ, 16 ms as BVC flagship at scale
Head-to-Head
Same data. Same machine.
Smaller files.
Identical input, identical tiling, measured against the strongest implementation of each competing format, including our own Turbo line, which already outperforms the format owners' shipping libraries. Shorter bar wins.
Gaussian splats · bytes per splat (786K-splat capture, full color detail)
SOG and SPZ are both lossy, and only lossy. BVC is the only splat codec here with a bit-exact mode, and even that exact file undercuts SPZ's lossy one, so it beats SPZ without dropping a bit. The compact tier goes smaller still, at a declared fidelity. "Single-digit bytes per splat" headlines elsewhere require retraining the splat model, a different product category. Among encoders that compress what you already have, BVC leads at every fidelity point.
Point clouds · bytes per point (the exact files in the live race below, 1.06M-pt Autzen tile)
Head-to-Head Performance
Encode and decode.
Versus the field, on every chip.
Same data, same machine, same number of threads. Point clouds on a 10.65-million-point survey, splats on a 786K-splat capture. Bars are single-core where the format allows nothing more; chips show what each codec does when given the whole machine.
On the GPU · end-to-end decode, million points per second
whole-file decode including all transfers · verified bit-exact on both stacks
NVIDIA RTX (Vulkan)
Apple M3 Max (Metal)
Where are the competitor bars? There are none, no GPU decoder ships for LAZ, LEPCC, SPZ, Draco, or the KHR_meshopt bitstream. Those formats were designed for serial CPU
decode (chained arithmetic coding, serial compressed streams), and a decade of GPU
hardware hasn't produced one: Draco's own tracker closed “Run Draco on GPU?”
without a path. GPU dequantization of CPU-decoded output is not bitstream decode,
and meshoptimizer decompresses on the CPU by design (its experimental GPU meshlet
decoder targets a different format, not the KHR bitstream). BVC is the only format
of the six designed for GPU
decode, and the only one with a shipping, bit-exact GPU decoder on both major
APIs. The empty column is the result.
In a renderer, buffers persist and decode runs at kernel rate, billions of values per second. Compressed tiles also move 2.5× less data over the bus than raw points.
Now in the browser · decode on the page's own GPU (WebGPU)
Resident decode, million points/s · output stays in GPU storage buffers (zero readback) · SHA-256 digest-gated byte-identical, all 214 Autzen tiles
The wire decodes on the browser's GPU in both Chrome (Dawn) and Safari (WebKit), two independent WebGPU implementations agreeing bit-for-bit with the reference. Apple's unified memory runs it ~4× the NVIDIA readback-walled path. It's the same bytes proven identical across seven environments: x86, ARM, WASM-CPU, native GPU, and browser WebGPU on both vendors. No LAZ / LEPCC / SPZ / Draco / meshopt path decodes on the browser GPU at any setting.
And Gaussian splats, too, on the browser's GPU
Resident splat decode, million splats/s · hornedlizard 786K-splat capture (deg-3 SH) · SH-compressed GPU wire (22.6 B/splat) · zero readback · per-tile SHA-256 digest-gated + packed arena byte-identical to the CPU packer
The splat's entropy stage runs on the page's own GPU: channels and SH leaf indices land in GPU storage buffers a renderer reads directly (the codebook is sampled as a resident texture at shade time). Digest-gated byte-identical on both Apple Metal and NVIDIA. On Apple's unified memory the resident path beats the same-run WASM-CPU decode by 2.9×, more than the RTX's 1.1×, since there's no readback wall. The bit-exact tier decodes resident at 40.2 (M3) / 10.3 (RTX) Mspl/s. No SPZ / SOG / L-GSC path decodes a splat on the browser GPU at any setting.
Encode, too · faster than the full-machine CPU
read-dial GPU encode vs the full multi-core CPU encoder · byte-identical · 1.06M-point tile
Dashed line = full-CPU parity (1.0×). Both backends beat their own full multi-core CPU encoder, byte-identical, and the lead widens with tile size (M3 Max reaches 1.35× at 4M points). BVC is the only point-cloud codec that encodes on the GPU; every other format's encoder is CPU-serial.
Prove It
Race it yourself. Right here.
BVC against the field, live in your browser. A 786k-splat Gaussian capture, BVC vs Niantic SPZ, and a ~1.06M-point LiDAR scan decoded and rendered georeferenced: BVC crown (palette-256), the LEPCC fidelity class, vs Esri's LEPCC head-to-head. Same data, different containers; watch the size and the clock. Swap in the flagship or read-dial BVC lanes, or Google's Draco and the Khronos meshopt codec, from the dropdown.
The Moat
The volumetric format
built to decode on the GPU.
LAZ, LEPCC, SPZ, Draco, and meshopt were designed for serial CPU decode, a property of the file formats themselves. No implementation can fix them; for LAZ, LEPCC, and SPZ we built the fastest decoders in existence and hit each format's ceiling personally. BVC is what you design after that: a wire format whose decode splits across CPU cores, browser threads, and GPU workgroups natively, the only one of the six with a shipping, bit-exact GPU decoder.
Start-to-finish GPU decode
A real BVC file decodes end-to-end on the GPU, including the entropy stage every competing format must run on a CPU. Verified bit-exact on both major GPU ecosystems: NVIDIA (Vulkan) and Apple (Metal). In a renderer, decode runs at kernel rate, billions of values per second.
2.5× less bus traffic
Compressed tiles move 2.5× less data across the bus and through GPU memory than raw points, the multiplier that decides how many assets stream at once. The incumbents cannot run this experiment at all.
A 258 KB browser decoder
The same decoder ships for the web: 258 kilobytes of WebAssembly, SIMD-accelerated, both profiles. The same file serves archive, server, browser, and GPU, no transcode step anywhere in the pipeline.
One wire. Every operating point.
Maximum compression, fastest reads, fastest writes, or fully GPU-native files, every trade-off is an encoder-side dial recorded in the file. One format, one decoder, the whole frontier. The GPU-native dial costs just 7.7% over maximum compression.
Why the other five can't follow
Each incumbent decodes its bitstream with a serial primitive — a coder whose next symbol depends on the state left by the last one. That maps to a CPU core, not thousands of GPU lanes. They can dequantize or rasterize already-decoded points on the GPU; the decode itself stays on the CPU.
KHR_meshopt_compression attribute stream, decoded on the CPU by design. (meshoptimizer's GPU meshlet decoder targets a different bitstream.)GPU dequantization or rasterization of CPU-decoded points is not bitstream decode. No shipping or experimental GPU decoder of these five bitstreams exists as of July 2026 — BVC is the only one of the six that runs the entropy stage on the GPU.
Data Integrity
Your data, exactly.
Or bounded, and declared.
The incumbents lose data silently, and offer no alternative. Esri's LEPCC posterizes color; on the industry-standard test cloud it altered 98.6% of all points. SPZ and SOG are lossy-only: SPZ quantizes on ingest and degrades every re-encode, like re-saving a JPEG; SOG's k-means SH compression has no lossless setting. BVC offers true lossless for both point clouds and splats, and where loss is chosen, it is a declared dial with a guaranteed worst-case error written into the workflow, never a surprise.
Bit-exact, everywhere
Every supported platform: Intel, AMD, Apple Silicon, WebAssembly, and two GPU stacks, produces and verifies byte-identical files, enforced by cryptographic hash gates in continuous testing.
Better custody than the source
Measured and committed: SPZ cannot round-trip its own files, every pass moves every color coefficient. BVC ingests once and never degrades again. It preserves SPZ content better than SPZ preserves itself.
Numbers that survive diligence
Every claim traces to a committed harness on public data. When a measurement flaw was found that flattered us, every published number was corrected the same day, and still won every column.
Coming Soon
Not a paper. A product.
Command-line tools
LAS/LAZ in, BVC out, one command, quantization metadata carried end to end.
SPZ converter
Round-trips real Gaussian-splat files with positions, opacity, scale, and color exact, 33% smaller on disk.
Browser package
The 258 KB WebAssembly decoder, with a MapLibre rendering SDK in active development.
GPU decode library
Both profiles on Vulkan and Metal, parity-locked against the CPU decoder.
Bounded-accuracy dials
Survey-grade tolerance controls: centimeter-bounded geometry, declared color precision.
Language bindings
Python, Node, JVM, .NET, and C, one core, every runtime.
Access
Free decoder. Paid encoder.
Ahead of general availability, BVC is onboarding a limited cohort of design partners: teams whose workloads match the codec's strengths: petabyte-scale lidar archives, streaming 3D platforms, Gaussian-splat pipelines. Participation is by application and qualification, and includes direct engineering access and a voice in the roadmap.
Decoder
Free
Anyone who needs to read BVC-encoded data can pull the decoder from the Bitruvius Developer Hub: desktop, browser, and GPU. Compiled binaries for every supported platform; no source. The adoption flywheel is intentional.
Encoder + Decoder
Commercial license
Production encoding requires a paid license. Tiers, seats, transactions, and OEM redistribution are listed on the pricing page. All artifacts are compiled binaries.
Compiled-only distribution is intentional: it keeps the patent-pending novelty out of source and protects implementation IP across the supply chain.
The volumetric format
the GPU was waiting for.
The incumbents' speed limits are wire-format facts; fixing them means breaking every existing file. Any response starts from zero, years behind, against a moving target. Early access is limited and by qualification.
Esri, ArcGIS, I3S, and LERC are trademarks of Environmental Systems Research Institute, Inc.; Niantic and SPZ are trademarks of Niantic, Inc. / Niantic Spatial, Inc. These names are used solely to identify the products and formats being compared; no affiliation, sponsorship, or endorsement is implied. The live demos run Esri's unmodified LEPCC reference decoder (Apache 2.0) and Niantic's unmodified libspz reference decoder (MIT) under their respective licenses, alongside laz-perf (Apache 2.0). Benchmark data: the Autzen Stadium LiDAR scan, the openly distributed benchmark dataset popularized by the PDAL project, and sample capture scenes © Niantic from the open-source libspz repository (MIT). BVC is an independent Bitruvius format and implementation. Performance comparisons reflect our own measurements under the stated methodology; results vary by workload and hardware. Full third-party notices: Attributions.