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.

These Colours Do (Not) Exist

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

Kiln

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.

SDL3 Haskell Bindings

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.

Tint-WASM

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.

Nano: C WebGPU Runtime

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.