dorkhub

Luz

a Vulkan real-time rendering engine focused on PBR and Ray Tracing (Windows and Linux).

hadryansalles
C++14415 forksMITupdated 9 months ago
git clone https://github.com/hadryansalles/Luz.githadryansalles/Luz

Luz Engine

License: MIT Windows Ubuntu

A Vulkan engine that I'm developing to study and implement modern rendering techniques used by AAA games.

Features

  • Complete Vulkan Wrapper (including BLAS and TLAS creation)
  • 3 Approches for Volumetric Light: Froxels, Polygonon Mesh and Screen Space
  • Temporal Anti-Aliasing
  • Shadow Maps
  • Atmospheric Scattering
  • Scene Serialization (JSON)
  • Deferred Rendering
  • Real-time ray traced shadows and ambient occlusion
  • PBR Shading with metallic, roughness, normal, ambient occlusion and emission
  • Vulkan bindless resources
  • Viewport camera with perspective and orthographic projections and fly and orbit controls
  • ImGui docking UI

Gallery

  • Froxel Based Volumetric Light froxel

  • Polygonal Mesh Volumetric Light polygonal

  • Screen Space Volumetric Light ssvl

  • Deferred Rendering (Light, Albedo, Normal, Material, Emissive and Depth) deferred

  • Ray traced shadows and ambient occlusion raytraced

  • PBR Shading and glTF models pbr

  • Textures drag and drop dragndrop

Requirements

For Linux

This projects uses GLFW library, to compile it under Linux with X11 (like the default Ubuntu 20.04) you will need:

sudo apt-get install xorg-dev

If you are using another window manager (like Wayland) you can check the dependencies here.

Build and Run

git clone --recursive https://github.com/hadryansalles/Luz
cd Luz
mkdir build
cmake . -Bbuild
cmake --build build --parallel 4
./bin/Luz
  • Visual Studio: open build/Luz.sln and compile/run the project Luz.

References and Credits

  • GLFW used to open the application window
  • glm used as the math library
  • ImGui used to make the user interface
  • ImGuizmo used to create 3D gizmos
  • spdlog used as the logging library
  • stb_image used to load image files
  • tiny_obj_loader used to load wavefront .obj files
  • optick used to profile the engine
  • pbr-sky used as reference for atmospheric sky model

more like this

Scythe

SCYTHE is a lightweight, C#-based game engine focused on modifiability and rapid iteration using Raylib.

C#50

search

search projects, people, and tags