An experimental C++20 & DX12 renderer made for learning and trying out various graphics / rendering techniques.
- Bindless Rendering (Using SM 6.6's Resource / Sampler descriptor Heap).
- Normal Mapping.
- Diffuse and Specular IBL.
- Physically based rendering (PBR).
- Blinn-Phong Shading.
- Deferred Shading.
- HDR and Tone Mapping.
- Instanced rendering.
- OmniDirectional Shadow Mapping.
- Editor (ImGui Integration) with Logging and Content Browser with drag-drop functionality for GLTF models.
- Compute Shader mip map generation.
- Multi-threaded asset loading.
- D3D12MA integration.
Link : Click here, or on the Image below!
- This project uses CMake as a build system, and all third party libs are setup using CMake's FetchContent().
- After cloning the project, build the project using CMake :
cmake -S . -B Build
cmake --build Build --config Release
Alternatively open the folder if your IDE supports doing so. The application will take care of relative file paths.
- Run the
setup.bat
file, which will install the DirectXAgility SDK. - Ensure you have installed the
DirectXShaderCompiler
(must support atleast SM 6.6). You can install it from here. Make sure you set the path in your system environment variables. - Shaders are automatically compiled after build process, however to compile manually, run the
CompileShaders.bat
(or alternatively theCompileShaders.py
script) from the Shaders directory. This is necessary for the first setup and run.
Wicked Engine By Turánszki János.
Vanguard Engine By Andrew Depke.
Adria-DX12 By Mate Buljan.
DirectX Graphics Samples from Microsoft.