Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
This branch is 399 commits ahead, 87 commits behind mmp:master.

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

pbrt, Version 3 - Intelligent Indirect Lighting Estimation


More info, demo, and build instructions here:


This repository holds the source code to the version of pbrt that is described in the third edition of Physically Based Rendering: From Theory to Implementation, by Matt Pharr, Wenzel Jakob, and Greg Humphreys. As before, the code is available under the BSD license.

The pbrt website has general information about both the Physically Based Rendering book as well as many other resources for pbrt.

This version has been modified to implement One Shot Radiance.

Example scenes

Over 8GB of example scenes are available for download. (Many are new and weren't available with previous versions of pbrt.) See the pbrt-v3 scenes page on the pbrt website for information about how to download them.

After downloading them, see the file in the scene distribution for more information about the scenes and preview images.

One Shot Radiance specific example scenes will be coming soon.

Building pbrt

A detailed guide for downloading and building PBRTv3-OSR from source is here:

While the original PBRTv3 supports Linux, OSX and Windows, PBRTv3-OSR has only been developed for Linux.

To check out pbrt together with all dependencies, be sure to use the --recursive flag when cloning the repository, i.e.

$ git clone --recursive

If you accidentally already cloned pbrt without this flag (or to update an pbrt source tree after a new submodule has been added, run the following command to also fetch the dependencies:

$ git submodule update --init --recursive

Debug and Release Builds

By default, the build files that are created that will compile an optimized release build of pbrt. These builds give the highest performance when rendering, but many runtime checks are disabled in these builds and optimized builds are generally difficult to trace in a debugger.

To build a debug version of pbrt, set the CMAKE_BUILD_TYPE flag to Debug when you run cmake to create build files to make a debug build. For example, when running cmake from the command line, provide it with the argument -DCMAKE_BUILD_TYPE=Debug. Then build pbrt using the resulting build files. (You may want to keep two build directories, one for release builds and one for debug builds, so that you don't need to switch back and forth.)

Debug versions of the system run much more slowly than release builds. Therefore, in order to avoid surprisingly slow renders when debugging support isn't desired, debug versions of pbrt print a banner message indicating that they were built for debugging at startup time.

PBRT-IILE options

The use of bin/pbrt as launcher is recommended.

Move usage information here:

Additional info (dev)

Additional info and setup, including environment variables


A Machine Learning Global Illumination renderer based on PBRTv3







No packages published


  • C++ 67.4%
  • HTML 23.3%
  • C 6.8%
  • Python 1.5%
  • JavaScript 0.5%
  • CMake 0.3%
  • Other 0.2%