Software Engineer / Graphics Programmer
Aion Renderer
Aion Renderer was a custom-built 3D graphics demo created using Direct3D 11. It was developed as a year-long solo student project at the Digipen Institute of Technology.
Aion was designed to avoid the mistakes made during the development of the rendering technology for my previous project, Turbo Engine. Most of the rendering features from the previous engine translate over, with the primary extensions relating to improved screen-space lighting effects, dynamic global illumination, and the addition of temporal anti-aliasing.

Voxel-based Global Illumination
The primary goal of the project was to include a dynamic global illumination (GI) system to enhance the realism of scene lighting.
The solution employed in the demo uses a voxel representation of the scene into which cones are traced to approximate light bounce. The voxel grid is updated once per frame after the geometry buffer is populated and remains centered on the camera's position at all time.
In addition to achieving the main goal of indirect lighting, emissive materials that actually emit light are also possible. This allows for a more accurate representation of large lights or ones with non-standard shapes.
Aion's voxel GI supports both diffuse and specular reflections, allowing for approximate reflections of off-screen objects. Additionally, a secondary light bounce is also available.
Diffuse global illumination samples are accumulated across multiple frames to increase quality and stability while reducing performance cost. This addition does, however, come at the cost of visible fill-in at the edges of the screen as the camera moves.



Screen-Space Diffuse GI
As voxel GI can only represent large-scale scene features without consuming a prohibitive amount of video memory, an addition GI solution needs to be layered on top to capture smaller details.
In this case, additional indirect lighting is computed by ray marching randomly determined ray directions against the geometry buffer in screen-space. Intersections are treated as point light sources using data from the direct diffuse light buffer as its color.
Just like the voxel GI, SSGI results are accumulated across multiple frames, reducing the performance cost while increasing quality and stability.

Screen-Space Reflections
In addition to the voxel cone-traced reflections, Aion features screen space reflections that use a cone-tracing technique to produce glossy reflections that is able to capture micro-level detail that would otherwise be missed. The glossy appearance is produced by a preintegration step using a bilateral Gaussian blur. Screen-space reflections are supported for even very rough surfaces.

