<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: mattpharr</title><link>https://news.ycombinator.com/user?id=mattpharr</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 12 Apr 2026 16:10:30 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=mattpharr" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by mattpharr in "Distributed Ray-Tracing"]]></title><description><![CDATA[
<p>Minimizing the ray payload for GPU was definitely part of why we didn't add that. (Though it does pain me sometimes that we don't have it in there.)<p>And, PBR being a textbook, we do save some things for exercises and I believe that is one of them; I think it's a nice project.<p>A final reason is book length: we generally don't add features that aren't described in the book and we're about at the page limit, length wise. So to add this, we'd have to cut something else...</p>
]]></description><pubDate>Wed, 22 Oct 2025 18:48:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=45673471</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=45673471</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45673471</guid></item><item><title><![CDATA[New comment by mattpharr in "Physically Based Rendering: From Theory to Implementation"]]></title><description><![CDATA[
<p>How would one link to a physical object?<p>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.</p>
]]></description><pubDate>Fri, 17 Jan 2025 03:24:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=42733768</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=42733768</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42733768</guid></item><item><title><![CDATA[New comment by mattpharr in "4th edition of Physically Based Rendering is now freely available online"]]></title><description><![CDATA[
<p>In the 4th edition, there's no support for RGB rendering--it's always and only spectral.<p>And admittedly the spectral rendering option in earlier editions wasn't great. We didn't always correctly distinguish between illuminants and reflectances, used a fixed binning of wavelength ranges (vs stochastically sampling wavelengths), and had a fine-but-not-state-of-the-art RGB -> Spectrum conversion algorithm. All of that is much better / state of the art in the 4th edition.</p>
]]></description><pubDate>Thu, 02 Nov 2023 17:15:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=38116841</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=38116841</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38116841</guid></item><item><title><![CDATA[New comment by mattpharr in "4th edition of Physically Based Rendering is now freely available online"]]></title><description><![CDATA[
<p>I love the Watt and Watt "Advanced Animation and Rendering Techniques" book as well; it was IMHO the best book on those topics in its time.</p>
]]></description><pubDate>Thu, 02 Nov 2023 17:13:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=38116787</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=38116787</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38116787</guid></item><item><title><![CDATA[New comment by mattpharr in "The 4th edition of Physically Based Rendering is now freely available online"]]></title><description><![CDATA[
<p>The physical book was published 6 months ago, and per agreement with the publisher, the contents are now freely available online as well.<p>The book's blurb:<p>Photorealistic computer graphics are ubiquitous in today's world, widely used in movies and video games as well as product design and architecture. Physically based approaches to rendering, where an accurate modeling of the physics of light scattering is at the heart of image synthesis, offer both visual realism and predictability. Now in a comprehensively updated new edition, this best-selling computer graphics textbook sets the standard for physically based rendering in the industry and the field.<p>Physically Based Rendering describes both the mathematical theory behind a modern photorealistic rendering system and its practical implementation. A method known as literate programming combines human-readable documentation and source code into a single reference that is specifically designed to aid comprehension. The book's leading-edge algorithms, software, and ideas—including new material on GPU ray tracing—equip the reader to design and employ a full-featured rendering system capable of creating stunning imagery. This essential text represents the future of real-time graphics.<p>The author team of Matt Pharr, Greg Humphreys, and Pat Hanrahan garnered a 2014 Academy Award for Scientific and Technical Achievement from the Academy of Motion Picture Arts and Sciences based on impact the first and second editions of the book had on how movies are made. The Academy called the book a “widely adopted practical roadmap for most physically based shading and lighting systems used in film production.”<p>Of the book, Donald Knuth wrote “This book has deservedly won an Academy Award. I believe it should also be nominated for a Pulitzer Prize.”</p>
]]></description><pubDate>Wed, 01 Nov 2023 23:29:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=38106861</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=38106861</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38106861</guid></item><item><title><![CDATA[The 4th edition of Physically Based Rendering is now freely available online]]></title><description><![CDATA[
<p>Article URL: <a href="https://pbr-book.org/4ed/contents">https://pbr-book.org/4ed/contents</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38106860">https://news.ycombinator.com/item?id=38106860</a></p>
<p>Points: 16</p>
<p># Comments: 2</p>
]]></description><pubDate>Wed, 01 Nov 2023 23:29:10 +0000</pubDate><link>https://pbr-book.org/4ed/contents</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=38106860</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38106860</guid></item><item><title><![CDATA[New comment by mattpharr in "Implementing a GPU's programming model on a CPU"]]></title><description><![CDATA[
<p>Also related as far as the programming model: C* on Connection Machines and the C dialect used on MasPar systems in the 1980s.<p>There is some discussion in the ispc paper: <a href="https://pharr.org/matt/assets/ispc.pdf" rel="nofollow noreferrer">https://pharr.org/matt/assets/ispc.pdf</a></p>
]]></description><pubDate>Sat, 14 Oct 2023 14:02:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=37880546</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=37880546</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37880546</guid></item><item><title><![CDATA[New comment by mattpharr in "A Generalized Ray Formulation for Wave-Optics Rendering"]]></title><description><![CDATA[
<p>>  I would expect a shader could do a credible job of emulating all of these.<p>The key is that it is necessary to know the coherence of the light arriving at the surface in order for a shader to accurately model reflection. (See Figure 13 in the paper for an example that shows how this matters.) Otherwise a shader would have to make up a guess about the light's coherence.<p>The main contribution of the paper is a much more efficient approach than was known before for finding light's coherence, even in the presence of complex light transport (multiple reflections, etc), and one that further allows the application of traditional ray-optics computer graphics techniques for sampling light paths through the scene. (For example, previously if one wanted to track coherence, it was necessary to sample light paths starting from the light sources rather than from the camera, as is done in path tracing.)</p>
]]></description><pubDate>Tue, 04 Apr 2023 15:44:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=35441482</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=35441482</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35441482</guid></item><item><title><![CDATA[New comment by mattpharr in "New open source project: Common Lisp 3D graphics system"]]></title><description><![CDATA[
<p>The irony of such a post on a website with the domain name “y combinator”…</p>
]]></description><pubDate>Thu, 04 Aug 2022 04:19:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=32339330</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=32339330</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32339330</guid></item><item><title><![CDATA[New comment by mattpharr in "Uniformly Sample Points in a Disk"]]></title><description><![CDATA[
<p>Rejection sampling is not a good choice here.<p>First, the cost is 2 FMAs * the cost of generating 2 random numbers * the number of rejection sampling iterations. On average, you reject (4-pi)/4 ~= 0.25 of the time. However, if you're running on a GPU in a warp (or the equivalent) of 32 threads, then you pay the cost of the maximum number of rejections over all the threads.<p>The bigger issue is that a direct mapping from [0,1]^2 to the disk, as is described in this tweet, if you have well-distributed uniform samples in [0,1]^2, you get well-distributed samples on the disk. Thus, stratified or low discrepancy samples in [0,1]^2 end up being well distributed on the disk. In turn, this generally gives benefits in terms of error with Monte Carlo integration of functions over the disk.</p>
]]></description><pubDate>Thu, 26 May 2022 03:07:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=31513934</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=31513934</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31513934</guid></item><item><title><![CDATA[New comment by mattpharr in "Boycott Numerical Recipes (2007)"]]></title><description><![CDATA[
<p>FWIW that algorithm for uniform floating-point sampling in [0,1] is actually originally due to: Walker, Alastair J. “Fast generation of uniformly distributed pseudorandom numbers with floating-point representation.” Electronics Letters 10 (1974): 533-534.</p>
]]></description><pubDate>Sun, 03 Apr 2022 17:36:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=30898757</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=30898757</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30898757</guid></item><item><title><![CDATA[New comment by mattpharr in "Beware of fast-math"]]></title><description><![CDATA[
<p>> Are there alternative tools that focus on rewriting code to maximise performance while keeping error below some configurable bound?<p>There are! See followup work by @pavpanchekha and others on "Pherbie", which finds a set of Pareto-optimal rewritings of a program so that it's possible to trade-off error and performance: <a href="https://ztatlock.net/pubs/2021-arith-pherbie/paper.pdf" rel="nofollow">https://ztatlock.net/pubs/2021-arith-pherbie/paper.pdf</a>.</p>
]]></description><pubDate>Sat, 13 Nov 2021 03:35:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=29207158</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=29207158</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29207158</guid></item><item><title><![CDATA[New comment by mattpharr in "Physically Based Rendering Book"]]></title><description><![CDATA[
<p>> I'd be happy to pay the author (note, not donate*) for this corpus online.<p>Lucky for you, we have a Patreon. Looking forward to your support!</p>
]]></description><pubDate>Sun, 18 Jul 2021 16:08:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=27874055</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=27874055</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27874055</guid></item><item><title><![CDATA[New comment by mattpharr in "Physically Based Rendering Book"]]></title><description><![CDATA[
<p>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.)</p>
]]></description><pubDate>Sun, 18 Jul 2021 16:06:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=27874037</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=27874037</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27874037</guid></item><item><title><![CDATA[New comment by mattpharr in "Physically Based Rendering Book"]]></title><description><![CDATA[
<p>Extra pedantic: no, because "physically" ends in "-ly". :-)<p>(Rule 3 here: <a href="https://www.grammarbook.com/punctuation/hyphens.asp" rel="nofollow">https://www.grammarbook.com/punctuation/hyphens.asp</a>)</p>
]]></description><pubDate>Sun, 18 Jul 2021 16:03:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=27874014</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=27874014</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27874014</guid></item><item><title><![CDATA[New comment by mattpharr in "SIMD for C++ Developers [pdf]"]]></title><description><![CDATA[
<p>> It’s good for linear algebra with long vectors and large matrices, but SIMD is useful for many other things besides that<p>The main goal in ispc's design was to support SPMD (single program multiple data) programming, which is more general than pure SIMD. Handling the relatively easy cases of (dense) linear algebra that are easily expressed in SIMD wasn't a focus as it's pretty easy to do in other ways.<p>Rather, ispc is focused on making it easy to write code with divergent control flow over the vector lanes. This is especially painful to do in intrinsics, especially in the presence of nested divergent control flow. If you don't have that, you might as well use explicit SIMD, though perhaps via something like Eigen in order to avoid all of the ugliness of manual use of intrinsics.<p>>  I’m pretty sure manually written SSE2 or AVX2 code (inner loop doing _mm_cmpeq_epi8 and _mm_sub_epi8, outer one doing _mm_sad_epu8 and _mm_add_epi64)<p>ispc is focused on 32-byte datatypes, so I'm sure that is true. I suspect it would be a more pleasant experience than intrinsics for a reduction operation of that sort over 32-bit datatypes, however.</p>
]]></description><pubDate>Tue, 27 Apr 2021 16:28:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=26958140</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=26958140</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26958140</guid></item><item><title><![CDATA[New comment by mattpharr in "PBRT in Rust"]]></title><description><![CDATA[
<p>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...</p>
]]></description><pubDate>Sun, 17 Jan 2021 20:39:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=25814708</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=25814708</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25814708</guid></item><item><title><![CDATA[New comment by mattpharr in "PBRT in Rust"]]></title><description><![CDATA[
<p>(PBRT author, here)<p>pbrt is the Physically Based Ray Tracer that is described in the Physically Based Rendering book.</p>
]]></description><pubDate>Sun, 17 Jan 2021 20:37:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=25814691</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=25814691</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25814691</guid></item><item><title><![CDATA[New comment by mattpharr in "My New Old Apple IIe Computer"]]></title><description><![CDATA[
<p>So -20480 works out to be 0xAFFF.<p>My trusty copy of "What's Where in the Apple", which includes a catalog of where everything is in memory, says that the routine to write the VTOC from its in-memory buffer to disk starts at $AFF8.<p>The VTOC is the volume table of contents (<a href="https://en.wikipedia.org/wiki/Talk%3AApple_DOS#Volume_Table_of_Contents_(VTOC)" rel="nofollow">https://en.wikipedia.org/wiki/Talk%3AApple_DOS#Volume_Table_...</a>), so calling into the middle of that presumably ends up overwriting the VTOC with junk, which would indeed make the disk useless.</p>
]]></description><pubDate>Thu, 14 May 2020 17:22:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=23182412</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=23182412</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23182412</guid></item><item><title><![CDATA[New comment by mattpharr in "Ray Tracing Essentials, Part 1: Basics of Ray Tracing"]]></title><description><![CDATA[
<p>Workin' on it. :-)<p>Note that the third edition came out roughly 5 years ago now, not 10.</p>
]]></description><pubDate>Tue, 18 Feb 2020 20:10:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=22359842</link><dc:creator>mattpharr</dc:creator><comments>https://news.ycombinator.com/item?id=22359842</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22359842</guid></item></channel></rss>