A JavaScript 3D library that makes it easier to build and render 3D scenes in the browser with WebGL and WebGPU.
mmp/pbrt-v4
pbrt-v4 is the physically based ray tracer from the 4th edition of the Physically Based Rendering book, written in C++.
- Stars
- 3,732
- Forks
- 648
- Open issues
- 97
- Last commit
- last month
What is it?
pbrt-v4 is the source code of pbrt, a physically based ray tracer that accompanies the fourth edition of the book Physically Based Rendering: From Theory to Implementation. It uses spectral rendering, performing computations on point-sampled spectra and limiting RGB color to scene inputs such as image textures and final output.
The release adds a volumetric path integrator based on null-scattering, light BVH sampling for many-light scenes, and redesigned BxDFs and materials modeled on physical scattering processes. A GBuffer film exports per-pixel position, normal and albedo, which is useful for denoising and ML training. The project also includes an upgrade tool for pbrt-v3 scene files.
An optional GPU path runs on CUDA and OptiX on NVIDIA hardware, and the build uses CMake with C++17. Rendering progress can be streamed to the tev or hdrview image viewers.
Key features
- 01Spectral rendering with point-sampled spectra
- 02Volumetric path integrator based on null-scattering
- 03Light BVH sampling for many-light scenes
- 04Redesigned BxDFs and materials tied to physical scattering
- 05GBuffer film exporting position, normal and albedo for denoising
- 06Optional CUDA/OptiX GPU rendering path
Use cases
- Producing physically accurate images from 3D scenes in research or film pipelines
- Studying the implementation of modern rendering algorithms alongside the PBR book
- Generating training data such as normals and albedo for denoisers or ML models
- Rendering scenes on NVIDIA GPUs with the OptiX denoiser
Quick start
- 1
Clone the repository with submodules
git clone --recursive https://github.com/mmp/pbrt-v4.git - 2
Build the code with cmake (release build by default)
- 3
Render a scene by running pbrt on a scene file
pbrt --display-server localhost:14158 scene.pbrt
Things to know
- The GPU path works only on NVIDIA GPUs with CUDA and OptiX.
- Building requires a C++17 compiler and cmake, and the repository needs git submodules fetched.
Topics
FAQ
- What is pbrt-v4?
- pbrt-v4 is the physically based ray tracer from the 4th edition of the Physically Based Rendering book, written in C++. pbrt-v4 is the source code of pbrt, a physically based ray tracer that accompanies the fourth edition of the book Physically Based Rendering: From Theory to Implementation. It uses spectral rendering, performing computations on point-sampled spectra and limiting RGB color to scene inputs such as image textures and final output.
- Is pbrt-v4 free to use? What license does it have?
- pbrt-v4 is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is pbrt-v4 still maintained?
- Updated within 6 months. The last commit to pbrt-v4 was on Sep 8, 2026.
- What can I use pbrt-v4 for?
- Producing physically accurate images from 3D scenes in research or film pipelines Studying the implementation of modern rendering algorithms alongside the PBR book Generating training data such as normals and albedo for denoisers or ML models Rendering scenes on NVIDIA GPUs with the OptiX denoiser
- How do I install pbrt-v4?
- Clone the repository with submodules: git clone --recursive https://github.com/mmp/pbrt-v4.git Build the code with cmake (release build by default) Render a scene by running pbrt on a scene file: pbrt --display-server localhost:14158 scene.pbrt
- Where can I get pbrt-v4?
- The source code and installation instructions are on GitHub: https://github.com/mmp/pbrt-v4
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
OpenToonz is an open-source, full-featured 2D animation software derived from Studio Ghibli's customized Toonz Studio.
Dear ImGui is a bloat-free, dependency-light immediate-mode GUI library for C++ aimed at debug, tool and game-engine interfaces.
Self-hosted game streaming host that lets Moonlight clients stream games from your own PC or server with hardware or software encoding.
A retro game engine for Python that lets you make pixel-art games with a fixed palette and low-resolution screen.
A native, extensible desktop command palette for launching apps, clipboard history, snippets, file search and more, compatible with Raycast extensions.