← Back to context

Comment by mattpharr

1 year ago

In the 4th edition, there's no support for RGB rendering--it's always and only spectral.

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.

Nice work! This was a (small) wart in previous.

It's a great text, and remains one of my go-to examples when someone asks for examples of well executed technical book.

I was only ever peripherally involved in this area as a but found myself revisiting the origin just because it was put together so cleanly.

Oh, thanks a lot for the clarification! And thanks for the work on the book in general. :)

I need to look into the changes then. The spectrum implementation of the 3rd version served as inspiration for an X-ray raytracer I've been working on.

I've had a quick look in spectrum.cpp, but can't obviously find it: what uplifting method are you using now?

Is it something similar to Wenzel and Jo's one, or Alex Wilkie's Sigmoid variation?

Edit: ah: RGBSigmoidPolynomial...

Does any open source package like Blender support spectral rendering? Want to render dichroic glass :)

  • For Cycles, it’s in the works but it will take a while.

    You can use LuxCoreRenderer with Blender, though!