7 ms·
Physically Based Rendering: From Theory to Implementation
- amelius 2y agoWhy don't they link to the physical book?
- jsheard 2y agoThey do, on the main site: https://www.pbrt.org https://www.pbrt.org
- rmrfchik 2y ago[flagged]
- rezmason 2y agoPhysically Based Reading
- mattpharr 2y agoHow would one link to a physical object? If this is what you’re asking: there are (perhaps too discreet) links at the bottom of each page to Amazon and MIT Press to purchase the physical book.
- timeforcomputer 2y agoI think the geo URI scheme might work if you have an exact location for the book.
- taeric 2y agoThis and https://hint.userweb.mwn.de/understanding_mp3/index.html https://hint.userweb.mwn.de/understanding_mp3/index.html are both amazingly fun examples of literate programming that I recommend all of the time.
- WillAdams 2y agoI've been keeping a list of Literate Programs published as books, as well as supporting texts: https://www.goodreads.com/review/list/21394355-william-adams?order=a&ref=nav_mybooks&shelf=literateprograms&sort=date_added https://www.goodreads.com/review/list/21394355-william-adams... I'd be glad to know of any I missed, or of a similar resource for websites.
- granter 2y agoThere is of course Bob Nystrom's https://craftinginterpreters.com https://craftinginterpreters.com
- WillAdams 2y agoThanks! Added it, and put a copy in my Amazon cart...
- taeric 2y agoGreat list! Sibling addition of Nostrom's book is a great addition. Not exactly the same, but close enough that I think it makes sense on the list.
- phkahler 2y agoIs there a standard OpenGL (ES3) shader I can drop in a GPLed application that uses a decent (is there a standard?) BRDF similar to Schlick with red,green,blue, and roughness? I've wanted to add this capability to Solvespace for a while. I did my own implementation with the Fresnel term and it looked OK, but I want something "standard" and correct.
- jms55 2y agoThere is no standard. Filament is extremely well documented: https://google.github.io/filament/Filament.html https://google.github.io/filament/Filament.html glTF's PBR stuff is also very well documented and aimed at realtime usage: https://www.khronos.org/gltf/pbr/ https://www.khronos.org/gltf/pbr/ OpenPBR is a newer, much more expensive BRDF with a reference implementation written in MaterialX that iirc can compile to glsl https://academysoftwarefoundation.github.io/OpenPBR https://academysoftwarefoundation.github.io/OpenPBR Pick one of the BRDFs, add IBL https://bruop.github.io/ibl https://bruop.github.io/ibl, and you'll get decent results for visualization applications.
- Pathogen-David 2y agoYou might find value in the glTF sample renderer https://github.com/KhronosGroup/glTF-Sample-Renderer https://github.com/KhronosGroup/glTF-Sample-Renderer It won't be plug and play since you'd have to pull out the shaders and make them work in your app, but the implementation supports quite a few material variants. The PBR shader implementation starts in source/Renderer/shaders/pbr.frag
- fsloth 2y agoI think most realtime production uses something similar to Disney BRDF when they refer to PBR. https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf https://media.disneyanimation.com/uploads/production/publica... I don't think there is a standard as such that would dominate the industry. It's all approximations to give artists parameters to tweak. IMHO - Being an ex professional CAD person I think PBR is the wrong visual style for most cad though. The main point of shading is to improve the perception of shape and part isolation there. Traditional airbrush based engineering illustration styles are much better reference. So something like Gooch with depth buffer unsharp masking IMHO would be much much more appropriate.
- crispyambulance 2y agoEvery time I see stuff like this it makes me think about optical design software. There are applications (Zemax, for example) that are used to design optical systems (lens arrangements for cameras, etc). These applications are eye-wateringly expensive-- like similar in pricing to top-class EDA software licenses. With the abundance GPU's and modern UI's, I wonder how much work would be involved for someone to make optical design software that blows away the old tools. It would be ray-tracing, but with interesting complications like accounting for polarization, diffraction, scattering, fluorescence, media effects beyond refraction like like birefringence and stuff like Kerr and Pockels, etc.
- amelius 2y agoI once saw a youtube video of a guy who first modeled a pinhole camera in something like Blender3D and then went on to design and simulate an entire SLR camera.
- Tomte 2y agohttps://youtu.be/YE9rEQAGpLw https://youtu.be/YE9rEQAGpLw
- amelius 2y agoThanks, but it was a different video. I remember he had a lot of problems with the pinhole camera because the small size of the pinhole meant that rays had trouble going into the box, so to speak, and thus he needed an insane amount of rays.
- hakonjdjohnsen 2y agoThis, very much this! I do research in a subfield of optics called nonimaging optics (optics for energy transfer, e.g. solar concentrators or lighting systems). We typically use these optical design applications, and your observations are absolutely correct. Make some optical design software that uses GPUs for raytracing, reverse-mode autodiff for optimization, sprinkle in some other modern techniques you may blow these older tools out of the water. I am hoping to be able to get some projects going in this direction (feel free to reach out if anyone are interested). PS: I help organize an academic conference my subfield of optics. We run a design competition this year [1,2]. Would be super cool if someone submits a design that they made by drawing inspiration from modern computer graphics tools (maybe using Mitsuba 3, by one of the authors of this book?), instead of using our classical applications in the field. [1] https://news.ycombinator.com/item?id=42609892 https://news.ycombinator.com/item?id=42609892 [2] https://nonimaging-conference.org/competition-2025/upload/ https://nonimaging-conference.org/competition-2025/upload/
- magicalhippo 2y agoI've mentioned it before, but this book is amazing in the way it covers both the theory in detail, as well as the implementation. There's often a lot of details that matter when implementing something efficiently and well which the theory either hides or is a result of our hardware limitations like floating point numbers. Almost all other programming books I've read cover either the theory in detail and gloss over the implementation details, or goes into a lot of implementation stuff but only cover the easy parts and doesn't give you a good indication of how to deal with the advanced stuff. So, any other books out there that you've read that is like PBR?
- losvedir 2y agoAll right, off topic but I've seen this a bunch lately and the term just really irritates my brain for some reason. What's its origin? "[adverb] based" just feels so wrong to me. Shouldn't that be a noun: "Evidence-based medicine", "values-based", "faith-based", etc. Does "physically based" bother anyone else?
- msk-lywenn 2y agoIt bothers me too, but I’m French. I always assumed it was some corner of the language I don’t know
- curiousObject 2y agoBut what alternative can you suggest which doesn’t break grammar or usage precedents like “physically based”? Physics-based? Reality-based? Physically-derived?
- roelschroeven 2y agoPhysics-based sounds perfectly fine to me. "X-based" to me is equivalent with "based on X". Physics-based = based on physics, evidence-based = based on evidence, values-based = based on values; all perfectly fine. Physically based feels correct in a sentence like "Our company is physically based in New York but we operate world-wide". But what does the "physically based" in "physically based rendering" mean? But I'm not a native speaker, what do I know.
- corysama 2y agoIt is a bit of a silly term. It was made mostly to contrast against the somewhat more adhoc methods that preceded it. The new technique was parameterized more around physical properties where the older ones were more about visual descriptions. This paper from Disney is what kicked off the movement https://disneyanimation.com/publications/physically-based-shading-at-disney/ https://disneyanimation.com/publications/physically-based-sh...
- nxobject 2y ago
- keyle 2y agooff topic: I live in this strange world where I can read the code and understand what it does, regardless of the language(!) but the algorithm for the theory looks approximately like this to me (ijfio) $@ * foiew(qwdrg) awep2-2lahl [1] Is there a good book that goes FROM programmer TO math-wizardry that you would recommend, without falling into the textbooks? Ideally I'd like to be able to read them and turn them into pseudocode, or I can't follow. [1]: e.g. https://pbr-book.org/4ed/Introduction/Photorealistic_Rendering_and_the_Ray-Tracing_Algorithm#eq:rendering-equation https://pbr-book.org/4ed/Introduction/Photorealistic_Renderi...
- jahewson 2y agoScreenshot and ask ChatGPT. Works pretty well.
- gspr 2y agoAs a mathematician by training who does a lot of programming for a living: This is the biggest misconception about math I see coming from programmers. There's frequently a complaint about notation (be it that it is too compact, too obscure, too gatekept, whatever) and the difficulty in picking out what a given "line" (meaning equation or diagram or theorem, or whatever) means without context. Here's the thing though: Mathematics isn't code! The symbols we use to form, say, equations, are not the "code" of a paper or a proof. Unless you yourself are an expert at the domain covered by the paper, you're unlikely to be able to piece together what the paper wants to convey from the equations alone. That's because mathematics is written down by humans for humans, and is almost always conveyed as prose, and the equations (or diagrams or whatever) are merely part of that text. It is way easier to read source code for a computer program because, by definition, that is all the computer has to work with. The recipient of a mathematical text is a human with mathematical training and experience. Don't interpret this as gatekeeping. Just as a hint that math isn't code, and is not intended to be code (barring math written as actual code for proof assistants, of course, but that's a tiny minority).
- timeforcomputer 2y agoI love this book so much. The literate programming style I think inspired from Knuth's cweb, great writing, beautiful high-quality physical book worth buying but also free access to knowledge. The literate-programming style means you are almost immediately applying theory to a practical system, I keep having to take breaks to learn outside math/physics though, but it is self-contained in principle I think.