Both scenes were rendered with 16/32 adaptive sampling, shooting 1M caustic and 2M indirect photons. The scenes using final gathering were rendered with approximately 1M radiance photons and used 40 final gather samples. The photon map lookups were done for a search radius of 0.1 to query 50 photons. For all renders unless otherwise mentioned the photon map is only used for indirect and caustic lighting effects, direct lighting is sampled explicitly as usual.
The scenes below compare the results of shooting a huge number of photons vs. those achieved with final gathering for significantly fewer (above). Both scenes below shot 15M caustic and 40M indirect photons. The photon map lookups were done for a search radius of 1 to query 300 photons.
All of the caustic playground scenes were rendered with 32/64 adaptive sampling, 40 final gather samples and 4M caustic, 2M indirect and approximately 1M radiance photons. The dragon, bunny and Buddha are from the Stanford 3D Scanning Repository, the monkey head is a higher poly version of Blender's Suzanne created by taking the original Suzanne model and running it through a few rounds of subdivision and smoothing in Blender. The teapot is the high res version of the Utah teapot. The photon map lookups were done for a search radius of 0.65 to query 300 photons.
This bug was the result of using a sequence to compute the ray origins and directions for photons leaving the light producing an interesting pattern in the lighting. The image below was rendered with just the direct photons to easily showcase the issue.
Render times were measured using
std::chrono::high_resolution_clock and only include time to render,
ie. time to load the scene and write the images to disk is ignored.