Path Tracing

Posted: December 2nd, 2009 | Tags: | 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:

And for global illumination and path-tracing in general:

Also, this is what happens when you push Perlin too far:


3 Comments on “Path Tracing”

  1. 1 gregory said at 3:09 am on December 7th, 2009:

    really nice, will you provide a demo?

  2. 2 mmack said at 8:35 am on December 7th, 2009:

    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 :).

  3. 3 Tracing « Miles Macklin's blog said at 5:52 pm on October 3rd, 2010:

    [...] I was recently reminded by Gregory Pakosv to write a follow up on my path tracing efforts since my last post on the [...]

Leave a Reply