A 3D rendering and rasterization project written in C++17, using DirectX 12 as the graphics API. The renderer currently works with using almost all resources from a bindless descriptor heap, with the exception of constant buffers/constant data, which is set using either root descriptors or root constants. The bindless descriptor implementation uses the pre shader model 6.6 way, using descriptor table ranges for CBVs, SRVs, and UAVs respectively.
The project builds and runs on both Windows 10 and Windows 11.
- GLTF model loading
- Bindless and bindful resources support
- Forward rendering
- Geometric view frustum culling with points, spheres, and AABBs
- Tone mapping (Uncharted2, Linear, Reinhard, Filmic, ACES filmic)
- Directional light/spotlights/pointlights
- Shadow mapping (3x3 PCF)
- Mipmap generation
- Normal mapping
- Physically-based rendering (PBR)
- Temporal anti-aliasing
- TAA improvements
- PBR improvements
- Cascaded shadow maps
- Allocators (linear, arena)
- Multithreaded rendering/command list recording
- G-Buffering/Deferred rendering
- Reflections & Ambient occlusion
- Particle system
- PostFX (e.g. Bloom, Vignette, Chromatic abberation)
- Additional VFX (e.g. God Rays, volumetric clouds)
- Forward/backward: W/S
- Left/right: A/D
- Up/down: SPACEBAR/LCTRL
- Faster movement: LSHIFT
- Rotate (yaw/pitch): Hold right mouse button + drag
- Toggle VSync: V
- Toggle fullscreen: F11/ALT + ENTER
- Toggle GUI: F3
The project currently provides the Visual Studio 2022 solution file. CMake is currently not supported. You will need to have installed the latest Windows 10 SDK in the Visual Studio workloads.