A graphics engine developed using C++ and DirectX 12.
![](https://private-user-images.githubusercontent.com/790432/340043390-6caea4f2-64c6-4c9f-baea-9e59d53aba0e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQyNzg2MDMsIm5iZiI6MTcyNDI3ODMwMywicGF0aCI6Ii83OTA0MzIvMzQwMDQzMzkwLTZjYWVhNGYyLTY0YzYtNGM5Zi1iYWVhLTllNTlkNTNhYmEwZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODIxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyMVQyMjExNDNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mZTI1NWJjOGQ4YTQ2YjBiNTI3ZTQwMTI0MTFjMWQ0NTExZWEyMGFiMTNkNzFiMTA2NmEzMDQxNTAzNzJlNTNjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.KZFu94DmCMLIHfHYKMJjLj0lSD7aA51-tinG2m5tVJQ)
![](https://private-user-images.githubusercontent.com/790432/340043388-4bb91ea5-a8a2-4ab1-a2d1-448a2b3a9064.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQyNzg2MDMsIm5iZiI6MTcyNDI3ODMwMywicGF0aCI6Ii83OTA0MzIvMzQwMDQzMzg4LTRiYjkxZWE1LWE4YTItNGFiMS1hMmQxLTQ0OGEyYjNhOTA2NC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODIxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyMVQyMjExNDNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT05MDZmZjVhZmE4MWQ5MzE4MTdjN2NhYTg1MTI0OTM1ODMzZmZhZGQ2ZWRlNGEyNTUxNmU4NjY0MWZiZDQxMjVlJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.gV1vOeXx9n4VQ720kBZ-vOGQiNO7BhzglSvILLngdhE)
![](https://private-user-images.githubusercontent.com/790432/340043393-023268cf-dfad-46b3-9a1b-74df7d20578e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQyNzg2MDMsIm5iZiI6MTcyNDI3ODMwMywicGF0aCI6Ii83OTA0MzIvMzQwMDQzMzkzLTAyMzI2OGNmLWRmYWQtNDZiMy05YTFiLTc0ZGY3ZDIwNTc4ZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODIxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyMVQyMjExNDNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zMGU4YTJmZGRiMzg4ZGMyY2M1ODMxY2UzM2I4NDllNWFjNWE3ZjY0NDhmYmI3Y2U0NzQzYWNjOTRiYjMzZWY3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.DsJTIiqZZNGWqHA0wo16izrqht6TnwqhDDGwSNiaJIg)
- PBR
- IBL
- Indirect draw
- Vertex pulling
- Bindless textures using unbounded array and dynamic indexing
- Basic abstraction with simple resource state tracking and easier barrier insertion
- Reverse depth
- Blinn-Phong
- Tonemapping
- MSAA
- Mipmap generator using compute shader
- Skybox from equirectangular HDR image
- Run CMake
- Set absolute paths for assets and shaders in
HelloDX12/Header/Configs.h
- That's it!
Dependencies: Agility SDK, assimp, D3D12MemoryAllocator, DXC, glm, imgui, stb