/LuxGI

Hybrid GI solution, based on DDGI ( include Ray-Tracing and SDF-Tracing )

Primary LanguageC++

💡 Lux-GI

Hybrid GI solution, based on DDGI ( include Ray-Tracing and SDF-Tracing )

The project is a Hybrid GI solution, partly inspired by Lumen and DDGI. The main core idea is to provide a complete GI solution (including Indirect-Light, Infinite-Bounce, Emissive-Lighting, Glossy-Reflection, Shadow, AO) that can run on both Raytracing-supported and non-raytracing hardware. Due to the shortage of time, there are still some performance issues in this project, but as a throwaway, I believe it can provide some new ideas to most of the people who are interested in GI.

Overview

Left is SDF-On, Right is Raytracing-On

Overview

Showcase

Document

English-Version

中文版

Main Features

  • Hybrid rendering and Global Illumination
    • using Raytracing and SDF-Tracing to make DDGI in realtime
    • Surface Cache for SDF Material representation
    • Deferred-Shading
    • SDF/Ray tracing reflection
    • SDF/Ray tracing soft shadow
    • SVGF denoiser
    • Standard PBR with GGX and roughness/metalness
  • ECS IoC Container
    • Data Driven ECS architecture
    • Auto Injection ECS System(based on entt)
  • RHI Interface
    • Vulkan 1.3
    • SPIR-V reflection

Compile

  • Windows
      1. Click gen_build_win.bat
      1. Choose Game as main project
      1. Building with RelWithDebInfo
  • Linux
    • Not support now
  • Mac
    • Not support now

Controls in the Game app

  • WSAD, QE - movement
  • Mouse + Right Button - rotate the camera
  • Shift - move faster

Acknowledgments

This project is made with lots of awesome open-source code, they are

  • RTXGI, the fully raytracing DDGI implementation.

  • cereal, A C++11 library for serialization.

  • entt, high performance ECS library

  • glad, an vulkan/opengl function loader

  • glfw, open source, multi-platform library for OpenGL, OpenGL ES and Vulkan application development

  • imgui, is a bloat-free graphical user interface library for C++

  • libacc, About Acceleration structure library (BVH-, KD-Tree) with basic parallel construction

  • hybrid-rendering, provide raytracing and denoise.

  • spriv-cross, SPIRV-Cross is a tool designed for parsing and converting SPIR-V to other shader languages.

  • tracer, c++ crash tracer.

  • glm, OpenGL Mathematics (GLM) is a header only C++ mathematics library for graphics software.

  • spdlog, Very fast, header-only/compiled, C++ logging library

  • stb, single-file public domain (or MIT licensed) libraries for C/C++

  • flax-engine, open source game engine. provide the idea how to generate and trace sdf.

Also Paper Reference

Star History

Star History Chart