- Built a GPU physics system coupling an MLS-MPM solver to 3D Gaussian Splatting on a multi-GPU A100 server — a static scanned scene can deform, fracture, and flow in real time. ~2.25× end-to-end speedup via CUDA-graph capture and mass-conserving particle reduction.
- Wrote the simulation-and-render pipeline in Taichi, NVIDIA Warp, and CUDA; productized it as a FastAPI + React workbench with streaming splat playback.
Damaged Helmet · deferred PBR · full material stack
Lantern · emissive driving scene lighting
MetalRoughSpheres · BRDF calibration
Path-tracing pipeline · Intel OIDN denoising on a glossy scene
Helmet · 16 spp · raw path-traced
Helmet · 16 spp · OIDN denoised
Ohao Engine
C++20 · Vulkan KHR RT · GLSL · ~50K C++ + 15K GLSL across 121 shaders
Standalone Vulkan engine written from scratch. Hybrid renderer: a deferred G-buffer path and a hardware ray-tracing path share one scene representation, bindless resources, and acceleration-structure workflow. Architecture spans render (22K LOC), physics (11K LOC), and a gpu / Vulkan abstraction layer (8K LOC).
Deferred path: Cook-Torrance GGX BRDF, cascaded shadow maps, SSAO, screen-space reflections, subsurface scattering, TAA, bloom. Path-tracing path: Vulkan KHR ray-tracing with multiple-importance sampling (balance + power heuristic), environment-map importance sampling via precomputed marginal/conditional CDFs, Owen-scrambled Sobol QMC, variance-driven adaptive sampling, and three offline denoiser backends (Intel OIDN, NVIDIA OptiX, NVIDIA NRD).
Real-time path tracing (new, July 2026): the same path tracer now runs interactively with a denoiser chain built for 1-spp frames — NVIDIA DLSS 4 Ray Reconstruction integrated through the raw NGX Vulkan API on Linux (guide buffers, motion vectors, HDR pipeline; feasibility-probed on Blackwell), full SVGF with temporal reprojection through camera motion and variance-guided à-trous filtering as the vendor-neutral fallback, environment importance sampling + MIS in the realtime raygen, solid-angle sphere-light sampling, and an adaptive N-spp loop that spends spare GPU headroom on quality.
Physics layer: GJK / EPA collision detection over a BVH. Top renders use Khronos glTF Sample Assets — a sanity-check that the engine reproduces the reference results graphics engineers actually verify against.
Inverse rendering lab (new): recovers multi-surface PBR materials and lighting from multi-view captures — train-only fit with a Diff-IR deferred sibling and a hybrid Diff-fit → path-trace refine. Capture-gated on held-out views: ~32.5 dB holdout, ~34.4 dB relight (+20.5 dB vs a wrong initialization).