Sunday, September 15, 2019

LightHouse 2, the new OptiX based real-time GPU path tracing framework, released as open source

Just before Siggraph, Jacco Bikker released Lighthouse 2, his new real-time path tracing framework as open source on Github:


If you haven't heard of Jacco Bikker before, he is the original author of the Brigade engine, which pioneered the use of real-time path tracing in games (way before Nvidia got interested) and was  released as open source in 2010 (see https://raytracey.blogspot.com/2010/04/real-time-pathtracing-demo-shows-future.html).

Brigade was a real trailblazer and showed off a glimpse of what photorealistic games could look like in a not so distant future. Brigade 2, its successor (and also developed by Jacco Bikker) was fully GPU based which pushed performance to another level.

As I used to work a lot with Brigade and designed many tech demos with the engine for this blog (see for example https://raytracey.blogspot.com/2013/03/real-time-path-traced-carmageddon.html and https://raytracey.blogspot.com/2013/10/brigade-3.html), I was quite thrilled to read that Jacco released a new path tracing engine which fully exploits OptiX and the new hardware accelerated RTX ray tracing cores on Nvidia's Turing GPUs. 

The Lighthouse engine has a couple of unique features:
  • Lighthouse uses Nvidia's OptiX framework, which provides state-of-the-art methods to build and traverse BVH acceleration structures, including a built-in "top level BVH" which allows for real-time animated scenes with thousands of individual meshes, practically for free. 
  • There are 3 manually optimised OptiX render cores: 
    • OptiX 5 (for Maxwell and Pascal GPUs)
    • OptiX Prime (for Maxwell and Pascal GPUs)
    • OptiX 7 (with full RTX support for Turing GPUs)
      • OptiX 7 is much more low level than previous OptiX versions, creating more control for the developer, less overhead and a substantial performance boost on Turing GPUs compared to OptiX 5/6 (about 35%)
      • A Turing GPU running Lighthouse 2 with OptiX 7 (with RTX support) is about 6x faster than a Pascal GPU running OptiX 5 for path tracing (you have to try it to believe it :-) )
  • Lighthouse incorporates the new "blue noise" sampling method (https://eheitzresearch.wordpress.com/762-2/), which creates cleaner/less noisy looking images at low sample rates
  • Lighthouse manages a full game scene graph with instances, camera, lights and materials, including the Disney BRDF (the so-called "principled" shader) and their parameters can be edited on-the-fly through a lightweight GUI
More in the Lighthouse 2 wiki: https://github.com/jbikker/lighthouse2/wiki

Some screenshots (rendered with Lighthouse's OptiX 7 core on a RTX 2060)

1024 real-time ray traced dragons
2025 lego cars, spinning in real-time
Lighthouse 2 material test scene
A real-time raytraced Shelby Cobra
Just add bunnies

An old video of Sponza rendered with Lighthouse, showing off the real-time denoiser:



Lighthouse is still a work in progress, but due to its relative simplicity it's easy to quickly test a new sampling algorithm or experiment with a new fast denoiser, ensuring the code and performance remains on par with the state-of-the-art in rendering research.

Given the fact that it handles real-time animation, offers state-of-the-art performance and is licensed under Apache 2.0, Lighthouse 2 may soon end up in professional 3D tools like Blender for fast, photorealistic previews of real-time animations. Next-gen game engine developers should also keep an eye on this.

Stay tuned for more™ !

Useful links




P.S. I may release some executable demos for people who can't compile Lighthouse on their machines.