Eden
Eden is my at-home project: a renderer built from scratch originally with D3D11, but since rebuilt from the ground up in D3D12. I like to share things I learn
while working on it (right, wrong, and in-between), but I also write adjacent posts here and there when I take breaks from it.
Bindless Oriented Graphics Programming

A practical approach to bindless GPU driven rendering.
Click here to see the full post.
How to Compact Acceleration Structures in D3D12

A guide to saving significant amounts of memory when using DXR.
Click here to see the full post.
Using D3D12 in 2022

A step-by-step guide made to jump-start the understanding of how to use DirectX 12 using more modern API features.
Click here to see the full post.
Finding Your Home in Game Graphics Programming

In this post, I talk about some of the current difficulties with learning graphics, and provide a bunch of resources to get you started.
Click here to see the full post.
TAA Starter Pack

In this post, I detail a step-by-step implementation of TAA and provide a boat-load of links to learn about it.
Click here to see the full post.
Perceptual Lightness for Game Graphics

A quick code snippet demonstrating a complementary perceptual utility to the luminance dot product for use in "lightness" based calculations.
Click here to see the full post.
On the Perceived Inevitability of Unreal

Some ramblings about the impact of Unreal (and other tech) on the in-house engine side of the game industry.
Click here to see the full post.
A Failed Adventure in Avoiding Temporal Anti-Aliasing

I thought I could avoid temporal AA, and I was mostly wrong! I've detailed my thoughts from this adventure.
Click here to see the full post.
Binding Bindlessly

In this post, I provide an introduction to binding resources "bindlessly" in modern graphics APIs.
Click here to see the full post.
An Opinionated Post on Modern Rendering Abstraction Layers

The title here pretty much says it all. Part abstraction design tutorial, part ranting about abstraction methodology.
Click here to see the full post.
Applying For Entry Level Graphics Jobs in Games

Taking a break from my engine posts, I detail what is hopefully a practical guide to preparing for your first graphics job application.
Click here to see the full post.
Water Walkthrough

In this post, I detail an implementation of water rendering that covers a wide variety of details on how to do it.
Click here to see the full post.
Learning D3D12 from D3D11

In these posts, I detail DX12 concepts and ways someone could implement wrappers around the API having come from a DX11 background. This is not meant to show the best way of doing things,
more just to relate prior concepts to make the new API feel more familiar.
Part 1: Getting Started, Command Queues, and Fencing
Part 2: GPU Resources, Heaps, and Descriptors
Part 3: Textures
Adaptive Exposure from Luminance Histograms

Luminance histograms are a solid drop-in replacement for older style downsampled average luminance. In this post, I detail the implementation of basic
luminance histogram shaders. Click here to see the full post.
RTX On - Quickstart Guide to DXR (Experimental)

Got a DXR-compatible card? Want the bare minimum to get into the DXR Experimental API without digging through a bunch of samples? Click here to get started in minutes.
No longer applicable, the experimental API has been replaced by the full DXR release.
Moving To D3D12

It's been a long time since my last post! Apart from the standard work/life reasons, I've also been rebuilding my engine completely in D3D12. In the near future I'll be detailing
all the work that went into it. It's been quite the journey into pipeline states, fencing, async compute, multi-frame buffering, and beyond! Definitely worth the effort though,
DX12 is fast and powerful.
Area Lighting

Area lighting can add a lot to game scenes, and with a physically based lighting model, they look even better! In this post, I'll be
detailing the implementation of sphere, tube, and one-directional rectangular area lights.
Click here to see the full post.
Screen Space Ambient Occlusion - SSAO

SSAO stands for Screen Space Ambient Occlusion, the screen space technique for rendering a kind of shadowing that occurs when objects
in close proximity block ambient lighting near each other. This tutorial covers SSAO implementation.
Click here to see the full post.
Physically Based Rendering

Before moving much further into adding lighting technology in my engine, I wanted to lay the foundation of physically based lighting. There are some great papers
on the math behind it, but I've yet to see an implementation example online, so I'm sharing mine! This is my first pass at getting it to look right, and I draw
much of my inspiration for the final look from what I've seen Unreal and Unity3D do with theirs.
Click here to see the full post.
Cascaded Shadow Maps with Soft Shadows

Shadow mapping is one of those things that is difficult to be satisfied with. At this point, I've read dozens of articles, papers, blogs, etc. about different shadow mapping implementations, and it quickly became clear that there's currently no perfect (or even near-perfect) way to do them. It is possible to get something that looks pretty good though, and you can use little tricks to minimize the drawbacks. My hope is that by the end of reading this, you'll be able to implement and understand the complete flow of cascaded soft shadow maps, and the advantages/disadvantages to the techniques I use.
Click here to see the full post.