Projects & Experiments
A collection of graphics projects, rendering experiments, and engine work from over the years.
Professional & Shipped Film, engine, and platform work I contributed to on the job.
Godot for XBOX on PC - Microsoft
Contributed to the public XBOX Godot sample - a source-only reference showing how to build a Godot GDExtension that integrates the Microsoft GDK, XBOX Services, and PlayFab. Covers platform services, sign-in, PlayFab Core, Multiplayer, and Game Saves, plus a GameInput bridge into Godot's Input/InputMap, so developers can ship to XBOX on PC without leaving the engine. The open-source samples cover roughly 85% of the XBOX SDK surface. Separately, I've contributed upstream to Godot itself - fixing a GLSL shader-generation bug in the refraction-normal path and working with the physics and rendering teams on Vulkan and physics-server regressions.
The Wild Robot - Feature Film
Credited for two roles: started as the first Lighting TD on production, building the show's custom tooling, then promoted to lighting tools engineer across the studio. Some of that tooling drives the film's painterly look - a layered extension of the Cryptomatte format that stores per-asset IDs, coverage, position and normals across depth layers, so precise CG renders can be filtered into hand-painted brushstrokes. Process via befores & afters.
Trolls Band Together - Feature Film
Lighting TD responsible for maintaining department tools studio-wide and show-specific. Focused on optimizing rendering pipelines and day-to-day artist shot support.
The Bad Guys 2 - Feature Film
Lighting tools engineer on the sequel, building and extending show-specific tooling for the lighting department. Developed automation for look development and surfacing workflows to accelerate artist iteration across sequences.
Forgotten Island - Feature Film
Lighting tools engineer supporting production pipeline and tooling needs. Built and maintained lighting department tools, focusing on pipeline reliability and workflow improvements for the show's lighting and LookDev teams.
World of Warcraft - Dragonflight
Contributed to graphics systems on the game engine team, including an innovative GPU compute particle system enabling artists to create high-fidelity VFX with fewer performance constraints.
Writing & Notes Technical write-ups and deep dives - full articles on the blog.
Iris: reconstructing a street as 3D Gaussian splats
One twenty-second nuScenes drive - six cameras and a 32-beam LiDAR through Boston - rebuilt into a navigable 3D world. LiDAR for geometry, cameras for colour, a Depth-Anything-V2 prior to fill the gaps, SegFormer masks to delete the sky and the traffic, PCA-oriented Gaussians sliced into geo-anchored tiles, and a three.js/WebGL2 viewer you can fly through at 60 fps. Plus an honest account of what's still rough.
neural deferred shading: shading Sponza at 64 FPS with an 11k-parameter network, in Metal
A from-scratch Apple Metal path tracer becomes a data factory for neural rendering: cast one primary ray per pixel, keep the cheap G-buffer, and let a tiny MLP - compiled into a Metal compute kernel - synthesize the fully globally-illuminated frame at frame rate. Plus a screen-space U-Net, temporal reprojection, and a directly-measured "one ray ≈ 68 samples" amplifier.
aircoder: a local coding agent that externalizes its memory to disk
How a nine-crate Rust agent drives a small local LLM through hour-long coding tasks by treating the model as stateless and a content-addressed SQLite ledger as its working memory - bounded context, crash-resumable, fully auditable.
metalstream: running a 31B model on a 16 GB laptop
A drop-in MLX add-on that streams model weights off NVMe so an 18.4 GB model produces tokens on a 16 GB M4 Air - plus the phase-by-phase investigation, with real benchmarks, that proved every step before taking it.
Mandelbrot Fractals in OpenGL
Rendering Mandelbrot fractals using the OpenGL Core Profile - covering the math, the shader implementation, and the GPU-accelerated results.
Independent Projects & Experiments Self-directed R&D, prototypes, tools, and from-scratch rendering studies.
aircoder - Local Agentic Coding Agent
A nine-crate Rust workspace that drives a local LLM through hour-long coding tasks by externalizing all working memory to a content-addressed ledger on disk. Every observation becomes typed evidence - file reads, diagnostics, test results, decisions - queried by predicate instead of re-read from the prompt, so the context window stays nearly empty. Every step is a checkpoint: a SIGINT or kill -9 mid-task resumes byte-for-byte. Closes a real local-model loop against mlx_lm.server, with 94 tests passing.
metalstream - MLX Weight-Streaming Substrate
A drop-in MLX add-on that streams model weights off NVMe so a 31B-parameter Q4 model (18.4 GB on disk) produces tokens on a 16 GB M4 MacBook Air - beneath a 10.67 GiB Metal working-set cap that is half the model's size. The GPU only ever sees the layer it needs; peak Metal pool holds around 22% of the cap, with bit-identical numerical equivalence to the non-streaming baseline. A persistent buffer pool eliminates the substrate's eviction-path overhead.
Iris - Automotive Digital Twin
A real-time 3D digital-twin viewer for a vehicle-sensor concept, built in React-Three-Fiber. Renders live 3D Gaussian-splat scenes with tile streaming and frustum culling, a neural ONNX post-processing pass, a procedural city, lidar halos, tracked objects and twins, and a driving ego vehicle - targeting WebGPU with Metal and Vulkan back-ends. Built over comma.ai's openpilot as the sensor substrate.
GridLock - City Traffic & Transit Sim
A 2.5D isometric city-flow game in Godot 4 - no zoning or services, only moving people through a city. Roughly 3,900 lines of GDScript across sandbox, puzzle, and real-time dispatch modes. Placement happens on a tile grid, but the simulation runs on a derived graph - intersections and stops as nodes, lanes, tracks, and sidewalks as edges - rebuilt incrementally on every edit. A fixed 20 Hz tick drives pooled car, pedestrian, bus, train, and cyclist agents over congestion-reactive multi-modal A*.
Photogram - Image-to-3D Compositing
An FX/lighting compositing prototype that reconstructs any RGB plate metrically with Apple SHARP (3D Gaussian splatting), then comps 3D assets into the scene with accurate scale, depth-correct occlusion, and transferred lighting. Assets are dreamed from a reference image or from the plate itself via SAM 2 segmentation and TripoSR, fit against an ambient-plus-directional lighting solve. A three-tab Gradio UI exports a camera-matched preview and a combined GLB; runs on Apple Silicon MPS.
Bonsai NPCs - In-Process LLM Agents
A Godot 4.6 sandbox where 7-10 NPCs are driven by a local 1-bit LLM (PrismML's Bonsai) running entirely in-process through a custom GDExtension that vendors a llama.cpp fork. NPCs hold long-term memory, form bonds and grudges, and gossip when they cross paths - a Hitman-style level where you exploit the emergent NPC reasoning to pull off an objective.
Splatty - Gaussian Splat Viewer
A real-time 3D Gaussian Splatting viewer built from scratch in C++ and DirectX 12. Implements a full DX12 compute pipeline, a PLY loader for standard and SuperSplat-compressed formats with chunk-based dequantization, spherical-harmonic evaluation up to degree 3, and an auto-positioning FPS camera - loading reconstructed scenes of 200k+ Gaussians.
PrintSim - FDM Printer Simulator
A browser-based, physically based FDM/FFF 3D-printer simulator. Loads real Marlin .gcode and simulates extrusion end-to-end: trapezoidal motion planning with junction-deviation cornering, voxel deposition, thermal diffusion, polymer bond healing, and corner-lift warping - with G-code parsing and motion planning offloaded to Web Workers.
mapz - Urban Design Simulation
A CAD-like urban-design game played on real-world streets. Loads real map geometry from the Overpass API, then runs a living city simulation - zone blocks and watch them grow and fill over months, with RCI demand, a treasury/economy, happiness, and emergent problems. Part Cities: Skylines, part SimCity, part GeoGuessr.
Lineage - Medieval RPG Simulation
A simulation prototype for a grounded medieval fantasy RPG. Procedurally generates settlements from hamlets to walled capitals, then drives them with deeply interlocking systems - economy, factions, NPCs, social standing, skills, weather, and multi-generational lineage - all wired together over an event-bus architecture in Godot 4.
Iso-Tactics - Cyberpunk Deckbuilder
A prototype for a cyberpunk isometric turn-based tactics deckbuilder - think Hitman by way of Baldur's Gate 3. Sneak, lure, barter, talk, bribe, or kill your way through assassination encounters on a verticality-aware isometric grid, with card-driven actions resolving on a turn-based combat layer.
Green CRT Terminal Shader
A drop-in Godot 4 canvas_item post-process shader that makes any scene look like an old green-phosphor CRT terminal: barrel distortion with a bezel mask, a fast 9-tap phosphor glow, scanlines and an RGB aperture-grille shadow mask, per-line jitter, a rolling bar, whole-screen flicker, film grain, and luminance-to-phosphor recoloring.
Slang Cross-Platform Shader Pipeline
A production-style build pipeline showing how studios compile shaders for many platforms from one Slang source - targeting XBOX (DXIL, Shader Model 6.6) first, with cross-compilation to PC, Vulkan, and Metal. Includes a Cook-Torrance PBR pipeline, compute-based auto-exposure and ACES tonemapping, multi-pass bloom, and a declarative JSON shader manifest over CMake.
Physically Based Raytracer
Path tracer written from scratch in C++ implementing a Monte Carlo rendering algorithm. Uses multithreaded accumulation buffers for ~30-50% faster render times.
Teapot Graphics Engine
Minimal graphics engine featuring a PBR material pipeline, HDR with ACES tonemapping, glTF model support, and omnidirectional shadow mapping.
Voxel Engine
Interactive voxel engine supporting 16.7M+ voxels with noise-based terrain generation and a real-time hydrological erosion simulation using particle dynamics and multithreading.
Unity Point Cloud Renderer
Point cloud renderer built with Unity's Universal Render Pipeline, using shader graph and custom HLSL for geometry instancing - driven by a single draw call.
OpenGL Toy Rendering Engine
A toy rendering engine in the OpenGL Core Profile with ASSIMP model loading and support for 2D and 3D rendering, including various shader experiments.
Vulkan Toy Rendering Engine
A reimplementation of the OpenGL toy engine in Vulkan, focused on understanding the graphics pipeline and how Vulkan exposes lower-level control to the programmer.
Geometry Processor
Implementations from Dr. Keenan Crane's Discrete Differential Geometry course at CMU - additions to the provided geometry processor for the course labs.
Raymarcher
A Unity raymarcher implemented entirely in HLSL. The engine is contained within a single shader and supports arbitrary signed distance functions and CSG operations.