A toy rendering engine to experiment with DX12 and Vulkan.
- Graphics API: DirectX 12
- Vulkan is work in progress, but does not run at all.
- Language: C++20
- OS: Windows 11
- IDE: Visual Studio 2022
Run Setup.ps1, build CysealSolution.sln, and launch the test project.
This project is at a very early stage. Only basic rendering features work with DX12 backend.
Visibility Buffer
Write visibility buffer (objectID + primID) in depth prepass. Calculate barycentric UV of triangles from visibility buffer. Generate gbuffers from barycentric UV.
Hardware Raytracing
Use gbuffers to generate rays starting from surfaces. Accumulate lighting at hit points to generate indirect diffuse/specular reflection textures. Run realtime denoiser.
Generate rays starting from camera for full path tracing. Run offline denoiser.
Frame Generation
Integrate Optical Flow and Frame Generation modules in AMD FidelityFX SDK 1.1.4 to generate interpolated frames.
Present interpolated frames between real frames.
- GPU-driven rendering
- Bindless textures
- GPU scene management
- Indirect draw (populate drawcalls on GPU -> cull drawcalls via compute shader -> issue indirect draw)
- Visibility buffer
- Hardware Raytracing
- Ray Traced Shadows
- Raytraced indirect diffuse reflection
- Raytraced indirect specular reflection and refraction with AMD FidelityFX Reflection Denoiser
- Monte Carlo path tracing with Intel OpenImageDenoise
- Frame Generation
- FSR3 compute based frame generation in AMD FidelityFX SDK 1.1.4.