Eden is my current long term project: a graphics engine built from scratch originally with D3D11, but since rebuilt from the ground up in D3D12. I'm a graphics engineer in the game industry, but there's always so much more to learn and explore, so that's what this blog is for! I'll share what I've found, the things I do right, wrong, and everything in between.

Learning D3D12 from D3D11 - Part 2: GPU Resources, Heaps, and Descriptors

In part 2 of this series, I detail the implementation of GPU resources, how that relates to heaps, and how to utilize descriptor handles and heaps. Click here to see the full post.

Learning D3D12 from D3D11 - Part 1: Getting Started, Command Queues, and Fencing

In this post, I detail DX12 concepts and ways someone could implement useful wrappers around the API. Part 1 covers getting started, command queues, fencing, and how queues and fences relate. Click here to see the full post.

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.

Efficient CPU Particle Systems

Particle systems are a great way to add life and motion to your engine. In this post I cover the complete creation of a particle management system that is capable of great visuals and high performance.
Click here to see the full post.

Physically Based Rendering - Changes in Pipeline

Now that we have physically based rendering in place, as discussed in my previous post, we need to make some changes in our material pipeline.
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.

Sample Distribution Shadow Maps

A little while ago, my lead mentioned his friend at another studio was using SDSM for their shadows. I'd never heard of it before, and it seems that most other companies haven't either since it is used in very few games right now. I imagine it will become more popular, because these are the best looking shadows I've ever seen - far exceeding the standard PSSM implementation in pretty much every aspect. Since the code is heavily dependent on your renderer implementation, I haven't included my own code here. However, I've attached a powerpoint that gives a quick overview of how the technique works before you dive into the paper. You'll also find the original code sample there. Admittedly, this technique is a bit tricky to implement, especially compared to other shadowing techniques, but if I can do it I'm sure you can too!
Download the powerpoint

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.


  • edenspuzzle@gmail.com
  • 603-377-6737
  • LinkedIn