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.

Saturday, June 22, 2019

LightTracer, the first WebGL path tracer for photorealistic rendering of complex scenes in the browser

A couple of days ago, Denis Bogolepov sent me a link to LightTracer, a browser based path tracer which he and Danila Ulyanov have developed. I'm quite impressed and excited about LightTracer, as it is the first WebGL based path tracer that can render relatively complex scenes (including textures), which is something I've been waiting to see happen for a while (I tried something similar a few years ago, WebGL still had too many limitations back then).


What makes LightTracer particularly interesting is that it has the potential to bring photoreal interactive 3D to the web, paving the way for online e-commerce stores offering their clients a fully photorealistic preview of an article (be it jewellery,  cars, wristwatches, running shoes or handbags).

Up until now, online shops have been trying several ways to offer their clients "photorealistic" previews with the ability to configure the product's materials and colours. These previews were either precomputed 360 degree videos, interactive 3D using WebGL rasterization and even using server-side rendering via cloud based ray tracing streamed to the browser (e.g. Clara.io and Lagoa Render) which requires expensive servers and is tricky to scale.

LightTracer's WebGL ray tracing offers a number of unique selling points:

- ease of use: it's entirely browser based, so nothing needs to be downloaded or installed
- intuitive: since ray tracing follow the physics of light, lights and materials behave just like in the real world, allowing non-rendering-experts to predictably light their scenes
- photorealisitic lighting and materials: as Monte Carlo path tracing solves the full rendering equations without taking shortcuts, this results in truly photoreal scenes
speed: LightTracer's ray tracing is accelerated by the GPU via WebGL, offering very fast previews. This should get even faster once WebGL will support hardware accelerated ray tracing via Nvidia's RTX technology (and whatever AMD has in the works)







LightTracer is still missing a few features, such as an easy-to-use subsurface scattering shader for realistic skin, hair and waxy materials, and there are plenty of optimisations possible (scene loading speed, UI improvements and presets, etc.) but I think this is the start of something big. 

Saturday, April 6, 2019

Unreal Engine now has real-time ray tracing and a path tracer

Epic recently released the stable version of Unreal Engine 4.22 which comes with real-time ray tracing and a fully fledged path tracer for ground truth images.

https://www.unrealengine.com/en-US/blog/real-time-ray-tracing-new-on-set-tools-unreal-engine-4-22

The path tracer is explained in more detail on this page: https://docs.unrealengine.com/en-us/Engine/Rendering/RayTracing/PathTracer

The following video is an incredible example of an architectural visualisation rendered with Unreal's real-time raytraced reflections and refractions:



It's fair to say that real-time photorealism on consumer graphics card has finally arrived. In the last few years, fast and performant path tracers have become available for free (e.g. Embree, OptiX, RadeonRays, Cycles) or virtually for free (e.g Arnold, Renderman). Thanks to advances in noise reduction algorithms, their rendering speed has been accelerated from multiple hours to a few seconds per frame. 
 
The rate at which game engines, with Unreal at the forefront, are taking over the offline-rendering world is staggering. Off-line rendering for architecture will most probably disappear in the near future and be replaced by game engines with real-time ray tracing features. 

Monday, February 18, 2019

Nvidia releases OptiX 6.0 with support for hardware accelerated ray tracing

Nvidia recently released a new version of Optix, which finally adds support for the much hyped RTX cores on the Turing GPUs (RTX 2080, Quadro RTX 8000 etc), which provide hardware acceleration for ray-BVH and ray-triangle intersections.

First results are quite promising. One user reports a speedup between 4x and 5x when using the RTX cores (compared to not using them). Another interesting revelation is that the speedup gets larger with higher scene complexity (geometry-wise, not shading-wise): 


As a consequence, the Turing cards can render up to 10x faster in some scenes than the previous generation of Geforce cards, i.e. Pascal (GTX 1080), which is in fact two generations old if you take the Volta architecture into account (Volta was already a huge step up from Pascal in terms of rendering speed, so for Nvidia's sake it's better to compare Turing with Pascal).

This post will be updated with more Optix benchmark numbers as they become available.