Ohao Engine — PBR helmet render with image-based lighting
Shaoxuan · Frank · Yin Ohao Engine — PBR · IBL · ray tracing

Graphics &
Engine Engineer

Vulkan · CUDA · Neural Rendering · Simulation

I build renderers, physics engines, and the pipelines that feed them — from hybrid deferred-plus-ray-traced Vulkan to CUDA path tracers with ReSTIR and OIDN, down to the capture and reconstruction infrastructure that turns photons into assets.

MSc Computer Science, Linköping University — Graphics & Visualization. Ships hardware RT pipelines (Vulkan KHR, CUDA), SOTA sampling (ReSTIR, MIS), production denoising (Intel OIDN), differentiable rendering (nvdiffrast + Disney BRDF), and synchronized multi-camera capture systems. Currently physics simulation & rendering intern at Freedo Technology. Open to graphics / engine / GPU-systems roles — available full-time.

61K Lines · Vulkan Engine Standalone C++ (50K+) + GLSL (11K) renderer — deferred PBR path and hardware ray-tracing path sharing one scene representation.
11 dB PSNR · Thesis Result 3D Gaussian Splatting gain over NeRF on reflective surfaces — measured on a 209 GB dataset I captured and released.
12 cams Capture Pipeline Synchronized multi-camera rig with staggered triggers + Bluetooth turntable — built end-to-end in C++ / C# (~8K lines).
40 FPS CUDA Path Tracer Monte Carlo with BVH on RTX 4060 at 1280×720 — Russian roulette termination, OIDN denoising, consumer-GPU throughput.
sx-engine hero render: ray-traced glass sphere over desert with cloud-reflecting environment

sx-engine — CUDA Path Tracer + Physics

CUDA · Taichi · C++ · OIDN · ~3K LOC

CUDA path tracer with BVH, Schlick-Fresnel refraction, and optional Intel OIDN denoising. 16 parameterized liquid presets (ocean · honey · lava · milk · blood · crystal …) each with their own IOR and depth-absorption. Paired with a Taichi-GPU Position-Based Dynamics cloth solver — stretch + bend constraints, material-specific stiffness — exporting per-frame OBJ meshes back to the CUDA renderer. 58 production stills shipped.

Repo ↗
Glossy reflective pot from the thesis capture — the kind of object this inverse-rendering pipeline is designed to preprocess

Turntable Inverse Rendering · in progress

Python · PyTorch · nvdiffrast · GGX/Disney BRDF

Foundation for a differentiable rendering pipeline that will learn per-point BRDF from turntable captures, then relight glossy objects uniformly so Structure-from-Motion actually converges. Full GGX stack shipped — D (GGX / Beckmann / anisotropic), G (Smith / Schlick-GGX), F (Schlick / roughness-aware) — plus nvdiffrast backend, turntable camera / mesh / lighting layers. Neural decomposition + training loop next. Built on NVIDIA nvdiffrast.

Repo ↗
SPH particle fluid simulation with velocity-coded color visualization, confined in a tiled pool

SPH Water Simulation

C++ · CUDA · OpenGL · BSc thesis

GPU-accelerated Smoothed Particle Hydrodynamics solver with Marching Cubes surface extraction and CUDA ↔ OpenGL interop for real-time visualization. Uniform-grid spatial hashing for neighbor search, cubic-spline density kernel with gradient / Laplacian variants for pressure and viscosity forces, plus surface-tension kernel. Bachelor thesis — the foundation my current fluid work builds on.

Repo ↗ Demo video ↗
Fully oxidized metal sphere PBR render — final stage of the procedural rust progression

Real-time Material Aging & Weathering

OpenGL · GLSL Compute Shaders · PBR · Procedural Noise

Compute-shader playground for procedural material decay on a PBR sphere — noise-driven rust progression (0/25/50/75/100%), paint cracking and peel, and a dynamic puddle / weather system that wets and dries the ground in real time. Built around an OpenGL compute pipeline with full BRDF response so albedo and roughness shift together as the surface ages. Coursework for Linköping's TNM084 Procedural Methods.

Repo ↗
Custom Qt-based Xiàngqí board mid-game with the trained DQN agent on move

Xiàngqí AI with Deep Q-Networks

C++ · Qt · CUDA · DQN · Self-Play

Reinforcement-learning agent for Chinese Chess — full Xiàngqí rules engine in C++/Qt, a Deep Q-Network with experience replay and a target network, and CUDA-accelerated training driven by self-play in the spirit of AlphaZero. Win-rate sweeps against random and self-play opponents, plus a playable GUI to face the agent. TNM114 group project at Linköping with Oskar Tengvall.

Repo ↗
Cornell-box-style path-traced render with diffuse, glossy and refractive interactions converged

Path Tracing & Photon Mapping

C++ · CUDA · Monte Carlo · KD-Tree

Two global-illumination renderers written from scratch for TNCG15. Monte Carlo path tracer with a CUDA backend for per-pixel parallel ray generation and progressive accumulation — real-time-feasible against the CPU baseline. Photon-mapping pass scatters photons from light sources, then estimates radiance via KD-tree nearest-neighbour lookup for sharp caustics and indirect lighting. Comparative study of where each technique wins.

Repo ↗ Demo ↗
Skiing-action classifier test panel: original video, OpenPose skeleton, ST-GCN class label, and attention map

Skiing Action Analysis · OpenPose + ST-GCN

Python · OpenPose · ST-GCN · Action Recognition

Pipeline for classifying skiing techniques from video — OpenPose extracts 2D body keypoints, a Python preprocessor stitches per-frame skeletons into spatial-temporal graphs, and an ST-GCN trains on those graphs to label actions like big-bend carving. Best model (epoch 39, lr 0.1, batch 32) hits 50% Top-1 / 90.9% Top-5. Co-authored, published in Intelligent Computer and Applications Vol. 12 No. 4, April 2022.

Paper ↗
Freedo Technology
Physics Simulation & Rendering Intern · Remote
Feb 2026 — Present
  • Fluid simulation and differentiable rendering systems using Taichi, NVIDIA Warp, and nvdiffrast across graphics- and simulation-related workflows.
Independent AI Creative Platform (NDA)
Founding Engineer · Part-time
2025 — Present
  • Generative-media platform for creative tooling — GPU-backed image / video generation jobs orchestrated through an async queue with retry, prioritization, and tenant-isolated quotas.
  • Built the full vertical: TypeScript frontend, Python / Node backend, Postgres data layer, object storage, OAuth, billing integration, and a deployment / monitoring story. Reads as full-stack — anchored in the GPU work that pays the bills.
Beijing Guoyao Xintiandi Information Technology
C++ Development Engineer Intern · Beijing
Aug 2022 — Sep 2022
  • Rewrote rendering pipeline from legacy OpenGL to modern OpenGL for a Qt-based 3D medical visualization tool — shader programs, VBOs, modern state management.
  • Built a custom C++ network protocol layer for data transmission between client and backend.
LanguagesC++20, CUDA, Python, C#, TypeScript, Rust, GLSL, HLSL
Graphics APIsVulkan (incl. KHR ray tracing), OpenGL 4.3, DirectX 12
RenderingDeferred rendering, hardware RT, path tracing, PBR (Cook-Torrance GGX), global illumination, TAA, SSAO, SSR, CSM
GPU ComputeCUDA kernels, compute shaders, CUDA-OpenGL interop, Nsight / RenderDoc / PIX profiling
Simulation & MathSPH fluids, Marching Cubes, GJK/EPA collision, BVH, differentiable rendering
Neural RenderingNeRF, 3D Gaussian Splatting, synchronized multi-camera capture pipelines
Engines & ToolsCustom C++/Vulkan, Godot (GDExtension), Unreal Engine, Blender
SystemsCMake, Git, Linux, Docker, PostgreSQL, low-level performance profiling

I care about infrastructure, not app surface area. The systems I find interesting are the ones other engineers build on top of: a renderer, a capture pipeline, a physics engine, a GPU scheduler. I profile before optimizing, I read the paper before reimplementing, and I'd rather ship one well-understood 37K-line engine than three shallow demos.

Linköping University
MSc Computer Science — Graphics & Visualization
2023 — 2025
  • Graduated December 2025.
  • Top grades (5/5) in Advanced Global Illumination, Modelling & Animation, Computer Games Design, Large Distributed Projects.
  • Thesis: Neural Rendering Dataset Collection (see Featured Work above).
Beijing Information Science and Technology University
BEng Computer Science
2018 — 2023
  • GPA 3.53 · Advanced Mathematics 97 · CPU Design 91.