Alan Liu
Technical Artist
Rendering Pipelines / Shaders / Tools Development
Artstation: https://www.artstation.com/alanliu0401
GitHub: https://github.com/Matrix150
Offline Ray Tracing Renderer

Example of a scene rendered by this renderer
Introduction
This project implements a full ray tracing pipeline from scratch, including ray generation, acceleration structures, intersection, shading, and recursive light transport.
It supports both Path Tracing and Photon Mapping for global illumination, along with adaptive sampling and depth of field for improved visual quality.
The system is designed to balance physical accuracy, performance, and extensibility.
​Core Features
-
Full ray tracing pipeline (camera → intersection → shading → recursion)
-
BVH acceleration structure for efficient ray traversal
-
Multi-threaded tile-based parallel rendering
-
Physically-based lighting (reflection, refraction, BRDF)
-
Global illumination (Path Tracing + Photon Mapping)
-
Adaptive sampling with statistical convergence testing
-
Depth of Field using thin lens camera model
Technical Breakdown
Rendering Pipeline
Implemented the core ray tracing pipeline, including ray generation, scene intersection, shading, and recursive ray tracing.
Supports secondary rays for reflection, refraction, and shadow computation, with termination controlled by max depth and Russian roulette.

Rendering Flow

Parallel Rendering
Acceleration & Performance
Built a Bounding Volume Hierarchy (BVH) using AABB bounding boxes to reduce intersection cost.
Implemented a tile-based parallel rendering system with dynamic scheduling using atomic operations, improving load balancing across threads.


Stack-based BVH traversal
Fast ray–AABB intersection
Lighting & Global Illumination
Implemented a Blinn-Phong based shading model combined with recursive ray tracing for realistic lighting.
Supports both Path Tracing and Photon Mapping for global illumination, including indirect lighting and caustics simulation.

Blinn-Phong shading

Recursive tracing of reflection
and refraction rays

Photon Map

Caustic Map
Adaptive Sampling
Adaptive sampling is used to optimize sample distribution across the image.
Instead of using a fixed number of samples per pixel, the renderer evaluates the variance of each pixel during rendering. A statistical t-test is applied to determine whether the current samples have converged.
Pixels with high variance (e.g., edges, reflections, caustics) receive more samples, while low-variance regions terminate early. This results in better noise reduction and more efficient use of computation resources.
Low-discrepancy sequences (Halton sequence) are used to improve sample distribution quality.

Taking samples

Sample Distribution
Conclusion
​Key Features:
-
Built a complete ray tracing renderer from scratch in C++
-
Implemented both physical-based lighting and multiple GI techniques
-
Designed a scalable parallel rendering system
-
Applied acceleration structures (BVH) for performance optimization
-
Demonstrated strong understanding of rendering fundamentals and system design


Sample scenes