Projects
Interactive Projects
Ongoing Work
Self-Supervised Learning for Biophysical Human Vision
Learning biophysically-grounded models of human visual perception from optic nerve signals.
- Investigating self-supervised methods to learn interpretable models of human vision.
- Connecting perceptual measurements to biophysical priors for explainable prediction.
- Targeting inverse problems in colour, brightness, and appearance perception.
Spectra
A Kiln-built spectral path tracer with USD and MaterialX support.
- Building a spectral path tracing renderer on top of my Kiln rendering stack.
- Supporting scene interchange through USD and material description through MaterialX.
- Targeting physically grounded rendering workflows for research and visualization.
Splatty
A Kiln-built Gaussian splatting training and visualization suite.
- Exploring a unified tool for Gaussian splatting training and interactive visualization.
- Building on Kiln to keep rendering, compute, and visualization paths in one stack.
- Currently backburnered while higher-priority rendering and research work moves forward.
Research Projects
Neumours: Implicit Neural Tumour Representations for Differentiable Medical Rendering
Lightweight INR segmentation model achieving nnUNet-level Dice scores with 100x fewer parameters.
- Developed a lightweight Implicit Neural Representation model with segmentation performance comparable to SOTA nnUNet at dramatically fewer parameters.
- Enabled continuous spatial representation, arbitrary resolution inference, and smoother boundary predictions.
- Implemented a GPU-accelerated real-time 3D volume renderer using Slang for interactive visualization of MRI data and INR predictions.
- Built a complete training pipeline with configurable hyperparameters, k-fold cross-validation, and Weights & Biases integration.
High-Performance Portable LiDAR Rendering System
WebGPU compute splatter for massive LiDAR datasets.
- Compute-based LiDAR point cloud renderer targeting real-time visualization of 100M+ points with interactive frame rates.
- Custom WASM-based streaming solution for LAZ/LAS/PLY file formats with progressive loading.
- Optimized compute shaders for massive point cloud splatting and level-of-detail management.
Undergraduate thesis exploring colorimetry and a real-time 3D colour space visualization tool.
- Developed a real-time 3D colour space visualization tool using WebGPU and TypeScript.
- Rendered all roughly 16 million sRGB colours between 6-16ms frametime on consumer hardware.
- Used compute shaders for colour generation and instanced particles for rendering.
Comparing The Performance of 3D Classification Models
Research and implementation of 3D classification models on voxelized data.
- Co-researched, implemented, and tested various 3D classification models on voxelized 3D objects.
- Developed partially-novel CNN architecture for binary voxel classification.
- Evaluated and optimized models using ShapeNet, ModelNet40, and Toys4K.
Personal Projects
A Rust RHI for Vulkan 1.3 and Metal 4 using Slang.
- Building a Rust rendering hardware interface targeting Vulkan 1.3 and Metal 4.
- Using Slang as the shading language and compilation pipeline.
- Following Sebastian Aaltonen's No Graphics API design philosophy.
Type-safe Haskell bindings for the SDL3 Native Application Library.
- Enables functional programming access to SDL3's complete API with zero-cost abstractions.
- Provides performant type-safe wrappers over SDL3's C interface while preserving low-level control.
- Includes 30+ cross-platform examples including GPU rendering demos.
A lightweight WebAssembly runtime for Google's Tint WGSL compiler with SPIRV-Tools integration.
- Reverse-engineered a minimal WebAssembly runtime for Google's Tint compiler.
- Integrated SPIRV-Tools for cross-compilation to and from SPIR-V, SPIR-V Assembly, and WGSL.
- Supports usage as a standalone static library or WASM module with a C++ API.
A C library for rapid development of WebGPU applications.
- Developed a C library to simplify WebGPU application development on top of the WebGPU C API.
- Provides device handling, CImGui integration, and generation of buffers, textures, and pipelines from shader code.