Matt, Greg, and I are super-excited to release a free online edition of the Physically Based Rendering Book with hyperlinked cross-referencing, beautiful SVG figures and equations as well as interactive image comparisons. The details of how all of this came to be are explained in the preface to the online edition. (http://www.pbr-book.org/3ed-2018/Preface_to_the_Online_Editi...)
In section 2.9.1 Quaternions, 4th paragraph reads as if it's missing an equation for the second representation of a quaternion:
A quaternion can be represented as a quadruple [EQ present] or as [EQ missing] , where is an imaginary 3-vector and is the real part. We will use both representations interchangeably in this section.
Really great work. I think this book has been exceptionally valuable to many people over a long period of time, and likely raised the overall level of raytracing knowledge among graphics programmers by a large amount.
Awesome, I just recently bought both the print and eBook editions as I start to dive into DirectX ray tracing, this looks like it will be a great complement!
Thank you for this detailed description. I will definitely take a look and read a few chapters about the light transport.
Just a remark. When I first read the title, I was interested in the approximations you use because you emphasize physics so much in your book and your title. I read the preface and found a suspicious sentence.
When configured to do so, pbrt can compute images that are physically correct; they accurately reflect the lighting as it would be in a real-world version of the scene.
That is not correct. You use a phenomenological model for the light-matter interaction and approximate the effects of light with raytracing. That still produces (almost) photo realistic images for our eyes, but is not "physically correct". A paragraph on the limitations of technology could be worthwhile.
The renderer accurately simulates a good chunk of geometric optics -- light propagation along rays, multiple scattering, specular reflection, refraction, and surface roughness due to random microstructure using state-of-the-art models.
It does not simulate wave-optical effects, polarization, fluorescence, and phosphorescence. Some of them are easy to add (e.g. polarization), others such as wave optics are very challenging to solve in a fully general setting and would make the resulting system impractical to use.
However, that's not the whole story: even when simulating the underlying optics meticulously, a rendering of plane is not going to look photorealistic. Some detail must also go into modeling of the input, which is beyond the scope of the book (though Section 10.6 talks a bit about creating detail with noise functions).
I’d love to hear a bit more about what you mean. What parts of the model do you consider incorrect, and what would it take to be correct? Are there specific things you read in the book, or are you talking about rendering and/or ray tracing generally? Do you have some specific limitations you’re thinking of?
Honestly curious, since as a graphics person and not a physicist, I’ve been under the impression that most of our “physically based” rendering framework these days can be derived from, explained by, or validated against first principles, and that only some of the reflectance functions we use might be described as “phenomenological” (and we might call those “hacky”). And as @wjakob said, there are certainly optical effects we don’t normally see, and don’t spend time computing.
Is it possible to have phenomenological models that are correct? The word means the model hasn’t been derived from first principles, but it doesn’t mean the model is wrong... right?
Personally, I think of the term “physically correct” within the context of computer graphics history. It’s not a technical term, and its meaning historically is referring to what came before now, and maybe not as much of a strict literal absolute as your interpretation(?). The 80’s and 90’s were full of fabulous graphics tricks that are even less physically correct than what we have now. Video games still have lots of them too.
Calling our newer techniques “physically correct” is perhaps kinda like how we call our TVs now “high definition”, or our colors “high dynamic range”. They’re not “high” in any absolute sense of the word, they’re just higher than before. In 10 or 20 years, what we call “high definition” today is probably going to feel like pretty low definition.
Physicists here. I would be careful about calling it "first principles" (you can look up that the meaning of that term within today's physics literature, it's typically called "ab initio", and usually refers to quantum mechanical treatment without a bunch of high level approximations). To a physicist, a first-principles calculation of light-matter interaction would in practice mean starting from a second-quantized form of the electromagnetic field + the lattice of the bulk or surface material + itinerant electrons.
What PBR people are doing is to imagine the matter at small scale looks like a patchwork of many small walls (perfect reflectance or ballistic transport), and assume that light and matter behave and interact the same way in a macroscopic setting, which is further simplified to Snell's law, neglecting all classical wave-like characteristics. Beyond that, obviously, all quantum mechanical effects are neglected (which aren't that exotic, for daily-life examples, think laser pointers or solar panels or crystals).
That is a far cry from an ab initio calculation and is, at best, a very incomplete toy model or cartoon description of light and matter interaction which might barely be enough to deceive human eye for most everyday objects.
@wjakob has already mentioned a few effects not taken into account in your approximation. You can derive raytracing from first principles, e.g. from the Maxwell-equations or even Quantum electrodynamics. But only with massive approximations. I guess you want to say, that you are "physically correct" within the framework (approximation, limitation) of raytracing. That would be Ok here.
Ever since I saw this book being sold, I've been eagerly wanting to read it. The physics-based approach is definitely the way I would prefer to learn any subject, and rendering is just one of the areas I wish I knew more about. Delighted to know that you guys put it online, thank you!
>> To Matt Pharr, Greg Humphreys and Pat Hanrahan for their formalization and reference implementation of the concepts behind physically based rendering, as shared in their book Physically Based Rendering.
>> Physically based rendering has transformed computer graphics lighting by more accurately simulating materials and lights, allowing digital artists to focus on cinematography rather than the intricacies of rendering. First published in 2004, Physically Based Rendering is both a textbook and a complete source-code implementation that has provided a widely adopted practical roadmap for most physically based shading and lighting systems used in film production.
What is the best way to attack this book as a graphics programming beginner (but with plenty of C++ experience)? I saw several people praise it a while back in HN and took a cursory look. It seemed complete and thoroughly explained but missing examples or "checkpoints" along the way where I could turn around and test what I had been building.
These will get you a quick overview and get something rendering. PBRT is a great follow up to really understand the physical underpinnings and get more into the theory of how to do things correctly and efficiently.
The book was originally written in TeX, with lots of macros on top. We hacked together a custom translator (~3k loc, written in golang) that parses the TeX and generates the site.
Then MathJax to render the equations, Bootstrap 4 for some navigation, and jeri.io for the interaction with images.
Thank you, this is the first time I've seen a "literate programming" text presented on the web. It's really well done, and makes up for some of the drawbacks of on-paper LP: being able to expand the definitions of sections (modules?) in-place, and being able to follow function definitions, are both very useful.
I had some plans to present some other such written-in-TeX-literate-programs in HTML; could you perhaps share somewhere your "big hack" that you used here (the translator, the javascript)? Totally ok if you don't want to :) Thanks,
This makes me super happy. I bought the book a few years back and always meant to go through it with rigor to build my own renderer. Now I have that free time but as a digital nomad, I couldn't bring the book. (its up there in size).
Matt, Greg, and I are super-excited to release a free online edition of the Physically Based Rendering Book with hyperlinked cross-referencing, beautiful SVG figures and equations as well as interactive image comparisons. The details of how all of this came to be are explained in the preface to the online edition. (http://www.pbr-book.org/3ed-2018/Preface_to_the_Online_Editi...)
Is there a place to report issues?
In section 2.9.1 Quaternions, 4th paragraph reads as if it's missing an equation for the second representation of a quaternion:
This is what it looks like for me:
https://imgur.com/a/3Mfanma
Nice find!
In general, you can send errata/bugs to authors@pbrt.org, but we got this one. :-)
It looks like an equation that MathJax wasn't happy with. I've got it fixed now and will include that fix in a push to the site in a little bit.
If you want to be listed as something other than "OnACoffeeBreak" in the errata credits, send me an email (matt@pharr.org).
Thanks again!
2 replies →
Fantastic news and amazing work, the site looks beautiful! I love my copy of PBR but it's always been a tad on the heavy side for casual reading :)
The image viewer works brilliantly and the renders are looking gorgeous. Looking forward to spending some hours with this on my iPad later.
Thank you, this is fantastic news! PBR has always been one of my favorite textbooks.
Your road map says:
> We plan to release updated versions of the book roughly once a year, starting a year or so from now.
Out of curiosity, do you guys still plan to release new print editions?
Thanks! We'd love to have a new print edition at some point in the future, but the details of this are yet to be determined.
Really great work. I think this book has been exceptionally valuable to many people over a long period of time, and likely raised the overall level of raytracing knowledge among graphics programmers by a large amount.
Awesome, I just recently bought both the print and eBook editions as I start to dive into DirectX ray tracing, this looks like it will be a great complement!
This is amazing! Thank you.
I still buy physical books rather than e-books, but I always thought that hyperlinks were a great part of a reading experience as well.
Thank you for this detailed description. I will definitely take a look and read a few chapters about the light transport.
Just a remark. When I first read the title, I was interested in the approximations you use because you emphasize physics so much in your book and your title. I read the preface and found a suspicious sentence.
When configured to do so, pbrt can compute images that are physically correct; they accurately reflect the lighting as it would be in a real-world version of the scene.
That is not correct. You use a phenomenological model for the light-matter interaction and approximate the effects of light with raytracing. That still produces (almost) photo realistic images for our eyes, but is not "physically correct". A paragraph on the limitations of technology could be worthwhile.
The renderer accurately simulates a good chunk of geometric optics -- light propagation along rays, multiple scattering, specular reflection, refraction, and surface roughness due to random microstructure using state-of-the-art models.
It does not simulate wave-optical effects, polarization, fluorescence, and phosphorescence. Some of them are easy to add (e.g. polarization), others such as wave optics are very challenging to solve in a fully general setting and would make the resulting system impractical to use.
However, that's not the whole story: even when simulating the underlying optics meticulously, a rendering of plane is not going to look photorealistic. Some detail must also go into modeling of the input, which is beyond the scope of the book (though Section 10.6 talks a bit about creating detail with noise functions).
I’d love to hear a bit more about what you mean. What parts of the model do you consider incorrect, and what would it take to be correct? Are there specific things you read in the book, or are you talking about rendering and/or ray tracing generally? Do you have some specific limitations you’re thinking of?
Honestly curious, since as a graphics person and not a physicist, I’ve been under the impression that most of our “physically based” rendering framework these days can be derived from, explained by, or validated against first principles, and that only some of the reflectance functions we use might be described as “phenomenological” (and we might call those “hacky”). And as @wjakob said, there are certainly optical effects we don’t normally see, and don’t spend time computing.
Is it possible to have phenomenological models that are correct? The word means the model hasn’t been derived from first principles, but it doesn’t mean the model is wrong... right?
Personally, I think of the term “physically correct” within the context of computer graphics history. It’s not a technical term, and its meaning historically is referring to what came before now, and maybe not as much of a strict literal absolute as your interpretation(?). The 80’s and 90’s were full of fabulous graphics tricks that are even less physically correct than what we have now. Video games still have lots of them too.
Calling our newer techniques “physically correct” is perhaps kinda like how we call our TVs now “high definition”, or our colors “high dynamic range”. They’re not “high” in any absolute sense of the word, they’re just higher than before. In 10 or 20 years, what we call “high definition” today is probably going to feel like pretty low definition.
Physicists here. I would be careful about calling it "first principles" (you can look up that the meaning of that term within today's physics literature, it's typically called "ab initio", and usually refers to quantum mechanical treatment without a bunch of high level approximations). To a physicist, a first-principles calculation of light-matter interaction would in practice mean starting from a second-quantized form of the electromagnetic field + the lattice of the bulk or surface material + itinerant electrons.
What PBR people are doing is to imagine the matter at small scale looks like a patchwork of many small walls (perfect reflectance or ballistic transport), and assume that light and matter behave and interact the same way in a macroscopic setting, which is further simplified to Snell's law, neglecting all classical wave-like characteristics. Beyond that, obviously, all quantum mechanical effects are neglected (which aren't that exotic, for daily-life examples, think laser pointers or solar panels or crystals).
That is a far cry from an ab initio calculation and is, at best, a very incomplete toy model or cartoon description of light and matter interaction which might barely be enough to deceive human eye for most everyday objects.
7 replies →
@wjakob has already mentioned a few effects not taken into account in your approximation. You can derive raytracing from first principles, e.g. from the Maxwell-equations or even Quantum electrodynamics. But only with massive approximations. I guess you want to say, that you are "physically correct" within the framework (approximation, limitation) of raytracing. That would be Ok here.
FWIW, the book gives a more detailed description of the assumptions/limitations of pbrt here: http://www.pbr-book.org/3ed-2018/Color_and_Radiometry/Radiom...
E.g. it doesn't handle things like polarization, interference or fluorescence, assumes light is instantaneous, etc.
All models are wrong. "Physically-based" is rather inspecific as a description, but it's the term people are familiar with.
Ever since I saw this book being sold, I've been eagerly wanting to read it. The physics-based approach is definitely the way I would prefer to learn any subject, and rendering is just one of the areas I wish I knew more about. Delighted to know that you guys put it online, thank you!
This is the book that won Matt Pharr, Greg Humphreys and Pat Hanrahan an Academy Award
https://www.oscars.org/sci-tech/ceremonies/2014
>> To Matt Pharr, Greg Humphreys and Pat Hanrahan for their formalization and reference implementation of the concepts behind physically based rendering, as shared in their book Physically Based Rendering.
>> Physically based rendering has transformed computer graphics lighting by more accurately simulating materials and lights, allowing digital artists to focus on cinematography rather than the intricacies of rendering. First published in 2004, Physically Based Rendering is both a textbook and a complete source-code implementation that has provided a widely adopted practical roadmap for most physically based shading and lighting systems used in film production.
There is a Patreon to help pay for the servers https://www.patreon.com/pbrbook
What is the best way to attack this book as a graphics programming beginner (but with plenty of C++ experience)? I saw several people praise it a while back in HN and took a cursory look. It seemed complete and thoroughly explained but missing examples or "checkpoints" along the way where I could turn around and test what I had been building.
One option is to dive in with Peter Shirley's ray tracing intros linked at the top of http://www.realtimerendering.com/raytracing.html
These will get you a quick overview and get something rendering. PBRT is a great follow up to really understand the physical underpinnings and get more into the theory of how to do things correctly and efficiently.
Fantastic! Thanks for the suggestion.
The new Real Time Rendering book is good. Also, the sidebar of https://www.reddit.com/r/opengl/ has good tutorials
what technology have they used to create the website? I'm guessing some pandoc to html workflow plus a static site engine?
It's pretty much a big hack.
The book was originally written in TeX, with lots of macros on top. We hacked together a custom translator (~3k loc, written in golang) that parses the TeX and generates the site.
Then MathJax to render the equations, Bootstrap 4 for some navigation, and jeri.io for the interaction with images.
Thank you, this is the first time I've seen a "literate programming" text presented on the web. It's really well done, and makes up for some of the drawbacks of on-paper LP: being able to expand the definitions of sections (modules?) in-place, and being able to follow function definitions, are both very useful.
I had some plans to present some other such written-in-TeX-literate-programs in HTML; could you perhaps share somewhere your "big hack" that you used here (the translator, the javascript)? Totally ok if you don't want to :) Thanks,
Awesome work guys! http://www.pbr-book.org/3ed-2018/Introduction/Photorealistic... I am going to read this part when I get home.
This makes me super happy. I bought the book a few years back and always meant to go through it with rigor to build my own renderer. Now I have that free time but as a digital nomad, I couldn't bring the book. (its up there in size).
Thanks for putting this online, my physical copy is currently buried in storage and I’ve been dying continue reading it!
I got my physical copy a few months ago, glad to see more people having access to this great resource now!
Thank you so much. I love my physical copy but can't always take it with me places.
This is amazing news. Congratulations and thanks so much for this present to humanity.
Wooow thanks guys!