LuxCore Caustics - testing [in progress]

All renders are stopped with the LuxCore Halt Conditions set to samples: 100.


  1. No caches at all, OpenCL path tracing with light tracing (sobol):

  2. No caches at all, OpenCL / light tracking (metropolis)

    [failed to build], metropolis can’t handle this scene with 128 path depth, therefore I’ll skip all other tests with metropolis on this scene for GPU

  3. openCL / light tracking + envi light cache:

  4. openCL / LT + direct light cache:

  5. OpenCL / LT + direct and envi cache:

  6. OpenCL / LT + PhontonGI indirect: (1 million, 8 depth)

  7. OpenCL / LT + PhotonGI caustic: (1 million, 8 depth, 0.1 max million caustic photons (default 1 -> CTD)

    Much more light, much more noise. Reflection of spheres in the mirror on left shows caustics that are not visible on the ‘real’ side.

  8. OpenCL/LT + PhotonGI indirect and caustic

    Same as above, but the reflection caustic artifact is shifted down.

  9. CPU only in bidirect sampler, 128 depth for both, metropolis sampler (to focus on caustics)

    This image explains the strange caustics on PhotonGI. Those circles appear in spots where small but intensive caustics appeared.
    That’s the first image where correct shadow has been cast by the right sphere through the glass panel.

  10. Same as 8, but reduced caustic Lookup Radius from 0.075 to 0.0075 and angle from 10 to 1.

    Looks that it’s facing the proper direction this time. To my surprise, even though I’ve achieved more caustics (a bit fake ones), there is less noise than with the big ones, and render time was much smaller.

  11. Same as 10, but with even smaller Lookup Radius - 0.0075.

    The result is surpsisingly good. Even the shadow cast by sphere on right is correct.
    Render time dropped to the value of cache-less openCL renders that didn’t provide caustics for reflections and refracted refractions.

  12. Same as 10, but with reduced Minimum Radius to 1mm, and Lookup Radius to 3mm.

    It seems that having Radius reduction disabled (setting minimum higher than lookup radius) is the key for proper caustic rendering.

  13. Now, attempt with Lookup Radius set to 0.1 milimeter and minimal radius to 1mm.

    More noise. Minimal radius makes the caustics more blurry, therefore less problematic - less fireflies.

  14. Lookup radius = minimal = 1 mm.

  15. Increased max size count to 0.5m

    Noise has been reduced, details of right sphere shadow through plane is clearer.

  16. Max size = 5m, photon count = 5m. This time it didn’t crash - seems that big lookup ratius was causing crashes.

    Rendering time doubled, much finer details on caustics.

  17. Max size =10m, photon count = 2m.

    I find the previous effect better. Let’s pump photon count much higher and leave max size to 10m.

  18. Photon count = 20m, max size = 10m.

    Noise levels of the reflected side are now at similar levels (if not the same) as the ‘real’ side. However, render times are pumped much higher.

  19. For the 19th render I’m reducing photon count to 10m. Denoiser on, 661 samples:

    Noise on reflected site is visible and fireflies occured.

  20. Setting it overnight. I’ve turned on dispersion, increased max size to 30m and step samples to 10. Also set indirect cache angle to 1d to match caustics one, and Brute Force Radius Scale to 5.
    Judging by samples per second the normal bidir would do as fast as this with not faked caustics. xP
    see ya tomorrow!

1 Like

Think that’s enough samples. Let’s denoise and save final image:


Thank you for putting in the effort on this! It always seems a moving target to get nice caustics with Lux, you’ve given us a great head start.

I’ll re-do it as of we have adaptive sampling and stuff, but I don’t have time due to ferret health problems.
Also, need to finish the olive scene port. :slight_smile: