This was a significant part of the last year of my life.
I'm super glad it's finally getting out to readers. I think that Adam, Ingo and Peter did a fantastic job bringing all of this together over the course of the last 18 months.
Not just "free" as in beer; free as in "Creative Commons Attribution 4.0 International License (CC-BY-NC-ND)"! You can put the book up on your own web site! They're a little confused, though; they specify "Creative Commons Attribution 4.0", which is CC-BY, but also "CC-BY-NC-ND", which is Attribution-NonCommercial-NoDerivatives; and then they explain, "allows you to freely copy and redistribute any chapter, or the whole book, as long as you give appropriate credit and you are not using it for commercial purposes", which would be CC-BY-NC (Attribution-NonCommercial).
The actual book download link seems to be https://link.springer.com/content/pdf/10.1007%2F978-1-4842-7... for now (884 pp., 262 MB!, md5sum 0e23ade6512d9a3ffa97a17d45521563). At the moment, the book itself claims to be CC-BY-NC-ND on the colophon page, but then later repeats the above confused text from the web page with its three conflicting licenses.
The book content is SUPER SWEET. :)
When I was a kid I was really fascinated with POVRay, but my 286 was too slow to make it very much fun. And I sucked at programming. A few years ago I wrote http://canonical.org/~kragen/sw/aspmisc/my-very-first-raytra... and it was amazing. 200 lines of C, one night of hacking, was enough to get from floating-point arithmetic, scanf, and putchar, to gorgeous glowing shining spheres. And it took under a second. On my netbook. Fucking magic.
But the techniques in this book enable orders of magnitude more amazing stuff than that!
If you're writing this stuff in GLSL instead of C, aside from the speed, you can save about 15% of the code --- you don't have to waste 20 lines on teaching C how to do math with 3-vectors, you can write v - w instead of sub(v, w), you don't have to spend 8 lines on teaching C how to write a PPM file, and you can immediately see the results on the screen. But parsing an input scene file is gonna be a little tougher.
That program is just a standard Whitted-style raytracer. (Interestingly, Whitted works at NVIDIA now.) More recently, I wrote a minimal SDF ray tracer instead, in Lua; it's a lot less code: https://gitlab.com/kragen/bubbleos/-/blob/master/yeso/sdf.lu...
So if at some point in the future you want to write code like this, reading this book might putting you, your employer, or free-software projects you contribute to at legal risk :(
It's reassuring that you're close personal friends with NVIDIA's current senior management team and can therefore report on their motivations, but have you considered that their plans may change in the future, or they may be replaced, due to mergers or stockholder lawsuits? Think about the Unisys LZW extortion campaign, for example, which happened after the legitimate business of Unisys had collapsed.
If they really aren't going to sue you for writing similar code, they could formalize that in a way that's binding on future management by attaching a free-software license to the example code. That's what they did with the previous book in the series.
Instead, they specifically changed the license for the code examples in this book to ensure that they can sue you for writing similar code in the future.
That's wonderful news! I really appreciate the efforts of the folks at NVIDIA that eliminated that legal risk. Adam Marrs was the committer, but I realize he may have had to get buy-in from other people.
The whole book is under a proprietary license that forbids commercial use (and forbids modifications). CC-BY-NC-ND => Creative Commons Attribution NonCommercial NoDerivatives.
So was the previous book, but in both case there's a separate, more liberal license for the code samples. Code samples in a programming book are a tricky case: when you're reading a programming book that has code samples, in a sense the whole purpose is for you to be able to write more code later on, for the rest of your life in fact, that's "substantially similar" to the code samples in the book. Which means that, under US law anyway, it's copyright infringement, unless the similarity is limited to purely functional aspects of the code, a fact of which you may have to persuade a nontechnical jury.
This has been used by the authors of the Numerical Recipes series for decades to extort royalties from programmers who learned about numerical algorithms from their books.
The explanatory text is not subject to the same problem; you read the explanatory text in order to understand the code, not in order to be able to write more explanatory text substantially similar to what is in the book.
You have the freedom to redistribute the book. It lacks some freedoms that would be beneficial, like translation into Chinese and producing an updated version of the book 5 years from now; but it ensures that it won't disappear from the internet when NVIDIA decides to overhaul their website in a couple of years. It's part of the permanent intellectual heritage of humanity.
You generally have the freedom to redistribute unmodified free beer.
I'm not criticizing, free as in beer is much better than costs $$$, i'm just saying when people say "free as in beer", this book is precisely the type of situation they mean.
Of course it doesn't generally work that way. People use the term "free as in beer" to describe when the author gave you some additional rights over all rights reserved.
Its an analogy invented by the Free software movement to describe the difference between "freeware" vs "bsd/gpl/etc" licensed software. "Free as in beer" does not mean "proprietary/all rights reserved".
After all, the ability to sometimes be able to get beer for free isn't how property law works generally; you can't just walk into any store and demand a free beer - most beer isn't free.
That's not too far from how I first learned about ray tracing. When I was a kid, I discovered DKBTrace on a BBS somewhere. Then DKBTrace evolved into POV-Ray and I got into that too. I remember things like being annoyed to discover that no matter how strong I made the sun-like light outside my building, it still wouldn't light up the interior which was in shadow; I knew nothing about global illumination methods or path tracing back then. But Perlin noise clouds in the sky were pretty cool, even if they made my 286 crawl pixel by pixel.
Fast forward to today, and I've had the great fun of contributing a chapter (#31) to this book.
And speaking of GLSL, I've already done that for my portion of this book. I chose to write my code samples in GLSL so that I could demo them verbatim in a web browser with https://www.shadertoy.com/view/tlcBzN. (Note that speed-wise, the FPS counter in Shadertoy is a bit misleading. Each frame is actually accumulating 32 samples per pixel.)
This is a surprisingly well put together book. I'm no expert in the field, but it covers a lot of topics well, and doesn't seem to be too nvidia-biased either.
It's a pity that the code examples are not licensed for commercial use.
I'm super glad it's finally getting out to readers. I think that Adam, Ingo and Peter did a fantastic job bringing all of this together over the course of the last 18 months.