Preface to the Online Edition

When the first edition of of Physically Based Rendering was released in 2004, it was only available in print form. The second edition, in 2010, featured a Kindle edition in addition to the printed book, though unfortunately all of the cross-referencing and indexing that makes the book useful was lost in translation. Finally the third edition, released in 2016, featured both a good Kindle translation as well as PDF version of the book. While the digital versions of the book showed improvement, we felt that they were still far from their potential.

The heart of Physically Based Rendering is the fact that it’s a literate program. Literate programming, one of Donald Knuth’s many great ideas, is an approach to writing software that focuses more on humans reading source code for illumination than on computers translating source code into executable instructions. Literate programming is about decomposing complex programs into understandable pieces and providing a multitude of ways to cross-reference those pieces and understand what goes into each one of them.

With a literate program presented on paper, each page is dense with auxiliary information, all of it using page numbers for direction. There are indices in the margins with references to the pages where identifiers used in that page’s code are defined, and each code fragment has page numbers denoting where other parts of it are defined and where it is used.

That format has proven itself to be effective, but it’s awfully chatty with the page numbers. Further, it’s a bother to flip through a book in search of a specific page. We always wondered what sort of experience of reading the book we might developed if we targeted computing devices—desktops and laptops, tablets, and maybe even phones—as the main delivery vehicle for the book’s content. No more page numbers everywhere, but instead hyperlinks, taking the reader directly to their destination and easy enough to return from back to where the reader was.

It’s not just navigation that’s improved: modern displays have much better color fidelity and dynamic range than the printed page, and having a computer in the mix allows the possibility of interaction with the books’ illustrations. These are both wonderful characteristics for a book that is all about images and the three-dimensional world.

Over the summer of 2018, we were able to secure the rights to the book text from the book’s publisher; we are extremely grateful for their generosity in returning them to us. With that, we were free to make the choice of whether we’d try this new way of presenting the book’s contents. We took it. Over the course of a month or so of feverish hacking, we implemented a system that translates from the markup language we used to write the book into HTML. You’re reading the result.

This online version of the book corresponds closely to the third edition of Physically Based Rendering. The only changes we made were:

  • updating some of the rendered images used in figures,
  • adding interaction to image viewing,
  • redrawing all of the illustrations,
  • merging some figure sequences that compared multiple renderings of a scene into a single figure, and
  • incorporating errata reported by readers.

The first two changes merit further explanation. Regarding the updated images: one of the challenges with the printed version of the book was making sure that image artifacts like Monte Carlo noise would be visible on the page; we worried that printing would introduce unwanted blur, and we also always worried that somewhere in the production process, a well-meaning person would denoise the images to make them look cleaner, thinking that an improvement. Therefore, we upscaled images that were supposed to show errors with nearest filtering to ensure that errors would make their way through the printing process.

Now, there are no such worries. It was a delight to re-render those images, leaving them now with single-pixel-sized errors.

The second change marks our first step toward interactive exploration of the content: in a Web browser, it’s possible to investigate the details of rendered images and their differences in ways that aren’t possible in a printed book. Most rendered images in the online edition can be zoomed into, viewed full screen, and compared with other images. They are all marked with this icon: . Hover over that icon with your pointer for more details about what’s possible with them.

Road Map

We plan to release updated versions of the book roughly once a year, starting a year or so from now. While the online format makes it possible update the book even more frequently than is possible with a print version, we think that releasing updates at a measured pace will allow for careful review and editing before new text is posted online.

Beyond extending the functionality of pbrt to keep pace with the latest research, we also plan to add more interactive elements to the reading experience in upcoming versions. The Immersive Linear Algebra book by Ström, Åström and Akenine-Möller is an inspiration for what’s possible with this medium.

We will keep previous versions of the book online, with the same URLs as when they were first posted; new versions will be in separate directories. Thus, it’s safe to link to content here without worrying about broken links in the future.

Reporting Bugs

As with earlier versions of the book, please send an email to [email protected] if you see any errors in the text or in the online conversion of it. Note that we often let a few months of bug reports accumulate before processing them; it takes a surprising amount of focus to work through many of them and therefore we usually batch them up. As such, please don’t be offended if it’s some time before we respond to your email; do know that we very much appreciate corrections and suggestions from readers.

We have tested this site with a variety of Web browsers on a variety of platforms, spanning desktop computers to tablets and phones. The site is best viewed on a device that is at least 768 pixels wide; while the Web pages should all render correctly on smaller devices, we haven’t worked to polish the experience on them.

Note: please don’t bother submitting bug reports for missing cross-referencing links in the source code; we know there’s polishing to be done there. Please do report any broken links or incorrect links.

How You Can Help

In addition to informing us of any errors you may find in the book, we’re particularly interested in feedback about the experience of reading the book on the Web. On a related note, we’ve tried to keep accessibility in mind as in the production of the Web site, but would particularly appreciate feedback about that part of the experience.

There are some monetary costs in providing this content online. While bandwidth is fairly inexpensive, it’s not free, especially with so many high-resolution images. Further, in order to maintain a high level of quality, we would like to continue to work with professional copy-editors, proofreaders, and illustrators as we add more content to the book. If you have the ability and the inclination to help support this project financially, we’ve set up a patreon; we’re grateful for any contribution.

Acknowledgments

We’d like to thank everyone who reported errata in the printed third edition of Physically Based Rendering: Alexander Brassel, Andreas Wendleder, Antoine Büsch, Anton Khabbaz, Bojian Wu, Brian Collins, Brian Green, Christophe Hery, Christian Hipp, Daniel McAllaster, Dave Neubelt, Girish Ramesh, Guo Xiaoxin, Hualin Xu, Jeppe Frisvad, Jeremy Cowles, Jiang-Heng Gui (卡卡西), Jiaxuan Lin, Jiayin Cao (曹家音), Jim Price, Jinfeng Guo, Joey Litalien, Jonathan Klein, Jonathon Cai, Kostya Smolenskiy, Martin Fisher, Matthias B. Hullin, Michael Mara, Michael Paul, Mike Day, Nikola Bunjevac, Neil You, Özgür Cerlet, Pascal Grittmann, Pavel Krajcevski, Per Christensen, Peter Kristof, Phillip Anthony Thomas, Rahul Malayappan, Srinath Ravichandiran, Steve Hill, Tim Lobner, Timo Oster, Tom van Bussel, Tzu-Chieh Chang (張子捷), Wei Tao, Wei-Feng Huang, Yue Ren (任悦), Zejian Wang (王 泽健), 郭 勍, and 熊伟. Their corrections have been incorporated in this version. (As noted above, we still have a backlog of errata to work through; we’ll update the online version as we do so.)

A number of open source systems have been instrumental to the development of the online version of Physically Based Rendering. We’d specifically like to thank the developers of Bootstrap, JERI, MathJax, and JQuery. We’d also like to thank Impallari Type for the design of the Domine font that we use for body text; Christian Robertson for the design of the Roboto Mono font that we use for code; and the designers of the Font Awesome fonts.

Thanks to everyone who has reported bugs in the online edition: Brian Green, Brian Swift, Dario Seyb, Haralambi Todorov, Joachim Hodara, Jino Park, Kevin Gibson, Marcos Fajardo, Matthias Moulin, Mauricio Vives, Nikola Bunjevac, Papik Meli, Steve Hoelzer, Trevor Black, and Xuanda Yang.

Finally, special thanks to everyone who has supported us on patreon, including (as of December 8, 2022): abdelhakim deneche, Alain Galvan, Andréa Machizaud, Aras Pranckevicius, Ben Bass, Claudia Doppioslash, Danny Fritz, Dong Feng, Enrico, Farhan Wali, Filip Strugar, Haralambi Todorov, Jaewon Jung, Jason Coleman, Jendrik Illner, Jim Price, Joakim Dahl, Jonathan Stone, KrotanHill, Malte Nawroth, Manish Mathai, Mauricio Vives, Mrinal Deo, Nathan Vegdahl, Pavel Panchekha, Pratool Gadtaula, Ruiwei Bu, Scott Pilet, Shin Watanabe, Tom Hulton-Harrop, Torgrim Boe Skaarsmoen, William Newhall, Yining Karl Li, and Yury Mikhaylov.

License

Although the book is posted online for anyone to read for free, the text of the book remains © Copyright 2004–2018 Matt Pharr, Wenzel Jakob, and Greg Humphreys. As before, the pbrt source code is made available under the BSD license.

The book figures are licensed with a CC BY-NC-SA 4.0 license with the thought that they may be useful when teaching graphics courses.

The online edition of Physically Based Rendering has no ads, no tracking scripts, and no cookies; we don’t even log visitors’ IP addresses.