Skip to content
This repository has been archived by the owner on Dec 21, 2024. It is now read-only.

AmelieHeinrich/Oni

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Oni : a DirectX 12 renderer written in C++

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.

DISCLAIMER

This is an experimental renderer as I am currently learning graphics programming. Please take this into consideration when reading the code for this renderer.

Requirements

  • 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

Building

  • 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

Screenshots

Sponza Scene

Editor showing meshlets and raytraced shadows output

Bistro scene

Bloom

Renderer features (techniques)

  • 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

Renderer features (GPU)

  • 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

Other features

  • UI powered by ImGui
  • In-engine screenshot system
  • Shader hot reloading and caching

WIP (GPU Driven and latest GPU tech)

  • Meshlet cone culling
  • Indirect Buffers

WIP (Shading and Math)

  • Clustered forward

Dependencies