Warning! It's still a work in progress, far from being stable.
A DX11 real-time renderer developed as a way to experiment with interesting rendering and engine features. Uses a Render Graph to ease the implemenentation of new features by automatically managing transient resources (currently only textures, not constant buffers). One of the main features is the presence of multiple subsurface scattering techniques. Planning to also integrate a DX12 backend.
- Deferred Renderer
- Phisically Based Rendering
- Render Graph for management of transient resources (inspired by Frostbite's Halcyon Engine )
- Abstract Render Command List
- Subsurface scattering algorithms
- Directional, Point & Spot lights
- Shader Reflection
- Custom Arena & Pool Allocator
Multiple subsurface scattering techniques are supported, specifically:
- Jimenez Gaussian [Jim09]
- Jimenez Separable [Jim15]
- Golubev [Gol18]
- Golubev Plus (an extension developed during my thesis that improves performance, while keeping the quality approximately the same)
Some of the features with highest priority that I plan to implement:
- DX12 backend
- Surfel based Global Illumination
- Screen Space Shadows (Contact Shadows)
- SSAO
- SSR
- Volumetric Rendering
- Water Rendering
- Virtual Geometry (maybe)
The external libraries used inside this project:
- assimp
- stb_image
- xxHash
- imgui
- libyaml
- DirectXMath