I’ve been out of the 3D graphics game for many years and would like to pick it back up. Things have moved on a lot so I’m looking for a good book on modern 3D graphics and the state of the art.
When you say "modern 3D rendering", do you mean modern native APIs like Vulkan, Direct3D 12 and Metal? In that sense, modern GPU programming becomes about scheduling and co-operative buffer management, along with writing programs to be parallel. There's no great guide for this to my knowledge.<p>If you mean everything above the graphics API, e.g. modern lighting and shading techniques, there is a wide range of choices. PBR-inspired material response models are now dominant, and I recommend Naty Hoffman's slide deck as an excellent overview of the subject [0]. I can go into more details here if wanted. Haines's Real-Time Rendering is a pretty good reference. Get familiar with math, geometry and trigonometry. I recommend "3D Math Primer for Graphics and Games" by Parberry and Dunn [1] if you need a refresher.<p>[0] <a href="https://blog.selfshadow.com/publications/s2015-shading-course/hoffman/s2015_pbs_physics_math_slides.pdf" rel="nofollow">https://blog.selfshadow.com/publications/s2015-shading-cours...</a>
[1] <a href="https://www.amazon.com/Math-Primer-Graphics-Game-Development/dp/1568817231" rel="nofollow">https://www.amazon.com/Math-Primer-Graphics-Game-Development...</a>
For rendering rates measured in frames per second, maybe check out "Real-time Rendering", currently on its 4th edition. <a href="https://www.realtimerendering.com/" rel="nofollow">https://www.realtimerendering.com/</a><p>For rendering rates measured in seconds per frame, consider the "Physically Based Rendering Textbook", currently on its 3rd edition. <a href="https://www.pbrt.org/" rel="nofollow">https://www.pbrt.org/</a>
Lots of people here are recommending "Real-time Rendering" by Haines. While an excellent book, it goes into a ton of depth and will be very difficult to read cover to cover. Many topics are irrelevant for someone new to graphics.<p>A much shorter book with breadth is "Foundations of 3D Computer Graphics" by Steven J. Gortler.
For an overview: Real-Time Rendering 4th edition by Haines et al.<p>For advanced techniques:<p>- GPU Pro and GPU Zen series (ed. Engel)<p>- Ray Tracing Gems (Haines et al.)<p>- Unreal Engine tutorials and source code for reference implentation
Me too, please!<p>I want to build (or use) a custom 3D rendering engine that:<p>+ Renders from center of screen, in clockwise spiral outward, if any pixels remain after 15ms I want to drop them (should only be peripheral, I'm OK with that in exchange for constant performance time).<p>+ Can add secondary orthogonal clipping triangles to each triangle, such that the clipping edge could be defined by a curve. Imagine a hexagon (made of 6 triangles), we could easily extend a low poly hexagon into a high resolution circle just by interpolating a curve here.<p>+ My goal after that is to then define an animation pipeline, where it will procedurally generate thousands of fluid dynamic simulations that it then feeds back into itself as a machine learning training set. Once it has associated these slow compute intensive simulations with the model, ideally we can swap in high-resolution smoke/fluid graphics in-game by only using a few low resolution particle "marker" calculations that then trigger substitutions for the model.<p>And much more.<p>I'm OK if this takes me 9 years to make. My target is Rust+WebGL, inspired by the really impressive work of MakePad.<p>I'm also willing to spend money on people who can teach me this, so please contact me if you're an expert on Shaders and low level WebGL experience.
All good suggestions ;)<p>See also<p><a href="https://webgl2fundamentals.org/" rel="nofollow">https://webgl2fundamentals.org/</a><p>And for state-of-the-art check out the Pixar Moana Island Scene and Disney's Hyperion Renderer (although perhaps that is on its way to becoming obsolete!)<p><a href="https://www.yiningkarlli.com/projects/hyperiondesign/hyperiondesign.pdf" rel="nofollow">https://www.yiningkarlli.com/projects/hyperiondesign/hyperio...</a><p><a href="https://www.technology.disneyanimation.com/collaboration-through-sharing" rel="nofollow">https://www.technology.disneyanimation.com/collaboration-thr...</a>
This [1] gives you quite a few options to pick a starting point.<p>A very good practical hands-on bottoms up [2] resource.<p>[1] <a href="https://fabiensanglard.net/Computer_Graphics_Principles_and_Practices/index.php" rel="nofollow">https://fabiensanglard.net/Computer_Graphics_Principles_and_...</a><p>[2] <a href="http://antongerdelan.net/opengl/" rel="nofollow">http://antongerdelan.net/opengl/</a>
Modern 3D graphics has a lot of facets, a good resource as well as engine for PBR rendering is filament and is documented here: <a href="https://google.github.io/filament/Filament.html" rel="nofollow">https://google.github.io/filament/Filament.html</a>
If you're okay with using a game engine I highly recommend Unity 2018 Game Development in 24 Hours, Sams Teach Yourself (3rd Edition) <a href="https://www.amazon.com/dp/0134998138/ref=cm_sw_r_cp_apa_i_tYRXDbYXSPAV2" rel="nofollow">https://www.amazon.com/dp/0134998138/ref=cm_sw_r_cp_apa_i_tY...</a>