Oni is a modern graphics engine written in C++ with the DirectX 12 API. Its goal is to showcase the latest advancements in real-time rendering. Oni makes heavy use of compute shaders to accelerate the rendering pipeline -- everything that isn't a draw call is done through compute.
This is an experimental renderer as I am currently learning graphics programming. Please take this into consideration when reading the code for this renderer.
- xmake
- Windows SDK Latest
- Visual Studio 2022 + ATL Toolkit
- HLSL Shader Model 6.6
- GPU with, ideally, the following features:
- DXR
- Mesh shaders
- Work graphs
- xmake
- xmake f --mode={debug/release}
- Copy the contents of the bin folder in build/windows/x64/{debug/release}/
- Copy the D3D12 folder in build/windows/x64/{debug/release}/
- xmake run
- Deferred rendering
- Shadow mapping (directional)
- HDR rendering
- Color grading
- TAA (Temporal Anti-Aliasing)
- Film Grain
- Bloom (Compute Downsample/Upsample)
- Debug renderer (lines, motion vector visualizer)
- PBR + metallic material workflow
- Emissive materials
- Point, directional lights
- Screen Space Ambient Occlusion (EXPERIMENTAL)
- Fully raytraced shadows with DXR
- Hardware accelerated mesh shaders & amplification shaders
- Meshlet rendering & culling
- Bindless resources via SM6.6
- Hardware accelerated raytracing
- In-engine BC7 texture compressor using custom texture format
- Mipmaps
- UI powered by ImGui
- In-engine screenshot system
- Shader hot reloading and caching
- Meshlet cone culling
- Indirect Buffers
- Clustered forward