C++ Graphics Rendering DirectX 12 DXR

Toy Renderer (DX12 + DXR)

Personal project

Description

Real-time renderer based on C++ and DirectX 12 used as playground for personal tests and prototypes. Currently comparing different ways of handling hardware ray tracing and identifying bottlenecks for each (profiling on each iteration with NVidia Nsights and Pix).

So far DXR is only used for area light’s ray-traced shadows - offsetting directions with blue noise in a disk around the light using Alan Wolfe’s (EA) FastNoise texture generator to ensure maximal ray distribution in space and count (and potentially time in future work). Denoising is still wip but for now it’s a ‘naive’ edge-aware blur. No dynamic TLAS/BLAS updates yet, wip.

I also added a hacky CPU profiler showing the selected scope’s timings. Might not be beautiful, but it’s really convenient having a quick visualization of it, and I feel that we graphics programmers tend to ‘'’forget’’’ about CPU perf, so that certainly helps :)

Similarly I added a GPU memory reporter. Nothing fancy, but lets me know total GPU memory, and the memory usage by each type of resource.

These last ‘tools’ may not be actual features, but I see having them as mandatory if one wants to develop performance-critical applications and make informed decisions with each change. So the earlier you get them the better!

Screenshots (more in Github repo)

image