In graphics we use RGB and other color spaces as an approximation to the full spectrum of light wavelengths. This evidently works pretty well in general, but are there any reasonably common objects/materials/phenomena, things you might encounter in your everyday life, whose appearance isn't represented well by RGB rendering due to having a complex emission/reflection/absorption spectrum?

While the current answers are focusing mainly on colors outside a given RGB gamut, I'm also interested in hearing if there are examples where, for instance, the color of an object appears "wrong" when rendered in RGB because of an interaction between the light source spectrum and the object's reflection spectrum. In other words, a case where a spectral renderer would give you more correct results.


Credit: I liked this question in the previous private beta so I'm reproducing it here. It was originally asked by Nathan Reed

  • 2
    I remembered this paper I read some time ago. The authors compare spectral and RGB-rendered results with different illuminants. Unfortunately the comparison is done on a color chart, so I'm not sure how much the differences affect real life scenes. cg.cs.uni-bonn.de/en/publications/paper-details/… – yuriks Aug 12 '15 at 2:12
  • Beer's law (absorption of color through a transparent object over distance) is hard to model with rgb. – Alan Wolfe Aug 12 '15 at 13:50
  • @trichoplax Sorry for the noise! – luser droog Aug 30 '15 at 20:41
  • @luserdroog thanks for the interest :) Even though this question is only about materials, we could do with new questions related to colour spaces... – trichoplax Aug 30 '15 at 20:43

There are various different types of limitation to take into consideration.

Effects for which the path of a ray is dependent on its wavelength

These are a class of effects for which spectral rendering is required, and a number of interesting examples have already been given in Benedikt Bitterli's answer. A simple example is a prism splitting white light into a spectrum, giving rainbow colours. Rays of different wavelength are refracted by different angles as they pass through the prism, resulting in the light striking the wall behind the prism being split into its constituent colours.

This means that in real life, shining monochromatic yellow light through a prism will result in yellow light coming out, but shining a mixture of red and green light that approximates yellow will result in separate red and green light emerging. When rendering using only 3 primary colours, white light will split into only those three colours, giving rainbow effects that look discontinuous, and monochromatic light that should not split at all will split into its approximating primary colour components. The splitting of white light can be improved by using a larger number of primary colours, but this will still give discontinuities close up, and the results for monochromatic light will still be split, albeit more narrowly. For accurate results a continuous spectrum must be sampled, with wavelengths distributed according to the light source being simulated.

Surface effects that cannot be captured in a single still image

Iridescence, for example, shows a different colour to each eye so that a still image will not look the same as the original object. There are many everyday examples that you might not notice at first. Many common birds have iridescent feathers even though they appear black or grey from a distance. Close up they are surprisingly colourful.

A renderer using only 3 primary colours will not be able to produce the spreading of light based on wavelength required for this effect. A spectral renderer can simulate the spreading correctly, but the full effect still cannot be captured in a single image. Even a 2d photograph cannot capture this correctly, whereas a 3d photograph of an iridescent object will give that shimmering effect as the photographs corresponding to left and right eyes will be coloured differently. This is a limitation of 2d images rather than the RGB colour space itself. However, even in a 3d image there will be colours in the iridescent object that are not displayed correctly, due to the inability of RGB to display monochromatic colours as described below.

Colours that the human eye can detect that cannot be displayed in RGB

RGB was historically device dependent and therefore unreliable between platforms. There are device independent perceptually uniform improvements such as the colour space Lab, but these are still trichromatic (having 3 components). It is not immediately obvious why three components is insufficient to display all the colours that can be perceived by a trichromatic eye, but this paper explains it well, and accessibly. From page 7:

For example, using a modern laser-display system with monochromatic primaries at 635 nm (red), 532 nm (green), and 447 nm (blue), lets see if we can simulate the perception of a monochromatic light at 580 nm (an orange color). Since the monochromatic orange stimulus excites the greenish and reddish cones, a contribution is required by both the green and red primaries, while no contribution is required from the blue primary. The problem is that the green primary also excites the bluish cones, making it impossible to exactly replicate the orange stimulus

The diagram of human eye cones sensitivities (also on page 7) shows how wide the overlap is and helps to visualise this explanation. I've included a similar graph from Wikipedia here: (click on the graph for the Wikipedia location)

Graph of the sensitivities of the 3 different cones in the human eye

In short, the overlap between the range of colours that can be picked up by each of the three different cones (colour sensors) of the human eye means that a monochromatic colour can be distinguished from an approximating mixture of primary colours, and therefore mixing primary colours can never accurately display all monochromatic colours.

This difference is not usually noticeable in everyday life as most of our surroundings emit or reflect light across a wide range of frequencies rather than single monochromatic colours. However, a notable exception is sodium lamps. If you live in a part of the world that uses these yellow-orange street lights, the light emitted is monochromatic and will look subtly different from a printed photograph or an image on a screen. The wavelength of sodium light happens to be the 580 nm from the example quoted above. If you don't live somewhere that has sodium street lights, you can see the same single wavelength light by sprinkling finely crushed table salt (sodium chloride) over a flame. The scintillating yellow points of light cannot be accurately captured on film or displayed on a screen. Whatever three primary colours you choose, there will always be a range of monochromatic colours that cannot be displayed.

Note that this limitation applies equally to mixing 3 primary colours of paint, using 3 photoreactive chemicals on a camera film, or taking a photograph with a digital camera with 3 different colour sensors, or a single sensor with 3 different primary colour filters. It isn't just a digital problem, and isn't just restricted to the RGB colour space. Even the improvements introduced by the Lab colour space and its variants cannot recover the missing colours.

Miscellaneous effects

Multiple diffuse reflections (colour bleeding)

If a brightly coloured matt surface is near a white matt surface, the white surface will show some of the colour of the other surface. This can be modeled reasonably well using purely red, green and blue components. The same combination of red, green and blue that gave the colour of the coloured surface can reflect off the white surface and show some of that colour again. However, this only works if the second surface is white. If the second surface is also coloured, then the colour bleeding will be inaccurate, in some cases drastically.

Imagine two surfaces that look a similar colour. One reflects a narrow range of wavelengths around yellow. The other reflects a wide range of wavelengths between red and green, and as a result also looks yellow. In real life, the light showing on one surface due to the other will not be symmetrical. Most of the light reaching the wide wavelength range surface from the other will be reflected again, as the narrow range of incoming wavelengths are all within the wider range. However, most of the light reaching the narrow wavelength range surface from the other will be outside the narrow range, and will not be reflected. In an RGB renderer, both surfaces will be modelled as a mixture of monochromatic red and monochromatic green, giving no difference in reflected light.

This is an extreme example where the difference will be instantly noticeable to the eye, but there will be at least a subtle difference in most images that include colour bleeding.

Materials that absorb one wavelength and emit another

joojaa's answer describes the absorption of ultraviolet light by snow, to be re-emitted as visible light. I hadn't heard of this happening with snow before (and frustratingly I've been unable to find any evidence to support it - although it would explain why snow is "whiter than white"). However, there is plenty of evidence of it happening with a wide range of other materials, some of which are added to clothes washing detergents and paper, to give extra bright whites. This allows the total visible light outgoing from a surface to be more than the total visible light received by that surface, which again is not modelled well using only RGB. If you want to read more about it, the term to search for is Fluorescence.

Eyes with more than 3 primary colours

There are animals that have more than 3 types of cones in their eyes, allowing them to perceive more than 3 primary colours. For example, many birds, insects and fish are tetrachromats, perceiving four primary colours. Some are even pentachromats, perceiving five. The range of colours that such creatures can see dwarfs the range displayable using only RGB. Far beyond them is the mantis shrimp, which is a dodecachromat, seeing colours based on 12 different cones. None of these animals would be satisfied by an RGB display.

But more seriously, even for images intended for human eyes, there are believed to be human tetrachromats who see in 4 primary colours, and possibly some who see as many as 5 or 6. At present, such people don't seem to be present in sufficient numbers to make displays with more than 3 primary colours commercially viable, but if in future it becomes easier to identify how many primary colours a person can see, this may become an attractive trait leading to it spreading throughout the population in future generations. So if you want your great grandchildren to appreciate your work you may need to make it compatible with a hexachromatic monitor...


Not really relevant to this question, but related: If you want to see colours that are not available in either the real world or RGB images, have a look at Chimerical Colours...

I believe the most prominent spectral effect that can't be faithfully reproduced with RGB is dispersion, caused by dielectrics with spectrally varying index of refraction (usually modelled with the Sellmeier equation).

Other spectral phenomena are usually caused by wave effects. One example that is encountered in real life every now and then is thin-film interference, which is caused by one or more reflective surfaces layered closely on top of each other (e.g. oil slicks, soap bubbles). Another wave effect that can sometimes be observed is diffraction, caused e.g. by diffraction gratings, which is what causes the funky appearance of CDs.

RGB works because that's how our sensory apparatus works. Ina addition to dispersion, some man made materials and insect bodies sometimes have surfaces that have very tight color bands. These might benefit from a wide spectrum rendering.

However since many of these effects are pretty localized, you can often get away with making the shader just work weird. This does not work right in reflections and refractions but nobody is likely to notice. Unless you are doing some physics simulation its not really a big deal. But if you design optics this might be a big deal.

Some materials, like snow, also convert incoming ultraviolet into visible light. Again this kind of effect can usually be handled by shaders/ special light groups.

Butterfly wings are also a curiosity as they manipulate the waves phases and the forms of the incoming light. So if you want to do physics simulation on those then its a big deal.

Polarisation of light is also a big factor in insects and water effects.

Just to add to the excellent suggestions above, it occurred to me that, without an ultraviolet channel, fluorescent materials would be tricky to model.

  • 1
    This seems to be more of a comment than an answer. Maybe you could elaborate on why fluorescent materials depend on an ultraviolet channel and provide some references? – Martin Ender Aug 12 '15 at 9:35
  • 1
    I mentioned this in my post just not using the word flourescent. Anyway this can be accomplised at shader level. – joojaa Aug 13 '15 at 5:35
  • @joojaa: Sorry.. missed that. I'd delete my post if there was an obvious button to do so. Though, having said that, I would say that you'd still need extra channels elsewhere (and not just shaders) to handle it, e.g. on-the-fly generation of environment maps. – Simon F Aug 14 '15 at 8:50
  • 2
    Delete or don't delete it, same for me. I would rather see you expand it., there's nothing wrong with supporting evidence and things said differently as long a you contribute with better clarity or new info. – joojaa Aug 14 '15 at 9:19

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.