Skip to the content.

C++, DirectX 12 (DXR), HLSL, MiniEngine Solo Project Researcher & Graphics Programmer
Github

Project Overview

Surfel GI Near-Far Surfel Structure
Surfel GI Near-Far Surfel Structure Debug Spawn View

Modern engines like Frostbite (used in Skate 3 and EA College Football) rely on advanced global illumination (GI) to simulate how light bounces between surfaces in real time. One of Frostbite’s more recent approaches is surfel-based global illumination (SBGI), as introduced in Global Illumination Based on Surfels (GIBS). This technique discretizes irradiance directly on surfaces, but it suffers from overspawning surfels in regions with high normal variation (such as foliage), which leads to wasted performance.

This project re-creates an SBGI pipeline and augments it with a screen-space approximation to address that inefficiency. I introduce the Near-Far Surfel Sphere (NFSS), a hybrid structure that:

By spawning these hybrid surfels only in regions with high ambient occlusion, the method allows controllable tradeoff between surfel redundancy and lighting accuracy.

The system was implemented in DirectX 12 (DXR) on MiniEngine, with custom HLSL shaders.


Surfel-Based GI (Baseline)

Surfel GI accumulation pass


HBIL Integration

To address overspawning and missing near-field detail, I integrated Horizon-Based Indirect Lighting (HBIL) into the surfel GI pipeline.

Calculating the near field in HBIL
Estimating far-field contributions in HBIL

(Left) HBIL near-field irradiacne (Right) Far-field radiance estimation via bent cones


Near-Far Surfel Sphere (NFSS)

Building on HBIL’s bent-cone output, I designed a novel structure: the Near-Far Surfel Sphere (NFSS).

Surfel GI Near-Far Surfel Structure

(Left) general case of surfel coverage (Right) the “perfect” case coverage with the NSFF structure

Surfel GI Near-Far Surfel Structure
Surfel GI Near-Far Surfel Structure Debug Spawn View

(Left) debug view of the NFSS structure in-engine (Right) interactive debug view on mouse cursor


Blending and Confidence Heuristics

To prevent double counting of irradiance:


Future Work

back