Skip to content

A 3D rendering and rasterization project written in C++17, using DirectX 12 as the graphics API.

License

Notifications You must be signed in to change notification settings

Contingencyy/DX12Renderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

DX12Renderer

Description

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.

Features

  • 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

WIP

  • TAA improvements
  • PBR improvements
  • Cascaded shadow maps
  • Allocators (linear, arena)

Planned features

  • 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)

Camera controls

  • Forward/backward: W/S
  • Left/right: A/D
  • Up/down: SPACEBAR/LCTRL
  • Faster movement: LSHIFT
  • Rotate (yaw/pitch): Hold right mouse button + drag

Additional controls

  • Toggle VSync: V
  • Toggle fullscreen: F11/ALT + ENTER
  • Toggle GUI: F3

Images

Sponza (PBR, shadow mapping)

Sponza_All_Lights Sponza_Helmet_PBR Sponza_Shadows

Normal mapping

Normal_Mapping Normal_Mapping_World_Space_Normals

Building

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.

Releases

No releases published

Packages

No packages published