RENDERING, SHADERS, GPU compute, & optimization

 

GAME-READY 2d fluid simulation (2025):

These videos feature a GPU-accelerated 2D fluid simulation written from scratch in my C++ game engine. It works by simulating a velocity field and mass transfer through a grid of "pseudo-particles." Each particle has a cell-relative position, velocity, mass, and pressure. Viscosity is achieved via attraction/repulsion forces. The simulation is performed on the GPU and is split into chunks which helps mitigate the performance penalties of GPU-CPU read-backs. CPU-side game state updates can be performed on a per-chunk, per-need basis. Audio is generated through a sparse grid of "springy probes" that accumulate momentum based on the fluid velocity field. The probes allow efficient detection of various fluid conditions such as flow intensity and vorticity, which is used to spawn appropriate sound emitters with varying gain curves.

Voxel Renderer Prototype (2024):

Wrote a quick voxel rendering prototype within my C++ game engine (Manta) as a stress test for the engine’s rendering abstraction layer/API. the demo features chunk LOD swapping, frustum culling, dynamic per-vertex shadow mapping, fog, and subtle world curvature. The highest quality LOD scheme attempts to swap when voxels are 0.5 pixels or smaller. All in all, it performs pretty well with a scene of ~2 billion blocks at 8 bytes/vertex on my system (~1000fps). There is still plenty of room for optimizations as I'm not sorting draw calls or batching distant LODs (octree).

Raven software - call of duty (2021 - 2024)

Prior to my current employment, I worked at Raven Software as a Software Engineer on the rendering team working on Call of Duty: Warzone.

A few of the features I worked on there include:

  • Wrote new shaders for bullet trail VFX to replicate the cylindrical “volume” and preservation of energy of a bullet tracer while minimizing rendering cost (Call of Duty: Modern Warfare II - 2022).

  • Expanded the engine’s large-scale terrain system & associated tooling to give artists more freedom when painting/applying surface materials and material combinations. See this SIGGRAPH 2023 presentation on Call of Duty’s terrain system for more context.

    • These developments significantly improved artist workflow efficiency by reducing/replacing the need to use external tools to make hand-authored material transitions/combinations as done previously.

  • Implemented low-level engine support for new categories of purchasable in-game content with careful consideration for data, streaming, and rendering constraints.

  • Made improvements to the runtime image/mesh streaming system for Warzone’s Caldera map. Caldera introduced pilotable airplanes featuring the fastest player-controlled speeds seen in Call of Duty. The improvements involved heuristically prioritizing streaming to assets along the flight path in order to reduce streamer churn.

Manta deferred renderer (2019 - 2020):

ezgif-6-5414ab19fbbe.gif

The videos above showcase a custom 3D deferred rendering pipeline that I developed for Game Maker: Studio 1.4 while studying at University. It was created with the intention of expanding the scope of the engine’s limited 3D capabilities.

The renderer supported the following: cascaded shadow mapping, parallax occlusion mapping (self-shadowing), screen-space ambient occlusion, point & spot lighting

Vitality (2016 - 2020):

lighting_demo.gif

VIRTUAL REALITY eXPERIMENTS (2014, 2021)

The videos above showcase a couple VR applications that I’ve created using the Unity game engine with the Oculus Rift SDK. VR Scuba Simulator was made as a final project for my CS 579 (Virtual Reality) course at UW-Madison in 2021.

Gallery: