Billy Biggs 97049311 firstname.lastname@example.org
Haines, Eric, "Point in Polygon Strategies," Graphics Gems IV, ed. Paul Heckbert, Academic Press, p. 24-46, 1994 http://www.acm.org/pubs/tog/editors/erich/ptinpoly/. Tomas Möller and Ben Trumbore., "Fast, minimum storage ray-triangle intersection." Journal of Graphics Tools, 2(1):21--28, 1997. http://www.graphics.cornell.edu/pubs/1997/MT97.html.The adaptive supersampling technique is taken from Foly & van Dam. My reference for colour and gamma functions is, as always, Poynton. The model of the teapot is from an example nVidia model, and the phone handset (yes, that's what it is) is from an unknown source.
Source code and executable for the raytracer is here.
|My scene: Flying teapot, blue sphere, and flying phone handset. Teapot model has over 8400 polygons. 2x supersampled. Two point light sources. Phong exponent of 50. (Yes, I'm going to code vertex normal support next, just to make that teapot look better).|
|My scene with vertex normals: Flying teapot, blue sphere, and flying phone handset. No vertex normals for the flying phone handset because of the silly model format used to generate it. This code was not in the raytracer I submitted for assignment 1, and I just put this up here because it's a cool contrast to the image above.|
These are the primaries specified by both ITU-R BT.709 and sRGB. Given these chromanicities, we are given a relationship between the coordinates and the values of , , and . For example, the value of any colour can be expressed as a linear combination of the values for , , and individually. Since we can derive those from the chromanicities, we define constants , and to represent the factors of which the chromanicities contribute to the resulting value. To solve these values, I'm using the notation and ideas from the method described in Foley/van Dam.
In order to compute the values of , and , we need a known reference point. For this we will use the D65 white point (black body at 6500K) and use unity luminance () and map this to .
We can now use these to solve for , and by taking the inverse of the following:
Submitting back, we get the final matrix:
Inverting this we get the desired matrix:
|Raw version, relative sensitivity on the y axis, wavelength in nanometers along the x axis.|
|Normalized version such that each integral sums to unity. Again, relative sensitivity on the y axis, wavelength in nanometers along the x axis.|
|Plot of xy chromaticities with the sRGB gamut hilighted by slightly higher luminance. x values along the x axis, y values along the y axis, with 0,0 in the lower left corner of the image. This image was converted to sRGB for a display gamma of 2.2 (using the crazy 2.4 curve specified in the standard).|
|Plot of u'v' chromaticities with the sRGB gamut hilighted by slightly higher luminance. The u' axis is along the bottom, and the v' axis along the left so 0,0 is again in the lower left corner. This image was also corrected for a display gamma of 2.2.|