BVC is the volumetric pillar of the Bitruvius Suite, built by the team behind TurboLEPCC and TurboSPZ.
Explore the Suite3D files smaller than the competition's. With nothing lost.
BVC is one codec for the two kinds of 3D data the industry ships: lidar point clouds and Gaussian splats. Its lossless files are smaller than the incumbents' lossy ones, and it decodes on the GPU, in the browser and on every CPU.
Built by the team behind TurboLEPCC and TurboSPZ, the fastest decoders for the formats it replaces.
Every figure 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.
The 60-second version
3D data is huge, and today's codecs read it one value at a time.
Measured 3D
Billions of 3D points measured by lidar from aircraft, cars and drones: the raw material for maps, construction, mining, utilities and self-driving.
Photoreal 3D
Lifelike 3D scenes built from ordinary photos or video. The newest way to capture places and products, and now streaming on the web.
Five codecs, one bottleneck
LAZ for archives, Esri LEPCC for streaming, Niantic SPZ for splats, Draco and meshopt for 3D assets. The lossy ones change your data, and every one decodes one value after another on a CPU before it can be loaded to the GPU.
One codec for both
BVC stores point clouds and splats smaller, keeps every value exact if you want it, and splits decoding across CPU cores, browser threads and the GPU.
Watch it
Race it yourself, in this tab.
BVC against the field, live in your browser: 10.65 million lidar points decoded on your own GPU, a 786K-splat capture against Niantic SPZ, and a 1.06M-point lidar scan against Esri's LEPCC at matched color fidelity. Same data, different codecs; watch the file size and the clock. The dropdowns swap in other BVC settings, Google's Draco and the Khronos meshopt codec.
What it means for the bill
Smaller archives, instant reads, more on screen.
3D archives run to petabytes and every viewer waits on decode. Here is what the measured figures mean in practice.
The archive figure is illustrative arithmetic on the measured size difference. A pilot measures yours.
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.
BVC settings, all one codec: flagship makes the smallest lossless file, balanced trades a little size for speed, read is tuned for the fastest reads and fast for the fastest writes. Any BVC reader opens all of them.
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). Unlike all five, BVC is designed for GPU
decode, and it is 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 codec's encoder is CPU-serial.
Why the others can't follow
BVC decodes on the GPU.
The competition can't.
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. None of those five has a shipping GPU decoder; BVC has a bit-exact one.
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 file, any trade-off you choose
Maximum compression, fastest reads, fastest writes, or fully GPU-native files, every trade-off is an encoder-side dial recorded in the file. One codec, 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 runs the entropy stage on the GPU; none of the five can.
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.
How this was measured
- Machines: a 24-core Intel workstation (Windows, AVX2) and an Apple M3 Max (16 cores), each codec run on the same machine with the same data. Both machines write byte-identical BVC files.
- Point clouds: the public Autzen Stadium lidar scan, 10.65 million points, plus the 1.06M-point tile used in the live race and the size bars. Splats: a 786K-splat capture with full color detail.
- Each competitor is its own reference library (Esri LEPCC, LAZ, Google Draco, Khronos meshopt, Niantic libspz, Qualcomm L-GSC) on the same tiles. Single-thread and full-machine results are reported apart.
- Captures from July 2026, committed with the harnesses; each cell is the best of median-of-3 runs. The live races decode in your browser, so their numbers are yours, not ours.
Bring five of your point clouds or splat captures.
Ahead of general availability, BVC is onboarding a limited cohort of design partners: petabyte-scale lidar archives, streaming 3D platforms, Gaussian-splat pipelines. Participation is by application, with direct engineering access and a voice in the roadmap.
BVC is licensed through the Bitruvius Developer Hub and ships as compiled binaries only, which keeps the patent-pending techniques out of source.
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 codec and implementation. Performance comparisons reflect our own measurements under the stated methodology; results vary by workload and hardware. Full third-party notices: Attributions.