mmp / pbr-book-website Goto Github PK
View Code? Open in Web Editor NEWLicense: Other
License: Other
In the 4th edition, there are references to sections that are available in the online edition of the book https://www.pbr-book.org/4ed/Introduction/How_to_Proceed_through_This_Book#TheOnlineEdition. These sections don't appear to be listed in the online edition however. Are there any substantial differences from the corresponding sections of the thrid edition?
Formula 3.6 for calculating the area of a spherical triangle: Link
I might be misunderstanding but this formula does not make sense to me. Is this a typo? If it is correct, it would maybe help to add some context for deriving the formula (maybe in the Appendix).
Following from the code, the numerator should be dot(a, cross(b, c)).
The equation in this section is wrong and does not fit the given implementation Link.
The "1-" should be moved in front of the fraction (out of the numerator). See also this post on math stackexchange: https://math.stackexchange.com/questions/4838905/coordinate-system-from-a-3d-unit-vector/4839260#4839260
It says "The full contents of the third edition are now freely available online." on https://pbrt.org but the link points to the fourth edition.
Hello!
I was looking through the documentation for participating media for PBRTv3 and PBRTv4 the other day, and noticed that the second scene description example looks wrong:
MakeNamedMedium "mymedium" "homogeneous" "rgb sigma_s" [100 100 100]
MediumInterface "" "mymedium"
Looking at the PBRT code itself, I believe there's a missing "string type"
before the "homogeneous"
, for both the v3 and v4 documentation.
Link references:
V3: https://www.pbrt.org/fileformat-v3#media-world
V4: https://www.pbrt.org/fileformat-v4#media-world
In PBR-book chapter 16.3, when the book is introducing the function PdfLightOrigin
, it says:
<<Return solid angle density for non-infinite light sources>>
The returned value is directly assigned to some_vertex.pdfFwd
. Since pdfFwd
field in the vertex should store density defined in area measure for MIS uses. Some implementation of Pdf_Le
(which returns pdf_pos
and is directly used in PdfLightOrigin
) also indicate this, for example, diffusive area source returns pdf_pos = 1 / Area()
.
Upon first reading this, I directly implemented PdfLightOrigin
to return solid angle density for all light sources, but latter I think it doesn't make any sense... Could this be a mistake? Like, it were copy-pasted from the introduction of infinite light source procedure above?
The google search box at the upper-right corner of the 4th edition of the online book seems to always show results from the 3rd edition.
All that is seen is white image and it also triggers a black screen, not the best experience.
In chapter 15.2 - Sampling Volume Scattering, for H-G phase function sampling:
<<Compute for Henyey–Greenstein sample>>=
Float cosTheta;
if (std::abs(g) < 1e-3)
cosTheta = 1 - 2 * u[0];
else {
Float sqrTerm = (1 - g * g) /
(1 - g + 2 * g * u[0]);
cosTheta = (1 + g * g - sqrTerm * sqrTerm) / (2 * g); // HERE
}
There should be a negative sign in front of cosTheta
RHS.
The code block is not consistent with , and is not consistent with
Float denom = 1 + g * g + 2 * g * cosTheta;
, if no minus sign given, denom
should be 1 + g * g - 2 * g * cosTheta
. According to the ray direction convention in PBRT-v3, all 'incident ray' points outwards, therefore cosTheta
RHS should have a minus sign.correct g = 0.5 | correct g = -0.5 | incorrect g = 0.5 | incorrect g =-0.5 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Hi~ I'm very excited about the release of the 4th edtion! Many thanks to all of the authors and contributors. I'm sure it's an excellent book.
I note that some sections from the 3rd edtion are removed after updating. For example, in Chapter 1~8:
Are there any special reasons for removing them?
It seems like the example scenes for PBRTv3 are unavailable (https://pbrt.org/scenes-v3) due to a HTTP Strict Transport Security (HSTS) violation (currently, via the URL https://pub-49ca6a23a58a46ef9cf5a5b34413a7ba.r2.dev/pbrt-v3-scenes.tar.gz)
Hi,
I was looking at the equations for Fresnel reflectance between a dielectric and a conductor in Eq. 8.3, but cannot find the definition for the term a in the text, which would be needed to implement them.
Only a^2+b^2 is given, but a also appears on its own, so I'm wondering if its definition should be added there, e.g.
$a = \sqrt{\frac{1}{2}\left(\sqrt{(\eta^2-k^2-\sin^2\theta)^2+4\eta^2k^2}+\eta^2-k^2-\sin^2\theta\right)}$
(as in Shirley's Thesis, Eq. 2.6, assuming eta_i = 1)
Thanks for your great work and best regards,
Lukas
Hi, thank you for your sharing. It pretty good. Could I translate this book into Chinese? (uncommercial)
Caption of figure 13.6: Rejection Sampling a Circle. One approach to finding uniform points in the unit circle is to sample uniform random points in the unit square and reject all that lie outside the circle (red points). The remaining points will be uniformly distributed within the circle.
The circumscribed square is 2x2.
The title of the example where that figure is located is: Example: Rejection Sampling a Unit Circle
Changing to unit disk would make it clearer, or even to points inside a unit circle to go with the idea of the inside/outside test.
I really like this amazing work and thank you for your sharing this book!
I have a problem with the implicit form of the hyperboloid:
It is x^2+y^2-z^2=-1, which means that it is a two-sheet hyperboloid.
But the parametric form shows that it is generated by a rotating line passing through points (x1,y1,z1) and (x2,y2,z2),
which should be a one-sheet hyperboloid.
Maybe the implicit form of the hyperboloid should be changed to x^2+y^2-z^2=1 for consistency.
In 1.3.1, the link to Lux Renderer is incorrect. It should be https://luxcorerender.org/, not luxrenderer.net
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.