Skip to content
Deferred Rendering in WebGPU: Sponza with 400+ Compute-Driven Point Lights

Deferred Rendering in WebGPU: Sponza with 400+ Compute-Driven Point Lights

Georgi Nikolov's WebGPU renderer puts 400+ point lights in the classic Sponza atrium. Deferred shading, cascaded shadows, Hi-Z reflections, TAA. Clean architecture that handles WebGPU's explicit pipelines without drama.

Details

Published

What it is

The Sponza Atrium has been rendered roughly ten thousand times in graphics demos since 1999. You'd think there's nothing left to discover. But Georgi Nikolov's WebGPU take makes you look anyway.

This is a full deferred renderer: G-buffer with packed normals, cascaded shadow maps, over 400 point lights shuffled around by a compute shader, screen space reflections with switchable Hi-Z and linear tracing, physically based bloom, TAA. The works. What makes it interesting isn't the feature list though. It's how cleanly the architecture handles WebGPU's explicit pipeline model. Each mesh knows which render passes it belongs to and carries the right pipeline state objects for each. No ubershader heroics. No runtime pipeline switching chaos. Just careful separation that lets the whole thing breathe. There's also a performance governor that quietly disables effects if your frame rate dips below 60 for too long. It's the kind of defensive engineering that separates demos from things people can actually run.

Georgi wrote a detailed frame analysis walking through every render pass, which is worth reading alongside the source. The demo runs in any WebGPU-capable browser. Poke at the UI controls. Toggle the SSAO on and off. Switch reflection modes. If you've been waiting for an excuse to take WebGPU seriously, this is a good one.

How it’s made

Technology
WebGPUWGSL