[Bf-cycles] Efficient sampling of many lights

Nathan Vegdahl cessen at cessen.com
Tue Jun 24 01:34:16 CEST 2014

I had mentioned this to Brecht a while back, but since he won't be
working on Cycles anymore I thought I'd drop a general note here.

Currently Cycles either uniformly randomly chooses a single light to
sample for each ray hit, or it samples all lights for each ray hit.
The former significantly increases noise as you add more lights to a
scene, and the latter significantly slows down rendering as you
approach large numbers of lights.  As far as I know, this is a problem
common to all path tracers.

In the process of writing my own toy renderer, I came up with a method
that significantly improves on this problem and can efficiently sample
among many light sources.  I outline the technique in this post on
ompf2, which includes some example before/after renders:

The technique is not thoroughly tested, as my renderer only supports
limited light and material types.  And it surely needs more design and
development work.  But it seems to work well, and especially for
scenes with hundreds of lights or more it provides an enormous

I don't currently have any plans for developing on Cycles, but I'm
noting the technique here just in case anyone is interested in
attempting to implement it in Cycles.


More information about the Bf-cycles mailing list