Thursday, June 13, 2013


Some things are not worth waiting for. Particularly if you need to wait a really, really long time. So in the spirit of being practical I've added two careful (and optional) cheats into Aurora to make the kitchen scene perform better. The first one is a "caustic blur", essentially taking all C-[...]-D-S-[...]-L and similarly C-[...]-D-T-[...]-L paths and increasing the roughness at the specular vertices after a diffuse. The second one is a "firefly killer" to catch those few absurdly bright paths that pop up every once in a while. At the moment it's very naive in that it's looking at absolute brightness, but the plan is to update it to look for values N standard deviations outside of the mean pixel value at some point. This takes some more fiddling/trial and error though, so I'll stick with the simple version for now.

Here's what the caustic blur looks like for a mirror-like Cook/Torrance specular next to a diffuse plane, after 1 minute of rendering:
Blur 0 (no cheating):

Blur 0.1:

Blur 0.2:

While doing some more lighting work to the kitchen scene I noticed the performance goes down very fast as I add more light sources, so I improved the logic for picking which light to sample at each path vertex from being random to only considering lights within the domain of the bxdf for the given point and normal. I'm sure there are way better metrics out there but for now it improves the variance a lot, giving me slightly slower render times per progression but a lot less noise per progression with fewer paths wasted.

Here's the kitchen scene before/after the caustic, firefly and light sampling updates:
Rendered at 1920x800.
This one was stopped after 8+ hours with somewhere between 10k and 12k samples per pixel:

While this took 3h21min at 4k samples per pixel:

And here's what it looks like after the first 16 samples, at 51 seconds:


No comments:

Post a Comment