GPU Path Tracer


GPU Path Tracer

This is the repository accompanying the blog post series “Simple GPU Path Tracing”. It contains all the code that we write throughout the series. Each branch in this repo corresponds to a blog post.

Link to the repo

Here’s a summary of all the episodes in the series :

Simple GPU Path Tracing : Introduction

Simple GPU Path Tracing, Part. 1 : Project Setup

Simple GPU Path Tracing, Part. 1.1 : Adding a cuda backend to the project

Simple GPU Path Tracing, Part. 2.0 : Scene Representation

Simple GPU Path Tracing, Part. 2.1 : Acceleration structure

Simple GPU Path Tracing, Part. 3.0 : Path Tracing Basics

Simple GPU Path Tracing, Part. 3.1 : Matte Material

Simple GPU Path Tracing, Part. 3.2 : Physically Based Material

Simple GPU Path Tracing, Part. 3.4 : Small Improvements, Camera and wrap up

Simple GPU Path Tracing, Part. 4.0 : Mesh Loading

Simple GPU Path Tracing, Part. 4.1 : Textures

Simple GPU Path Tracing, Part. 4.2 : Normal Mapping & GLTF Textures

Simple GPU Path Tracing, Part. 5.0 : Sampling lights

Simple GPU Path Tracing, Part 6 : GUI

Simple GPU Path Tracing, Part 7.0 : Transparency

Simple GPU Path Tracing, Part 7.1 : Volumetric materials

Simple GPU Path Tracing, Part 7.1 : Refractive material

Simple GPU Path Tracing, Part 8 : Denoising

Simple GPU Path Tracing, Part 9 : Environment Lighting

Simple GPU Path Tracing, Part 10 : Little Optimizations

Simple GPU Path Tracing, Part 11 : Multiple Importance Sampling


Here are some renders done with the path tracer resulting from the tutorials : Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image


Here are the scenes that were used for those renders.


Here are the credits for each scene :

Anime Class Room by AnixMoonLight

Salle de bain from McGuire Computer Graphics Archive, Model by Nacimus Ait Cherif

Bedroom from McGuire Computer Graphics Archive, Model by fhernand

Ship in a bottle by Loïc Norgeot

Breakfast Room from McGuire Computer Graphics Archive, Model by Wig42

Breakfast Room from McGuire Computer Graphics Archive, Model by Wig42

Cathedral by patrix

Coffee Maker from cekuhnen

Conference Room from McGuire Computer Graphics Archive, Model by Anat Grynberg and Greg Ward

Fireplace Room from McGuire Computer Graphics Archive, Model by Wig42

List Empire from McGuire Computer Graphics Archive, Model by Morgan McGuire

Rhetorician Maker from engine9

Robo Maker from Artem Shupa-Dubrova

Loie Fuller from Minneapolis Institute of Art, by Joseph Kratina

Sea Keep “Lonely Watcher” by Artjoms Horosilovs

Sea House by Alyona Shek

Sponza from McGuire Computer Graphics Archive, by Frank Meinl, Crytek

Renderman’s Teapot by Dylan Sisson and Leif Pedersen

Vokselia Spawn from McGuire Computere Graphics Archive, Model by Vokselia


Helpful resources that helped creating the tutorials

Physically Based Rendering online edition

Jacco Bikker Blog, especially the posts about BVH that we’re using in our code

A Graphics Guy’s Note

Scratchapixel

Crash Course in BRDF Implementation