CS7490 Advanced Image Synthesis
Sungbae Kim's Renderer Warm-up Exercise
Rendering with PBRT

Images from Physically Based Rendering website

What is PBRT?
  PBRT is a renderer for a graphics book, Physically Based Rendering of Matt Pharr and Greg Humphreys. They provide their renderer, even its source code, to enhance readers' understanding. By practicing what you learn from the book, you can understand rendering algoritms more easily. Furthermore, this renderer is widely used in research because it has flexible structures to add other functions.

How to use it
  Download source code
  You can download source code here. There are several versions for different operating systems, which are Linux, OSX and Windows.
  Documentation
  Unfortunately they don't provide any tutorials for free for the renderer because PBRT is based on a commercial book. Actually their book is the best tutorial! But full descriptions of source code by doxygen are included in source code files.

What kind of renderer
  Rendering type
  This is a kind of ray tracer, and the authors provide a plugin for "Instant global illumination." It doesn't have a shading language nor RenderMan API.
  Modeling type
  PBRT has its own scene description grammars and loads triangle meshes in its grammar or obj format files by the obj-pbrt plugin.

Examples from others
  My rendering machine's spec : CPU - Intel Core2 Duo 2.0GHz, RAM - 2GB
 
From [2]
Rendering time : 40 sec.
View large
From [3]
Rendering time : 45 sec.
View large
In modified PBRT From [5]
Rendering time : 1033 sec.
View large
Simple Examples from me
  My rendering machine's spec : CPU - Intel Core2 Duo 2.0GHz, RAM - 2GB
  PBRT has various ray tracing mode. I have rendered models with them. The model which is used in these examples is from Large Geomoetric Models Archive
  Rendering angels width various surface integrators
  I have some problems to find the exact configuration for each rendering. So there are some artifacts in some rendered images.
 
Direct lighting
Rendering time : 1071 sec.
View large
Input text file
Whited
Rendering time : 153 sec. View large
Input text file
Photon map
Rendering time : 9083 sec.
View large
Input text file
Path tracing
Rendering time : 234 sec.
View large
Input text file
Irradiance cache
Rendering time : 1203 sec.
View large
Input text file
  Rendering angels width translucent materials
  Actually it doesn't work well. First one is from an above example, diamond. There are many artifacts. I guess it is because of the model's complexity. In the case of glass, there is also an artifact, but it is from the size of faces.
 
Diamond
Rendering time : 9820 sec.
View large
Input text file
Glass, photon map, 32 sampling/pixel
Rendering time : 1298 sec.
View large
Input text file
Glass, direct lighting, 128 sampling/pixel
Rendering time : 1080 sec.
View large
Input text file

Conclusion
  PBRT is very good tool to learn rendering algorithms with its book. Also it is widely used in graphics classes and research for its flexibilty to add functions. Many students and researcher are adding new functions to PBRT. But because it is based on a book, if you want to use PBRT, you need to buy a book. So there aren't many online communities to exchange information about the renderer.

Its scene description format is well defined and like stack based state machine. And its detailed parameters are configuable. But setting eye and model positions was very difficult.

I recommend this when you'd like to study and research rendering algorithms.

Reference
- [1] Phycally Based Rendering Website
- [2] Image Synthesis class(CS348B) of Stanford University
- [3] Digital Image Synthesis class of NTU
- [4] PBRT Input File Format
- [5] Josh Wiseman's final project of CS348B