|The sRGB gamut in the CIE xy chromaticity diagram.|
Image found on Dietrich Zawischa's colorimetry page.
One of the first things I did for this project is to write a spectral rendering system that associates each ray with a wavelength instead of an RGB color. Initially, in order to convert the spectral data to RGB primaries, I made up response curves for the camera's RGB sensors, but this was just a rough placeholder system. I considered implementing the response curves of a real-life camera, however, I decided on a more scientific approach. I decided to convert my spectral data to CIE XYZ by integrating it with the CIE XYZ color matching functions (specifically, the CIE 1931 2° XYZ CMFs modified by Judd and Vos), then transforming XYZ to linear RGB (Rec. 709 primaries), then finally transforming that to sRGB. This approach yields colorimetrically accurate results and is very flexible. I'm very interested in color, so doing this was also fun and good practice.
Here are after and before shots of twilight. Notice how the hues shift:
|Old twilight image,|
Here are a few more new renders:
Notice the multicolored noise in this quick render, resulting from spectral rendering coupled with Monte Carlo scattering:
|Updated sunrise / |