Available full-timeRemote · open to relocateEN fluent · 中文 native · FR basic
I build renderers, physics engines, and the pipelines that feed them — hybrid Vulkan RT, CUDA path tracing, neural capture, and agent tooling that ships.
MSc Computer Science, Linköping University — Graphics & Visualization. Open to graphics / engine / GPU-systems / AI-infrastructure / agent roles.
Ships hardware RT pipelines (Vulkan KHR, CUDA), real-time path tracing with NVIDIA DLSS 4 Ray Reconstruction and SVGF, MIS path tracing with Owen-scrambled Sobol, OIDN / NRD denoisers, and a multi-pipeline inverse lab inside Ohao (Diff-IR dense maps + capture-gated PT — quality-plate ΔPSNR up to +24.5 dB). Also: nvdiffrast research sibling, synchronized multi-camera capture, Freedo internship (MLS-MPM on 3DGS), open-source Godot MCP, and a multi-agent CLI framework.
Looking at
61KLines · Vulkan EngineStandalone C++ (50K+) + GLSL (11K) renderer — deferred PBR path and hardware ray-tracing path sharing one scene representation.
11 dBPSNR · Thesis Result3D Gaussian Splatting gain over NeRF on reflective surfaces — measured on a 209 GB dataset I captured and released.
12 camsCapture PipelineSynchronized multi-camera rig with staggered triggers + Bluetooth turntable — built end-to-end in C++ / C# (~8K lines).
40 FPSCUDA Path TracerMonte Carlo with BVH on RTX 4060 at 1280×720 — Russian roulette termination, OIDN denoising, consumer-GPU throughput.
7.1KContributions · 2026Across github.com/Qervas — shipping, not posting.
Public GitHub cadence · github.com/Qervas
Featured Work
Damaged Helmet · deferred PBR
Lantern · emissive lighting
MetalRoughSpheres · BRDF
Path-tracing pipeline · Intel OIDN denoising on a glossy scene
Solo hybrid Vulkan renderer: deferred G-buffer and KHR path tracing share one scene, materials, bindless textures, and TLAS. Architecture spans render, physics (GJK/EPA + BVH), and a gpu / Vulkan layer — no engine SDK host.
+24.5 dBDiff-IR outdoor ΔPSNR
+21.8 dBDiff-IR helmet ΔPSNR
32.5 / 34.4PT holdout / relight dB
19.7×Analytic vs FD optim
Inverse rendering lab (July 2026): multi-pipeline IR on one Vulkan host — path-tracer oracle (capture-gated LABTEST) + Diff-IR Deferred sibling where free dense maps are the beauty source of truth. Fit is train-only; published dB always name the metric domain.
Diff-IR quality plate (1080p SHOW, map ≥128², multi-view, hard presets): free dense roughness (ORM.g) recovery — spheres +19.8 dB, helmet +21.8 dB, outdoor +24.5 dB train ΔPSNR vs cool wrong-init. Novel-HDRI relight tracks the same gains. Dense albedo / metal MAPTEST under Deferred; metallic free-grid hits +26.8 dB with map MSE 0.405 → 0.006.
PT capture-gated LABTEST (exported holdout/relight PNGs, not live-oracle theater): holdout 32.5 dB / SSIM 0.983, relight 34.4 dB / 0.989, +20.5 dB vs wrong init. Hybrid path: Diff-fit → PT refine. Analytic albedo optim GRADCHECK vs FD (median rel err < 0.20) at 19.7× wall-clock vs estimated full 3-pass coordinate FD.
Real-time path tracing: interactive 1-spp chain with NVIDIA DLSS 4 Ray Reconstruction (raw NGX Vulkan on Linux) and vendor-neutral SVGF; ReSTIR GI on outdoor HDRI; OIDN offline + NRD compose. Golden regression: Cornell box + MetalRoughSpheres.
Built CamMatrixCapture: a 12-camera synchronized capture system with staggered trigger firmware, Bluetooth-controlled turntable automation, and a state-machine driven capture workflow. Indoor object captures feed NeRF / 3DGS training; outdoor work includes drone reconstruction of Gränsö Castle.
Released a 209 GB public dataset focused on challenging materials — reflective, transparent, translucent surfaces that traditionally break neural rendering methods.
The benchmarking contribution: 3D Gaussian Splatting reaches ~11 dB PSNR above NeRF on reflective surfaces — a surprisingly large gap, with clear implications for production capture pipelines.
From-scratch MCP server plus a bundled Godot editor addon that lets AI agents create, inspect, run, debug, and export Godot 4.6 games through tools — ~26 tool domains (scene, nodes, scripts, run, resources, UI, workflows…), an editor bridge over local HTTP with token auth, and a run_playtest_evidence contract (input → assert → screenshot) so the agent checks its own work. Installers for Claude / Cursor / Codex.
TypeScript · React Ink · ReAct · Workflow Engine · in dev
Autonomous multi-agent framework for the terminal. Clean layered architecture (core / application / infrastructure / presentation), an AgentCoordinator for multi-agent orchestration, a workflow engine with plan validation, plus plugin manager, metrics, and background-task manager. ReAct loops with tool registration / execution; GitHub Copilot's OpenAI-compatible API as the LLM backend. ~30K LOC.
Real-time MLS-MPM physics (Hu et al. 2018) in Taichi — fluid dynamics coupled with solid mechanics and fracture on one particle-grid solver. Scenes: 2D dam break, 3D water tearing through breakable bridge pillars, and building / flood destruction. APIC particle↔grid transfer with weakly-compressible equation-of-state pressure.
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.
Not the Ohao Vulkan Diff-IR lab (that lives inside ohao_engine above). This is a separate PyTorch / nvdiffrast experiment: full GGX stack (D/G/F), turntable camera / mesh / lighting layers, aimed at per-point BRDF recovery and relighting glossy captures so SfM converges. Neural decomposition + training loop still in progress.
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.
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.
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.
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.
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.
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.
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.
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 50K-line engine than three shallow demos.
Education
Linköping University
MSc Computer Science — Graphics & Visualization
2023 — 2025
Graduated February 2026.
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.