6 ms·
Physically Based Rendering: From theory to implementation (2016)
- tylermw 5y agoNote: the 4th edition of this book will likely be out by the end of this year, and cover GPU pathtracing. (I believe the free web edition will be released a few months after the hardback) The Early Release (still in-development) version of pbrt-v4 can be found here: https://github.com/mmp/pbrt-v4 https://github.com/mmp/pbrt-v4
- aardvark179 5y agoOh excellent. That’s something I will definitely look at. I remember having a lot of fun with some of the pbr exercises many years ago, and haven’t had a chance to look at how to this sort of stuff efficiently on GPUs.
- going_ham 5y agoI am eagerly waiting to buy one. I am extremely lucky that I took stellar graphics courses during my university years. These have by far been the most awesome things that I have done in computer science. The high one can get from having a good render out of light simulation in immensely pleasing. If any of you have time to go through the book, go through it slowly and carefully. There are a lot of nuances that isn't apparent on the first attempt. It is comprehensible to most of us. The authors have exclusively marked the chapters that can be skipped on the first run. No matter how many times one goes through the book, it will still feel like a gem!
- tcook_sucks_xie 5y agoIf you're interested in PBR in addition to this book I've found the filament write up on their method extremely useful too https://google.github.io/filament/Filament.md.html https://google.github.io/filament/Filament.md.html
- pixelpoet 5y agoAhhh, the 2nd rendering bible, together with Eric Veach's thesis: https://graphics.stanford.edu/papers/veach_thesis/ https://graphics.stanford.edu/papers/veach_thesis/ I've spent my entire life studying this stuff and feel extremely lucky on so many levels: that we have these incredible computers which can actually do the computation, that we happen to have such a powerful theory that can model and even predict visual reality, and perhaps most of all, that a single person can learn all this stuff and carry it around with them everyday - it's really changed how I see the world. My deepest thanks go to those who have developed and passed all this on through their papers and books; it's literally what I'm getting the meaning of life from.
- blenderdt 5y agoWhat I also think is amazing is that algorithms improve all the time. For example the Blender Cycles render engine has been rewritten lately. Using the latest knowlegde and algorithms it is now more than twice as fast.
- pixelpoet 5y agoYep, and that design had been presented ages ago[0] already by the Finnish geniuses who basically designed Nvidia's ray tracing tech[1] (as well as the state of the art in GANs[2]), and even implemented in some lesser-known renderers like Indigo Renderer :) These days the most exciting research I think is in path guiding and many-light sampling techniques. [0] https://research.nvidia.com/sites/default/files/pubs/2013-07_Megakernels-Considered-Harmful/laine2013hpg_paper.pdf https://research.nvidia.com/sites/default/files/pubs/2013-07... [1] https://research.nvidia.com/publication/understanding-efficiency-ray-traversal-gpus https://research.nvidia.com/publication/understanding-effici... [2] https://research.nvidia.com/publication/2021-06_Alias-Free-GAN https://research.nvidia.com/publication/2021-06_Alias-Free-G...
- ur-whale 5y agoYeah, except that Cycles focus isn't on accurate physical rendering, but rather on quick and dirty, visually pleasing approximations. Its primary purpose is to be be used by artists for SFX type work, but if you're looking to make really accurate renderings of complex lighting scenes, for e.g. accurate architectural renderings, I would not use cycles and look at luxcore [0][1] instead. [0] https://luxcorerender.org/ https://luxcorerender.org/ [1] https://github.com/LuxCoreRender https://github.com/LuxCoreRender
- blenderdt 5y agoThis book looks really great but also advanced. If you would like to take some first steps into this domain I can recommend Ray Tracing in One Weekend [1]. Not only will you learn how to write a path tracer, but it also touches on things like motion blur and animation. For me it was one of the best starting points because it was very simple to follow. [1] https://raytracing.github.io/ https://raytracing.github.io/
- dddnzzz334 5y agoSo, can I just start reading this book chapter-by-chapter implementing what I learnt in a language of my choice? What is the optimal way to go through this book?
- going_ham 5y agoTotally, you can do it. But the book is so huge that you will miss most of the details. However, you can use it as reference. First follow the ray tracing in one weekend to get the overall idea of path tracing. Then you can start with PBRT. As for language of choice, anything will be fine. The book will build up a solid foundation. The only thing that can stop you is the amount of frustration which you may face when not figuring out the things. It can be confusing at times, but please give your time and let it sink in. After sometimes, you can review it with a completely fresh eyes and you may fix a lot of issues! Goodluck!
- falcolas 5y agoThe one thing to keep in mind is that even though it's written in a literate programming style, it's not in order. So implementation in your own language (say, Rust) is completely possible, but it won't be easy. Especially since the book's code is optimized and idiomatic C++, and that can make it challenging to get past the borrow checker.
- aardvark179 5y agoThe code in book is in C++ and several of the exercises assume you are experimenting with the provided renderer. I seem to remember at least one exercise caused me to learn quite a bit about AVX intrinsics to see if I could beat the compiler at vector math. Rust may be tricky because you will need to render pixels in parallel, and most higher level languages will take a lot of skill to make fast.
- pornel 5y agoThere is a Rust implementation of this book: https://www.rs-pbrt.org/about/ https://www.rs-pbrt.org/about/
- magicalhippo 5y agoOne of the best technical books I've read. A lot of books on the subject are math heavy but lacking in implementation detail, others gloss over the math and implement the easy stuff. This book has a great mix IMHO, going into the math as well as tricky implementation details yet in a very approachable manner. Lots of great times were had as a result of this book.
- antibus 5y agoI agree. I also started this book. But in order to learn, I have to implement it myself. However, if everything is already provided, how not to fall into the trap and just copy and paste everything? Giving you the illusion to you learned it? I read in another book about how to learn, there is something called the illusion of competence. If you passively read something a couple of times, you will think you learned and understood it. But in reality you just recognized it. Without the external triggers and clues you couldn't solve it.
- dannyz 5y agoI always love seeing PBR here. I work in atmospheric science, in particular modelling of radiation in the atmosphere, and the equations that we use are identical to that of PBR. The main difference is that in the atmosphere you are more concerned with processes along the ray, e.g. Rayleigh scattering, clouds, or absorption/emission from trace species in the atmosphere, while in rendering it is all about surface effects.
- ur-whale 5y ago> while in rendering it is all about surface effects. I would have agreed with you back in the 80's. But since then, taking care of atmospheric / volumetric effects in rendering is absolutely essential to rendering realistic scenes, especially in movie SFX. I'm not going to claim that SFX folks care about being physically accurate when doing volume rendering, but they do care a very great deal about clouds fog, subsurface rendering, light rays through mist, etc ...
- ninkendo 5y ago“Physically Based” always seemed to be a grammatical error to me. “Physically” is an adverb, which should modify an adjective or verb. So parsing the phrase, “physically based” implies that “based” is used as an adjective or verb, which would imply that “physically based rendering” is a special form of “based rendering”, which makes no sense. “What kind of rendering is it? Based rendering. What kind of Based rendering? Well, Physically Based, of course.” It should probably instead be “physics based rendering”, right? Edit: english.stackexchange seems to agree, although it’s closed as offtopic: https://english.stackexchange.com/questions/165416/is-physically-based-rendering-grammatically-correct#428679 https://english.stackexchange.com/questions/165416/is-physic...
- going_ham 5y agoInsider fact on why this makes sense. The intention here is not to make "physics based" because we are approximating a lot of things. The idea of having it named "physically based" is because it is as close it can get to reality but not the reality! So we will always be aware that we are just running a simulation not the real thing. The authors also make this claim in the introduction section. [0] [0]: https://www.pbr-book.org/3ed-2018/Introduction https://www.pbr-book.org/3ed-2018/Introduction
- deleted 5y ago[deleted]
- corysama 5y agoFun Facts: The book is a "literate program". You can run the book through a parser and it will give you the compliable working source of the complete renderer it is describing. https://www.pbr-book.org/3ed-2018/Introduction/Literate_Programming https://www.pbr-book.org/3ed-2018/Introduction/Literate_Prog... It is the only book to win an Oscar https://www.oscars.org/news/19-scientific-and-technical-achievements-be-honored-academy-awardsr https://www.oscars.org/news/19-scientific-and-technical-achi...
- svat 5y agoWhen Knuth came up with the term/idea of "literate programming" and the idea of programs as works of literature, in the paper (http://literateprogramming.com/knuthweb.pdf http://literateprogramming.com/knuthweb.pdf) he joked (I think?) that he hoped that, just as there are Pulitzer prizes for literature, there may one day be Pulitzer prizes awarded to computer programs. Well, reality is even stranger than imagination: no computer program has won a Pulitzer prize, but this computer program won an Oscar! Here's a video of the awards ceremony, where Kristen Bell and Michael B. Jordan introduce the recipients, and at 2:12 Matt Pharr comes up and says "needless to say, when we started writing a book we never expected an Academy Award would be the end result of that effort" and thanks Donald Knuth for literate programming: https://www.youtube.com/watch?v=7d9juPsv1QU https://www.youtube.com/watch?v=7d9juPsv1QU Knuth has repeated the joke/remark (https://www.pbr-book.org https://www.pbr-book.org): > “This book has deservedly won an Academy Award. I believe it should also be nominated for a Pulitzer Prize.”
- 2pEXgD0fZ5cF 5y ago> This book assumes existing knowledge of computer graphics at the level of an introductory college-level course, although certain key concepts such as basic vector geometry and transformations will be reviewed here. Had this book on my "to read" list for a while. Given that it appears to be more rigorous than my previous contact with the world of rendering, and since this is just a hobby of mine: What pre-knowledge (topics, math, other sources or books) offers a solid preparation to fully tackle the pbr book?
- dlubarov 5y agoI've only read the first edition, but I'm a bit surprised to read that as I don't recall them assuming any knowledge, except maybe some basic geometry and vector math.
- aardvark179 5y agoI think there has always been some assumption that you know a bit about raster images, and colour and compositing. I remember it being the type of thing that anybody who has been involved in graphics code probably already knows so well that it’s second nature, but I also know these are things not every programmer has internalised.
- aardvark179 5y agoComputer Graphics: Principles and Practice is a fairly reasonable substitute for an introductory graphics course, and having a good understanding of vectors and matrices. Other than that all you really need is the willingness to go and find resources when you don’t feel you fully grasp something. You might also want to try this sort of thing in a study group. You definitely get more out of exercises if you have people to discuss them with.
- magicalhippo 5y agoIn terms of math, you will want to have at least a decent understanding of derivatives and integrals, as well as "basics" like logarithms/exponentiation, trigonometry and sums. While it goes through vectors and such from the bottom up, it does so quite quickly so will probably be a bit steep if you haven't had any linear algebra from before. Partial derivatives show up a lot, probably good if one has some experience from before. Overall though the book doesn't assume a lot as I recall, and goes through the constructions from a fairly basic level and up.
- touisteur 5y agoHaven't seen it mentioned in here: Matt Phar is also behind ispc, a subset of C (?) in the spirit of SPMD, and an optimizing compiler (based on llvm iirc). It can target Intel AVX (up to avx512, I think?) and is quite fun to work with. It can help out if you're in a rut of using intrinsics and cursed cuda kernels. A fresh take on a programming model. I recommend taking a look at the amazing story behind it https://pharr.org/matt/blog/2018/04/30/ispc-all https://pharr.org/matt/blog/2018/04/30/ispc-all . It's very interesting to see not only the pure tech part, but also the disheartening lack of interest at Intel on the subject. Missed opportunity I think... You can feel a lot of fun turning into a lot of... Sadness? in the end. Really a big fan of all things Matt Phar, I hope he has the time of his life at nvidia and that they put him to good use!
- emilfihlman 5y agoThe name has always been an annoyance of mine.