Path Tracing
Posted: December 2nd, 2009 | Tags: Graphics | 3 Comments »A few of us at work have been having a friendly path-tracing competition (greets to Tom & Dom). It's been a lot of fun and comparing images in the office each Monday morning is a great motivation to get features in and renders out. I thought I'd write a post about it to record my progress and gather links to some reference material.
Here's a list of features I've implemented so far and some pics below:
- Monte-Carlo path tracing with explicit area light sampling at each step
- Stratified image sampling
- Importance sampled Lambert and Blinn BRDFs
- Sphere, Plane, Disc, Metaball and Distance Field primitives (no triangles yet)
- Multi-threaded tile renderer
- Cross-compiles for PS3 on Linux (runs on SPUs)
- Quite general shade-trees with Perlin noise etc
Sphere-tracing the distance fields produced some cool effects (the blobby sphere above). I first heard about the technique from Inigo Quilez who used it to generate an amazing image in his slisesix demo, he has some good descriptions on his page but for the details I would check out these papers:
- Sphere tracing: a geometric method for the antialiased ray tracing of implicit surfaces
- A Lipschitz Method for Accelerated Volume Rendering
And for global illumination and path-tracing in general:
- High Quality Rendering using Ray Tracing and Photon Mapping (SIGGRAPH 2007)
- Physically Based Rendering
- Robust Monte Carlo Methods for Light Transport Simulation
- Notes from Matt Pharr on implementing your first path tracer
- Kevin Beason's renderer Pane
Also, this is what happens when you push Perlin too far:
{ 3 Comments » }




really nice, will you provide a demo?
Hey Gregory, yep I plan on releasing a demo. I'm just in the middle of adding OpenCL support but when that's in I think it could make for an interesting example of design for heterogeneous compute units (and hopefully it will render faster
.
[...] I was recently reminded by Gregory Pakosv to write a follow up on my path tracing efforts since my last post on the [...]