All Projects → jbikker → Lighthouse2

jbikker / Lighthouse2

Licence: apache-2.0
Lighthouse 2 framework for real-time ray tracing

Projects that are alternatives of or similar to Lighthouse2

Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (-66.61%)
Mutual labels:  game-engine, gamedev, opengl, rendering, glfw
Ncine
A cross-platform 2D game engine
Stars: ✭ 372 (-31.37%)
Mutual labels:  game-engine, gamedev, opengl, rendering, real-time
tiny-cuda-nn
Lightning fast & tiny C++/CUDA neural network framework
Stars: ✭ 908 (+67.53%)
Mutual labels:  real-time, gpu, rendering, cuda
Metalpetal
A GPU accelerated image and video processing framework built on Metal.
Stars: ✭ 907 (+67.34%)
Mutual labels:  opengl, rendering, gpu, real-time
Open3d
Open3D: A Modern Library for 3D Data Processing
Stars: ✭ 5,860 (+981.18%)
Mutual labels:  opengl, rendering, gpu, cuda
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+1791.51%)
Mutual labels:  gamedev, opengl, rendering, glfw
Simplerenderengine
Small C++14 render engine
Stars: ✭ 253 (-53.32%)
Mutual labels:  game-engine, opengl, rendering, rendering-engine
Overload
3D Game engine with editor
Stars: ✭ 335 (-38.19%)
Mutual labels:  game-engine, gamedev, opengl, rendering-engine
Magnum
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+587.82%)
Mutual labels:  game-engine, gamedev, opengl, glfw
Blue Flame Engine
A 3D/2D game engine that supports both DirectX11 and OpenGL 4.5
Stars: ✭ 129 (-76.2%)
Mutual labels:  game-engine, gamedev, opengl, rendering-engine
Rabbittoolbox
🤸🏾‍♀️👗开源的动画渲染软件,提倡以简单、易用,高质量的物理演算以及渲染质量和性能,为喜爱二次元动画的用户降低视频制作门槛
Stars: ✭ 309 (-42.99%)
Mutual labels:  game-engine, gamedev, opengl, glfw
LuisaRender
High-Performance Multiple-Backend Renderer Based on LuisaCompute
Stars: ✭ 47 (-91.33%)
Mutual labels:  gpu, rendering, cuda
ElkEngine
Simple graphics engine used as submodule in many of my projects
Stars: ✭ 54 (-90.04%)
Mutual labels:  rendering, glfw, rendering-engine
briefmatch
BriefMatch real-time GPU optical flow
Stars: ✭ 36 (-93.36%)
Mutual labels:  real-time, gpu, cuda
Bansheeengine
Modern C++14 game engine with Vulkan support, fully featured editor and C# scripting
Stars: ✭ 2,906 (+436.16%)
Mutual labels:  game-engine, gamedev, opengl
Qfusion
Source code for cross-platform OpenGL gaming engine
Stars: ✭ 255 (-52.95%)
Mutual labels:  game-engine, gamedev, opengl
Ava
A tiny unlicensed 3D game engine in C; with C++ and Lua interfaces. Written in 32 random ̷d̷a̷y̷s̷ m̷o̷n̷t̷h̷s̷ years.
Stars: ✭ 287 (-47.05%)
Mutual labels:  game-engine, gamedev, opengl
Panda3d
Powerful, mature open-source cross-platform game engine for Python and C++, developed by Disney and CMU
Stars: ✭ 3,035 (+459.96%)
Mutual labels:  game-engine, gamedev, opengl
Mxengine
C++ open source 3D game engine
Stars: ✭ 284 (-47.6%)
Mutual labels:  game-engine, gamedev, opengl
Renderhelp
⚡️ 可编程渲染管线实现,帮助初学者学习渲染
Stars: ✭ 494 (-8.86%)
Mutual labels:  opengl, rendering, rendering-engine

lighthouse2

Lighthouse 2 framework for real-time ray tracing

This is the public repo for Lighthouse 2, a rendering framework for real-time ray tracing / path tracing experiments. Lighthouse 2 uses a state-of-the-art wavefront / streaming ray tracing implementation to reach high ray througput on RTX hardware (using Optix 7.2) and pre-RTX hardware (using Optix 5 Prime) and soon on AMD hardware (using RadeonRays / OpenCL) and CPUs (using Embree). A software rasterizer is also included, mostly as an example of a minimal API implementation.

ScreenShot

Quick pointers / Important advice:

Lighthouse 2 uses a highly modular approach to ease the development of renderers.

The main layers are:

  1. The application layer, which implements application logic and handles user input;
  2. The RenderSystem, which handles scene I/O and host-side scene storage;
  3. The render cores, which implement low-level rendering functionality.

Render cores have a common interface and are supplied to the RenderSystem as dlls. The RenderSystem supplies the cores with scene data (meshes, instances, triangles, textures, materials, lights) and sparse updates to this data.

The Lighthouse 2 project has the following target audience:

Researchers

Lighthouse 2 is designed to be a high-performance starting point for novel algorithms involving real-time ray tracing. This may include new work on filtering, sampling, materials and lights. The provided ray tracers easily reach hundreds of millions of rays per second on NVidia and AMD GPUs. Combined with a generic GPGPU implementation, this enables a high level of freedom in the implementation of new code.

Educators

The Lighthouse 2 system implements all the boring things such as scene I/O, window management, user interfaces and access to ray tracing APIs such as Optix, RadeonRays and Embree; your students can get straight to the interesting bits. The architecture of Lighthouse 2 is carefully designed to be easily accessible. Very fast scene loading and carefully tuned project files ensure quick development cycles.

Industry

Lighthouse 2 is an R&D platform. It is however distributed with the Apache 2.0 license, which allows you to use the code in your own products. Experimental cores can be shared with the community in binary / closed form, and application development is separated from core development.

What it is not

The ray tracing infrastructure (with related scene management acceleration structure maintenance) should be close to optimal. The implemented estimators however (unidirectional path tracers without filtering and blue noise) are not, and neither is the shading model (Lambert + speculars). This may or may not change depending on the use cases encountered. This video shows what can be achieved with the platform: https://youtu.be/uEDTtu2ky3o .

Lighthouse 2 should compile out-of-the-box on Windows using Visual Studio 2019. For the CUDA/Optix based cores CUDA 11.1 is required:

https://developer.nvidia.com/cuda-downloads

Optix 5.x, 6.0 and 7.2 libraries are included in the Lighthouse 2 download and do not have to be downloaded separately.

For more information on Lighthouse 2 please visit: http://jacco.ompf2.com.

Credits

Lighthouse 2 was developed at the Utrecht University, The Netherlands.

Lighthouse 2 uses the following libraries:
Dear ImGui https://github.com/ocornut/imgui
FreeImage http://freeimage.sourceforge.net
Glad https://glad.dav1d.de
GLFW https://www.glfw.org
half 1.12 http://half.sourceforge.net
tinygltf https://github.com/syoyo/tinygltf
tinyobj https://github.com/syoyo/tinyobjloader
tinyxml2 https://github.com/leethomason/tinyxml2
zlib https://www.zlib.net

Contributions

Previous Work

Lighthouse 2 implements research by (very incomplete):

  • Marsaglia: random numbers
  • Van Antwerpen, Laine, Karras, Aila: streaming path tracing
  • Aila, Laine: persistent kernels
  • Schied et al.: Spatiotemporal Variance-Guided Filtering (SVGF)
  • Victor Voorhuis: improved SVGF for specular and glossy reprojection
  • Eric Heitz: Blue noise distributions
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].