[HN Gopher] PBRT in Rust
       ___________________________________________________________________
        
       PBRT in Rust
        
       Author : signa11
       Score  : 127 points
       Date   : 2021-01-17 17:02 UTC (5 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | mattgreenrocks wrote:
       | Related: I've read numerous reviews on Amazon about the poor
       | printing quality of the book. Is that true? Is there a better
       | version of it, or should I hope the updated version that is in-
       | progress will rectify those issues?
       | 
       | I'd love to buy the book, but would hate to shell out money for a
       | crappy printing.
        
         | adamnemecek wrote:
         | The fourth version is coming out this summer so consider
         | waiting. As far as print quality I thought I was pretty good.
        
         | sxp wrote:
         | You can read it online at http://www.pbr-book.org/
        
         | TazeTSchnitzel wrote:
         | Amazon has a terrible counterfeiting problem, including for
         | books. It's possible that a third-party seller made a
         | counterfeit, low-quality print of the book and set a lower
         | price that meant they got chosen for the "buy button" by the
         | Amazon algorithm (this has happened to many books). Since the
         | reviews don't distinguish between sellers, you get this
         | problem.
         | 
         | If you buy from a legitimate book store, perhaps this can be
         | avoided?
        
           | mattpharr wrote:
           | No, the actual publisher (Elsevier) printed a batch of
           | terrible quality books. This led to our ending our
           | relationship with them. We are in the midst of finding a new
           | publisher for the 4th edition; not repeating that disaster is
           | of great importance to us...
        
             | mattgreenrocks wrote:
             | Great news. Good luck with that and the fourth edition.
             | Looking forward to it.
        
             | pjmlp wrote:
             | If possible to still have it available as ebook, it would
             | be nice.
             | 
             | Looking forward to the new edition.
        
         | oxymoron wrote:
         | My copy has excellent print quality, as far as I can remember.
        
           | erichocean wrote:
           | Same, it's very very high quality. (I have all three
           | editions.)
        
       | moron4hire wrote:
       | PBR shaders are not trivial. It's incredible to me that they are
       | readily available in all the shader languages, for free. Your
       | common gamer thinks that the game engine is responsible for the
       | quality of graphics in a game. This is hugely untrue. The quality
       | is largely down to how well the art assets have been authored to
       | take advantage of PBR. And that tech is, for all practical
       | purposes, free (in both senses of the word).
       | 
       | My only gripe with modern day graphics documentation is the huge
       | gap in any guidance on building a well-performing rendering
       | pipeline. There are hundreds of tutorial series that get you as
       | far as rendering a single, lit, textured, normal mapped model.
       | But managing multiple models, multiple lights, different types of
       | materials, takes a very different design for resource management
       | and is basically ignored.
       | 
       | The current situation is certainly better than it was 20, even
       | 10, years ago. But that last, missing piece is pretty vital.
        
         | dexwiz wrote:
         | I spent a lot of time reading this literature as an outsider to
         | graphics development this summer. I agree resource management
         | is the real engineering problem and the graphics code itself is
         | the idealized code that is relatively small in comparison.
         | 
         | My conclusion is that resource management across different
         | hardware is a secret sauce that helps individual engines push
         | the limits of the current generation. Listening to interviews
         | with developers, and they rarely talk about a novel lighting
         | formulas. Instead they talk about squeezing in high res
         | textures or more colors. How they managed so many assets or
         | faked a reflection. I imagine the work is incredibly tedious
         | and makes browsers differences look trivial.
         | 
         | Differences between hardware is largely how memory can be
         | mapped between CPU, shared, and GPU memory.
        
           | midnightclubbed wrote:
           | Did you look at Unreal engine? The entire source is open to
           | examine and modify (registration required).
           | 
           | Resource management can be a really big chunk of the core
           | game engine. One reason there is less documentation is that
           | there is generally not one right way to do it. Different
           | games have very different requirements and solutions that
           | work for one game/genre will hurt performance (or team
           | productivity) for another.
           | 
           | One infamous example was the EA Superman game which was
           | developed using the Madden NFL engine. At a very top level
           | that may have been a good idea (battle tested Multiplatform
           | engine with great character rendering). The game requirements
           | of long draw distances, scripted gameplay, and detailed city
           | environments were (very sensibly) not something the engine
           | had been designed for and so became enormous issues for the
           | Superman team.
        
             | moron4hire wrote:
             | > One reason there is less documentation is that there is
             | generally not one right way to do it.
             | 
             | Yes, but the way that most OpenGL tutorials leave you at by
             | the time you're done is distinctly the wrong way.
             | 
             | > Different games have very different requirements and
             | solutions that work for one game/genre will hurt
             | performance (or team productivity) for another.
             | 
             | I wouldn't say different _games_ have very different
             | requirements. Different _genres of games_ have different
             | requirements. We can make a lot of assumptions about flight
             | simulators versus real time strategy games, for example.
             | There doesn 't even seem to be that level of discussion:
             | what the particular tradeoffs are, where, why, and when
             | you'd want to take them.
        
       | fluffything wrote:
       | I wonder if PBRT will ever deliver GPU support.
        
         | 0-_-0 wrote:
         | The latest version v4 [0] has GPU support, some of my
         | colleagues are using it already. Looks like the Rust version
         | linked is based on v3 though.
         | 
         |  _" Support for rendering on GPUs is available on systems that
         | have CUDA and OptiX."_
         | 
         | [0]: https://github.com/mmp/pbrt-v4
        
           | phkahler wrote:
           | >> The latest version v4 [0] has GPU support, some of my
           | colleagues are using it already.
           | 
           | That's good news. I was trying to write a shader recently
           | (not an OpenGL guy) to add the Fresnel term to an otherwise
           | snells-law shader. It's easy to find the math, but hard to
           | find a simple implemnentation. I'd like the full basic model
           | with that and a roughness term with a proper reflectance
           | function (Schlick should be fine) but again, it's hard to
           | find code for what should be a common 50 line shader.
        
         | [deleted]
        
       | [deleted]
        
       | Blikkentrekker wrote:
       | If the classroom is located in Japan, then where are all the
       | other rooms located?
       | 
       | This s vital information, of course.
        
       | adamnemecek wrote:
       | This is only tangentially related, but if you are into Rust & GPU
       | programming you should check out femtovg
       | (https://github.com/femtovg/femtovg) a nanovg Rust port. Right
       | now it supports OpenGL and WebGL, Metal backend is almost done,
       | WebGPU is planned.
       | 
       | You can run it in the browser
       | https://tronical.github.io/femtovg/examples/index.html
       | 
       | Join the discord https://discord.gg/V69VdVu
        
       | sam_bristow wrote:
       | Since it isn't actually spelled put in the linked repo: PBRT is
       | "Physically Based Rendering".
        
         | trox wrote:
         | I always assumed that PBRT is an acronym for "Physically Based
         | Rendering Textbook".
        
         | rootbear wrote:
         | From some long-ago SIGGRAPH presentations, I recall it as
         | "Physically Based Rendering Toolkit".
        
         | mrec wrote:
         | I'm pretty sure the acronym was for "Physically Based Ray
         | Tracing". The original preface to The Book explicitly says that
         | 
         | > _pbrt is based on the ray-tracing algorithm_
         | 
         | I suspect it's moved to "Rendering" in common usage to avoid
         | getting hung up on distinctions like ray tracing versus path
         | tracing versus hybrid techniques.
        
         | detaro wrote:
         | And specifically a reference to a book, which describes an
         | implementation: https://www.pbrt.org/
        
           | tux1968 wrote:
           | And is available to read online legally here:
           | 
           | http://www.pbr-book.org/3ed-2018/contents.html
        
         | navaati wrote:
         | And I'm still looking for the 'T'.
        
           | [deleted]
        
           | sam_bristow wrote:
           | [T]he friends we made along the way.
        
           | foogered wrote:
           | I always thought it was "Techniques"
        
             | mattpharr wrote:
             | (PBRT author, here)
             | 
             | pbrt is the Physically Based Ray Tracer that is described
             | in the Physically Based Rendering book.
        
               | foogered wrote:
               | Thanks for clearing that up!
        
       | erichocean wrote:
       | I think there is a lot of value in doing this kind of exercise.
       | Good work!
        
       ___________________________________________________________________
       (page generated 2021-01-17 23:01 UTC)