Thursday, December 10, 2009

SVO path tracer WIP

Inspired by the recent flood of real-time path tracers (both commercial and non-commercial:

V-Ray RT,
mental images iray,
Nvidia Optix,
Caustic's Brazil RT,
David Bucciarelli's SmallptGPU OpenCL path tracer (,
albertoven's Raydiant (,
mxadd CUDA path tracer (,
javor's CUDA path tracer (

and the promise of infinite geometry by using voxel rendering, I decided to take the best of both worlds and write an SVO path tracer as a hobby project ;-). My goal is to make a very simple demo showing a Cornell box with a SVO voxelized Stanford Dragon in it, interactively path traced (brute force calculated unbiased indirect lighting) with CUDA (or OptiX, if it's easy enough to implement SVO raycasting). The whole scene must fit in video memory, no streaming (yet), because the path tracing algorithm would badly choke.

I also want to do a comparison between a polygon version and an SVO version of the aforementioned scene, hoping to demonstrate that path tracing voxels is much faster than path tracing polygons, due to the much simpler ray-voxel intersection calculation and automagic multiresolution benefits (see Cyril Crassin's "Beyond triangles: gigavoxels effects in videogames").

I'm still in the research phase, reading articles on (volume) path tracing and SVO (Cyril Crassin's Gigavoxels paper is extremely informative and I think you could just extend the raycasting to a path tracing approach). More to come soon.


Orval said...

Seems interesting. I wonder if you're right about the inherent multiresolution benefits of SVO with regard to path tracing, and if it's realyy that much faster than polygon path tracing

Patrick said...

You might want to look into the "Unlimited Detail" engine too then ( They seem to have found the holy grail : Unlimited Geometry, real-time even in software...

Ray Tracey said...

Thanks for the link. I actually knew about Unlimited Detail. It seems very interesting and difficult to believe that they can achieve that in software. They're not really using raytracing or voxels though, but some kind of point cloud rendering.