When RGB is Not Enough
Over a year ago, my color studies class visited the Krannert Center for the Performing Arts at the University of Illinois, for a guest lecture/demo on theatre lighting, and the interaction of light with colored objects.
By the end of the demo, I had realized something: RGB just isn't enough to describe the full range of color interaction. And it's not just RGB that's deficient; HSV, HSL, CMYK, etc. all suffer from the same limitation. In fact, any color model which tries to describe a color as a single point will fall short.
Color is conveyed through photons of various wavelengths. The full visible spectrum of wavelengths covers the familiar rainbow: the longest wavelengths we can see appear red; shorter wavelengths appear orange, yellow, green, and blue, with the shortest wavelengths we see appearing violet.
Generally speaking, any given lightsource will emit photons at multple wavelengths (see e.g. the diagrams at Wikipedia's article on “emission spectrum”). A light which appears blue, for instance, might be emitting some violet, green, and even red photons, although the majority of the photons emitted will be blue.
Similarly, any given object will absorb photons at multiple wavelengths, while reflecting photons at other wavelengths. An object which appears green (say, a leaf) reflects primarily green photons, while absorbing lots of red and other colors of photons.
It's the fact that color exists across this spectrum that means it's impossible to model the full interaction of colored lights and objects; the RGB model completely ignores the effect of photons of all wavelengths except three.
Consider this scenario: there is a tight-focused spotlight shining through three filters. Each filter is made of a special material which fully absorbs photons in a specific, tiny range of wavelengths, while letting all the rest pass through; the first one absorbs reddish photons (say, in the range of 790 to 800 nm), the second absorbs greenish photons (540 to 550 nm), and the third absorbs blueish photons (470-480 nm). The spotlight uses a special bulb which emits light equally at all wavelengths in the visible spectrum.
When we look at the spotlight by itself, the light looks white. If we looked at the spotlight through the three filters, what color would it seem to be?
If we were modelling this scenario on a computer using the RGB color model, the answer would be: black; void; nothing. No light at all would make it through all three filters. The first filter would absorb all the red, letting through the green and blue (the light would appear cyan at this point). The second would absorb all the green, letting through the blue. The third would absorb all the blue, letting through nothing at all.
In the real world (or at least, a real world with these magical light bulbs and filters), you would see… white light. It would be insignificantly dimmer than the light that went in — even if we ignore such things as intensity falloff with distance — but it would appear to be white light, even though all the photons at specific red, green, and blue wavelengths have been filtered out. There would still be plenty of photons at other wavelengths to trigger the light receptor cells in our eyes; it's doubtful we would even be able to tell that it was missing photons with wavelengths between 790-800 nm, 540-550 nm, and 470-480nm.
I need to get back to work, so I'll get to the point(s). (“It's about time,” you say.)
- RGB is Good Enough for most uses in CG.
- For special cases where increased realism/control is desired, it would be possible to simulate color interaction using the full visible spectrum.
- A new color format with values for each of ROYGCBVM (or some subset thereof) would be an excellent compromise between data size and designer control.
- The colors would need to be converted to RGB to be displayed on a monitor (or CMYK for print), but that could be saved for the last step.
- Such a color format would be more future-proof, allowing for alternative photon-emitting devices and inks without excessively distorting color.