Back to browse
GitHub Repository

A WebGPU-native out-of-core rendering system for large virtualized volumetric data.

53 starsTypeScript

Kiln – WebGPU-native out-of-core volume rendering for multi-GB datasets

by m_panknin·Mar 3, 2026·2 points·0 comments

AI Analysis

●●●BangerWizardryNiche Gem

Virtual texture indirection for volume data in the browser—genuinely clever approach to streaming multi-GB datasets.

Strengths
  • Fixed VRAM budget via brick-level LRU eviction and screen-space LOD selection is the real innovation—scales dataset size independently from memory.
  • OME-Zarr support + HTTP Range requests means data lives on CDN or S3; no server-side preprocessing required.
  • Compute shader raymarching with early termination + empty brick skipping shows optimization discipline; 2GB+ datasets render interactively.
Weaknesses
  • WebGPU still has spotty browser support (Safari is incomplete); limits immediate adoption to Chrome/Firefox users.
  • Niche audience—medical/scientific vis researchers; won't reach mainstream due to domain specificity and technical entry cost.
Target Audience

Medical imaging researchers, scientific visualization engineers, high-performance graphics developers

Similar To

Cesium.js (for 3D geospatial) · VTK.js · BrainVISA

Post Description

Hi HN,

I’ve been interested in volume rendering for many years, and once WebGPU became widely available, I wanted to explore how multi-GB volumetric datasets can be streamed and rendered interactively in the browser — without downloading the entire volume up front.

Kiln is a virtualized volume renderer for WebGPU with out-of-core streaming and a fixed VRAM budget.

Many WebGPU volume rendering examples assume the data is compact enough to be downloaded in full before rendering begins and kept fully resident during interaction.

Kiln instead streams multi-GB datasets over HTTP and renders them using a fixed-size GPU page cache and virtual texture indirection. The renderer is fully compute-shader-based and targets WebGPU directly (no WebGL fallback).

Kiln expects the volume to be available as multi-resolution bricks (either preprocessed into its custom format or provided via a chunked format such as OME-Zarr). At runtime, only bricks relevant to the current view are fetched via HTTP range requests, decompressed asynchronously in worker threads, and uploaded to VRAM, while old entries are evicted via LRU.

The logical brick layout is decoupled from physical GPU memory. A compact indirection texture maps logical brick coordinates to atlas slots, and each ray sample resolves this indirection before performing the density lookup inside the brick.

This architecture allows large datasets to become interactive quickly, with a short time-to-first-render and a constant, modest VRAM footprint.

The renderer is format-agnostic. Currently there are two data providers: a simple custom sharded binary format and an experimental OME-Zarr integration, both using the same rendering core.

Happy to discuss architectural decisions or performance trade-offs.

Similar Projects

Developer Tools●●●Banger

Elah – A browser-native, frame-accurate video editor

Renderer-agnostic core swaps WebGL/Canvas/WebGPU without touching state — rare architectural discipline.

WizardryBig BrainSlick
paulSpaurgen
547d ago