Skip to main content

PBRT v4

v4.0.0

Reference implementation of the physically based rendering techniques described in the PBR textbook

Path TracingRay Tracing
C++
BSD-2-Clause
Active
GPU: CUDA, OptiX
CPU
Stars
4.8k
Latest Release4.0.0
Release DateMar 2023
Contributors85
Forks640
At a Glance
Technique
Path Tracing, Ray Tracing
Language
C++
License
BSD-2-Clause
Platforms
Linux
macOS
Windows
GPU Support
Yes (CUDA, OptiX)
CPU Support
Yes
Scene Formats
PBRT
Output Formats
EXR, PNG
First Release
Jul 2004
Latest Release
4.0.0 — Mar 2023
Best For
Learning physically based rendering, academic research, and as a reference implementation for comparing rendering algorithms

Development Activity

Commit activity data is not available for this renderer.

4.8k
Stars
4.0.0
3 years ago
85
Contributors
View on GitHub

Overview

Best for

Learning physically based rendering, academic research, and as a reference implementation for comparing rendering algorithms

Not ideal for

Production rendering workflows requiring artist-friendly tools, diverse file format support, or maximum render performance

Strengths

  • Direct companion to the most authoritative textbook on physically based rendering — every algorithm has a corresponding book chapter
  • GPU rendering via CUDA and OptiX with a wavefront path tracing architecture designed for massively parallel execution
  • Comprehensive support for participating media, spectral rendering, and subsurface scattering with physically accurate models
  • Clean BSD-2-Clause license enables both academic and commercial derivative work without restrictions
  • Exceptionally well-documented codebase that serves as the de facto teaching tool for graduate rendering courses

Limitations

  • Only reads its own PBRT scene format — no native support for glTF, OBJ, USD, or other common interchange formats
  • No built-in GUI or interactive preview — strictly command-line workflow for rendering
  • Performance is not competitive with production renderers like Cycles or LuxCore for large, complex scenes
  • Community is primarily academic with fewer plugins, integrations, and material presets than artist-oriented tools
  • Scene authoring requires hand-editing text files or using third-party exporters, limiting accessibility for non-programmers

Background

PBRT (Physically Based Rendering Toolkit) is the companion renderer to the seminal textbook Physically Based Rendering: From Theory to Implementation by Matt Pharr, Wenzel Jakob, and Greg Humphreys. Now in its fourth edition, PBRT v4 has been substantially rewritten to support GPU rendering via CUDA and OptiX, wavefront path tracing on the GPU, and modern C++17 practices.

PBRT serves as both a practical renderer and an educational reference. Every algorithm implemented in PBRT is explained in detail in the accompanying textbook, making it the gold standard for learning physically based rendering. The v4 rewrite introduced GPU support through a wavefront execution model suitable for massively parallel architectures, improved memory efficiency through better data structures, and comprehensive support for volumetric rendering, spectral light transport, and subsurface scattering.

While not designed for production use — it prioritizes clarity and correctness over raw performance — PBRT is widely used in academia as a reference implementation, as a starting point for research renderers, and as the teaching vehicle for graduate-level rendering courses worldwide. Its influence on the field is unmatched: most modern physically based renderers trace their design lineage to concepts introduced or codified by the PBR book.

Quick Start

git clone --recursive https://github.com/mmp/pbrt-v4 && cd pbrt-v4 && cmake -B build && cmake --build build

Community & Resources

Community

Tutorials & Resources

Performance Benchmarks

Avg Render Time

3m 24s

Avg Memory

2.0 GB

Avg PSNR

41.5 dB

Avg SSIM

0.9978

Render Time by Scene

cornell box1m 23s
classroom3m 18s
sponza8m 7s
Fastest: cornell box (1m 23s)Slowest: sponza (8m 7s)

Image Quality Metrics

ScenePSNRSSIMMemorySPP
cornell box42.0 dB0.99861.3 GB1,024
classroom41.7 dB0.99762.3 GB1,024
sponza40.3 dB0.99623.3 GB1,024

3 scenes tested on High-End Desktop, Mid-Range Laptop

View all benchmarks