steaklive / DXR-Sandbox-GI

Simple DirectX 12 toy framework for testing Global Illumination: Reflective Shadow Mapping, Light Propagation Volume, Voxel Cone Tracing, DXR

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

About

Simple C++/DX12 framework for my bachelor thesis "Dynamic real-time global illumination algorithms on modern GPU hardware and software" (paper).

Video: https://youtu.be/4YUWw8x4XXc

picture

Features

  • Deferred Rendering
  • Shadow Mapping
  • GI w/ Reflective Shadow Mapping (indirect diffuse)
  • GI w/ Light Propagation Volume (indirect diffuse)
  • GI w/ Voxel Cone Tracing (indirect diffuse + specular + AO)
  • SSAO
  • Asynchronous compute
  • DXR: Reflections + Blur, Ambient Occlusion + Blur

Optimizations

Reflective Shadow Mapping:

  • main pass in compute (+async)
  • efficient upsample & blur of main pass' output in compute (+async)

picture

Light Propagation Volumes:

  • flux downsample in compute
  • DX12 bundle for propagation passes

picture

Voxel Cone Tracing:

  • main pass in compute (+async)
  • anisotropic mipmapping passes in compute (+async)
  • efficient upsample & blur of main pass' output in compute (+async)

picture

SSAO:

  • TODO: downscaled version
  • TODO: move to compute with LDS optimizations
  • TODO: move to async

RTAO:

  • TODO: replace blur with proper filtering

Comparison

No GI -> RSM -> LPV -> VCT -> offline path-tracer

picture

Additional screenshots

picture picture picture

Dependencies

  • Assimp
  • DirectXTK12
  • ImGUI

Requirements

  • VS2019
  • DirectX12
  • Windows 10 (1809+)
  • latest Windows SDK
  • NVIDIA GPU with RTX support (if using DXR)

About

Simple DirectX 12 toy framework for testing Global Illumination: Reflective Shadow Mapping, Light Propagation Volume, Voxel Cone Tracing, DXR


Languages

Language:C++ 64.7%Language:C 23.9%Language:HLSL 11.4%