three-rc

Implementation of Radiance Cascades GI in 3D using three.js and three-mesh-bvh.

bvh · cascades · gi · global · illumination
入门
GitHub在线演示
Stars:49
License:未知
更新:2025/12/27

README

three-rc

An implementation of "Radiance Cascades: A Novel Approach to Calculating Global Illumination"1 in 3D using screen-space probes and a BVH2. This algorithm captures any number of offscreen occluders or emitters and results in noise-free diffuse and specular global illumination without any temporal accumulation. Probe storage is fixed-cost and stored in a screen-sized texture. A novel upscaler by Alexander Sannikov3 is used for depth-aware interpolation, which cannot be licensed. I have omitted a license here for this reason.

Sponza Preview

Tracing can be made fixed-cost or scene-independent with a different tracing function, such as a screen-space raymarcher. Below, it uses the raymarcher from Tiny Glade4 for fast and accurate tracing but no longer models offscreen occluders or emitters. Prefiltering and min/max probes can be added without much performance penalty to stabilize probes during camera motion while under high depth complexity.

ScreenSpace Tracing

Future work would include a more robust BVH and material lookup to scale to more complex scenes (poor Bistro below does not look up emissive triangles in the correct order). I did not want to spend time on a bespoke BVH implementation in WebGL due to its tight performance constraints and cross-platform bugs. Additionally, a short gather pass in screen-space can be performed for pixel-perfect contact effects without much added performance penalty and would allow aggressive upscaling (e.g., 16x) without much quality loss.

Bistro Preview

All rights reserved.