JPBRT - a physically-based rendering toolkit in Java

JPBRT Screenshot

JPBRT is a partial Java port of pbrt-v2, the physically-based rendering toolkit presented in the book

Physically Based Rendering, 2nd Edition; From Theory To Implementation
by Matt Pharr and Greg Humphreys; Copyright 2010; Morgan Kaufmann.

I created this port for scientific purposes. The port currently only encompasses a few core classes of pbrt-v2 and a small number of implementation classes. The currently supported statements in .pbrt files are listed here.

For most parts, the port closely follows the book. The biggest deviations are in the parser for the PBRT file format (which is a "man-made" parser in this port and not a generated one), and in the avoidance of global states (such as avoidance of api.cpp), allowing to render multiple scenes simultaneously in the same Java virtual machine.

References to book pages are given in many places in the code, which should help you to find your way around this Java port. References are given to both edition of the books, where applicable.

The source and binary distributions of this port include a graphical user interface which is not part of the original pbrt-v2. I built the user interface on top of the JHotDraw 7 application framework and the Quaqua Look and Feel.

License Terms

Since pbrt-v2 is licensed under the GNU General Public License, JPBRT is also under this license.

I included some additional classes, namely JHotDraw and the Quaqua Look and Feel which are separately available under the GNU Lesser General Public License and/or Creative Commons Attribution.

System Requirements

  • Any operating system that supports Java 6 will do, including but not limited to Mac OS X, Linux, Solaris, Unix and Windows.
  • On some operating systems (esp. Windows) you have to install Java SE 6 before you can install JPBRT (download Java from Javasoft)
  • 1024 MB of RAM
  • 30 MB of free disk space.

Example Scenes

The following scenes have been rendered with JPBRT:


  • The official web-site of the book and of pbrt-v2.
© Werner Randelshofer. All rights reserved.