Hacker News new | past | comments | ask | show | jobs | submit login
Physically Based Rendering Book (pbr-book.org)
119 points by jasim on July 18, 2021 | hide | past | favorite | 44 comments



This book is excellent, and it's aimed at relatively advanced practitioners.

> This book assumes existing knowledge of computer graphics at the level of an introductory college-level course

For people looking for such an introduction, I've written Computer Graphics From Scratch, available in its entirety here: https://gabrielgambetta.com/cgfs (and also from https://nostarch.com/computer-graphics-scratch)


Thanks again for your book, I preordered it and started working on it a few days ago! Enjoying it so far.

Would you say that your book and a slight math background (advanced Linear Algebra and Calculus), but no further experience with graphics programming are enough preparation to dive into something like PBR?


Glad you're enjoying it!

I'm not a PBR expert, but I guess that background should be enough to go for it - and that you wouldn't have much trouble filling up the knowledge gaps you might encounter, if any.


> This book assumes existing knowledge of computer graphics at the level of an introductory college-level course

It also assumes existing knowledge of calculus and physics.


I can't recommend this book enough.

For anyone looking for a more gentle introduction into ray tracing, I'd also suggest The Ray Tracer Challenge (http://www.raytracerchallenge.com/) -- it walks you through building a simple recursive ray tracer in a test driven development manner.

I started with the RTC, and moved on to PBR - and converting my recursive tracer into a unidirectional path tracer was quite an adventure -- one that continues to this day.


Mentioned elsewhere, there is also Peter Shirley's "Ray Tracing in One Weekend" series:

https://raytracing.github.io/


> January 15, 2021: A fourth edition is in the works. Progress on the text is coming along well and the source code is available on github. We expect that the printed version of the book will be out in Summer 2021.

https://www.pbrt.org/


Yeah, about that prediction... Progress continues, but Fall 2021 is more likely for an online edition and then printed copies in the first half of 2022. (I suppose we should update the website.)


Thanks for the clarification. Cool to see that you are on here too :)


Damn, for a second I thought post was because the fourth edition is out. Damn you OP! :)


Why the dead-tree?

Can we not try monetization of your book straight on the web instead, right here on your website? As developers we should lead the change away from pulp to electronic screens…

Edit: I mean, I'd be happy to pay the author (note, not donate*) for this corpus online.


Should we? I spend my life staring at electronic screens, it’s nice to not do so for reading round, or sit outside and do so.

Maybe it’s an age thing, I used to have a lot more tolerance for this before my 30’s. Kindles are fine, but for leisure/fiction reading, or anything technical - it’s nice to be able to flip back/forth.


Every time someone posts a book on here someone shows up to bitch about the format and modernization- you should see the crap the 'Game Programming Patterns' guy gets.


I agree with you on Kindles; they're certainly worse than having books on the open web, even if it were to be paid content.

I also agree with you that page turning experience is _the_ native control of a book and that it adds to the saccadic perception of moving forward with time.

B.t.w, I made this demo for exactly the reasons you mentioned, and I'm an older developer too!:

https://bubblin.io/book/a-florida-sketch-book-by-bradford-to...

> Should we? I spend my life staring

We probably should reduce felling trees for content that's read just once and then it goes outdated. I know a lot pulp-cultivation ambassadors say that it is a renewable resource, but in practicality pulp farming is not entirely renewable.

Cultivation takes place where an old forest once stood and was razed to the ground; and that loss of natural habitat is incalculable in costs–and to what end? A lifeless object on our bookshelf (which too is another dead tree) to show off with more outdated technical content?


That demo isn't novel, I've seen that exact same skeuomorphic design in ereaders over the past couple decades. It's pretty, but it's not terribly useful to flip one page at a time in anything but a novel you intend to read linearly, and where you often only need to flip back one or two pages when confusion sets in (wait, which city are they in now? who's speaking in this part of the dialog?). It's hardly a useful interface for reference or technical material, only a pretty one.

Edit: To be more constructive:

Physical reference books are often accessed in a non-linear fashion, and often not alone. But let's forget that second part and focus on non-linear.

How do people take a physical reference book and provide themselves with good non-linear access? Bookmarks, tabs, dog eared pages, margin notes producing cross-references if absent from the text proper. And they may even sometimes pull out all the bookmarks and tabs and start over to create an entirely different (for their use-case) reference text (by "hiding" irrelevant information). That's what needs to be recreated in an e-reader, not page flipping, to be useful for reference texts.

As a point of frustration I recently experienced, I was running a TTRPG game and had a PDF with bookmarks to various classes (the ones players were using) and spells (ones I was using) and combat mechanics (what I was running). I later used the same PDF as a player, and found that I had too many bookmarks that made it hard for me to find exactly what I wanted. If I just added more bookmarks relevant to me as a player (playing a class not in the game I was running) it would add extra info to the DM version of the reference, and all the DM bookmarks were largely useless to me as a player.

What I needed was a way to get two views of the same underlying text, with different sections emphasized or elided for my differing situations. Provide that in an ereader without having to make a copy of the PDF and manually mangle it (which I've done too) but rather just an overlay on the existing text and it'll provide a much better experience and start competing, realistically competing, with dead tree reference and technical books.

Of course, the inability to (without a large display or large number of displays) view multiple texts side-by-side is another problem. I don't want 10 e-readers (a guess at the largest number of texts I needed to view in parallel). I have my iPad, laptop, and a Kindle that I already sometimes use simultaneously rather than printing material off or buying physical books. It's painful to use things that way and a much harder to solve problem without insisting that people buy more and more hardware. Which becomes obsolete quickly, probably faster than most reference and technical books become obsolete.


Wow. Thank you for taking the time to respond at length to the demo I shared. This will help me improve/improvise it a little more!

Overall, there’s a lot of work before a book like this goes native on the web. Better still, it the experience is standardized across vendors—which I have attempted as far as possible with the available tech. I mean scrolling is skeuomorphism off of the physical scrolls too, but that’s the point of start for a root problem here. Native books have never happened on the web, and that’s one main reason why people continue to buy the dead-tree; the lack of availability, bad experience and all.

> Physical reference books are often accessed in a non-linear fashion, and often not alone. But let's forget that second part and focus on non-linear.

The demo does implement random access via page numbers on the tail of the url. This affords both random access i.e non-linear reading and referential accessibility [1].

https://bubblin.io/blog/referential-accessibility


> I'd be happy to pay the author (note, not donate*) for this corpus online.

Lucky for you, we have a Patreon. Looking forward to your support!


Please share! And truly, thank you so much for writing the book. I have a physical copy, though I mostly read it online.

I've never been an academic, and have struggled in school, so higher mathematics has always been a bit out of my reach.

This book has been the driving force behind learning trigonometry, calculus, linear algebra, sampling theory, and I'm sure much more.

In turn, those learnings have made AI/ML material more accessible to me as well.

I'm very much looking forward to the 4th edition!


'as developers' don't speak for me, if you want to sell a book in a different way do it yourself ffs

As a developer I'm buying the physical copy, like I did the previous revision ( which is great btw )


What's wrong with books? They last a very long time and they don't require any electricity to be able to read them? Do you have studies that have compared the environmental impact of both?


1. They last a long time has zero significance because the content is outdated in a year or less.

2. You don't need studies to know the difference between a natural habitat and cultivated land. And that the former is non-renewable.

It looks like this comment is coming from one of those pulp-farming ambassadors spreading misinformation/whataboutism. This happens every time when a case for online publishing with direct payments to authors is put forward. Ha!


1. This isn't a fast moving web framework, the underlying mathematics are forever. But maybe the code implementation gets outdated after a couple of years.

2. You need something to base your opinion on though, preferably peer-reviewed scientific studies.

You read way too much into my comment.


You need a peer-reviewed research to know the difference between natural habitat and cultivated land?


I refer to my original comment, not the one where you moved the goal posts. Environmental impact is of course much more than just the difference between cultivated land and natural habitat, almost everything we as humans do has an impact on the natural habitat.


a first-edition copy of this book would still be a worthwhile read.


Did you see that the link here is to a fully online version already?


I strongly prefer physical book over digital ones. With an ebook-reader it's fine for novels but technical text books can't be replaced (yet).


Something not immediately clear to me is how to use the book. I see it uses a literate programming format, and it seems very well done. But I don’t see (in the first couple of chapters anyway) any code to show intermediate results. Am I supposed to work through the whole book before getting something that I can see? I’m sure I’m missing something.


It definitely requires a bit of jumping around. The online version is a godsend in this regard, because it's all hyperlinked.

It also has an index of all identifiers, which I find quite helpful, and the full source code is available as well.

After you spend some time with the book, how the chapters are laid out make much more sense (at least, that's my experience)


Even with the background knowledge from Peter Shirley's "Raytracing in one weekend" series it's very hard to get into this book.


Gotcha, I’m glad I’m not the only one.


I use it as a reference for various parts of a path tracer. One can also use it to help develop shaders in real-time rendering. It’s probably most rewarding if you already made a toy path tracer or two and you wonder how to do it “properly”.


While physically based rendering is a very nice idea, one has to be careful not to turn it into an ideology.

Specifically, in production, you very often have a situation where the artists wants to produce a specific effect and are simply prevented to do so by the rendering system because it strictly adheres to how light would behave in the real world.

This very severely constricts creative freedom and is one of the reason why these types of renders are used sparingly in actual VFX production.

The luxcore PB render, which someone mentioned in another comment, is a very good example of what I'm talking about: produces really nice realistic images, but it is darn near impossible to get it to do what you want when tweaking a shot.


I truly adore physically based rendering.

Seeing the concept become adopted in modern video games over the last couple generations has been an absolute joy. I look forward to replaying games and seeing the progression of the field.

Just look at the difference from

Gears of War -> Arkham Asylum -> Mass Effect -> Dragon Ball FighterZ -> Fortnite

That's all the same engine. And it shows the shift from the "old way" to physically based techniques.

On Playstation, you can show a similar progression

Uncharted 1 -> Uncharted 2 -> Uncharted 3 -> Last of Us -> God of War -> Uncharted 4 -> Last of Us 2

PBR really starts showing up in U3 and Last of Us, but kicks off big time in God of War on the PS4.


I LOVE this book - this is one of those books I recommend reading just for the joy of programming. It explains the concepts so well that you can hop in even without a background in the subject!

Back in college I ended up making my own tracer after reading this for fun, implementing features and tweaking it until I got bored.

Here's some pictures if you're curious to see how it evolved as I made my way through the book:

https://imgur.com/a/e5kgZ


I remember the Luxrender renderer was based on this book.


Is this book for real-time or offline rendering?

Because I think PBR is used in both now days


PBR describes an offline render. Online renderers will use the same principles for materials -- modelling them as Bidirectional Scattering Distribution Functions (BSDF), though I'm not really sure how platforms like unreal implement them in the absence of full path tracing. I'd love to learn more in that regard.


From the user perspective, they are implemented as various texture maps to define base color, roughness, metalness and specular. Base color map is as it sounds. Roughness map is a map that goes from full reflective to dull. In practice it can be calculated similar to and stored the same as Mip Map. Metallic map can go from mirror like to non mirror in degrees. The lesser used Specular map lets you control the specular light property in a non metallic surface. From non reflective to full reflective. Specular is called Cavity in the linked document and also explained as typically an Ambient Occlusion map with a very short distance. "Used for small-scale shadowing."

From the real-time light equation that runs in the GPU shaders, all the details can be found in the 2013 Siggraph talk by Brian Karis of Epic Games. https://cdn2.unrealengine.com/Resources/files/2013SiggraphPr...

The shader code is on Github, however you have to sign up first to get access.


The chapter on Monte Carlo stuff is pretty good.



Pedantic, but: Shouldn’t the title be “Physically-Based Rendering”?


Extra pedantic: no, because "physically" ends in "-ly". :-)

(Rule 3 here: https://www.grammarbook.com/punctuation/hyphens.asp)


If you want to be strict, maybe the book title should be "physics-based". If we are a bit more liberal, we can accept "physically based". "Physically-based" might be the most wrong of the three.

https://english.stackexchange.com/questions/165416/is-physic...




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: