[Radiance-general] specifying sources
Gregory J. Ward
gregoryjward at gmail.com
Tue Mar 28 03:46:24 CEST 2006
> where i get lost is why we should get better accuracy by using a
> white source, and modelling the colour we want the source to have
> into the reflection calculation from the surfaces in the scene.
It only gives you better accuracy if you premultiply the spectra. If
you don't have spectral data, then it's the same as using the Sharp
RGB color space, which will at least be an improvement over standard
RGB (or XYZ, which is the worst).
> in your paper you say this avoids a colour cast in the rendered
> image, but why is this? presumably it wouldn't be that difficult to
> apply a white-point shift to the rendered image to correct this
> colour cast?
That's what a white point correction does, but it does it in such a
way that the colors still have close to the correct appearance. A
naive normalization to some average gray does the wrong thing, and in
some cases it is very wrong, indeed.
> but as well as this colour cast, your results show quite a dramatic
> difference in accuracy between the naive and premultiplied renderings.
> i appreciate that you probably don't have time to go into a
> detailed physics lesson by email, but can you point me towards
> anywhere i can read up on why this is?
Simply put, spectral peaks and troughs in the source and reflection
spectra require more than the three dimensions of a standard color
space to resolve. You only need three primaries to present (nearly)
any color to the eye, since the eye only has three spectral
sensitivity curves that it uses for color vision. (The rods
represent a fourth sensitivity curve, but this does not seem to take
part in distinguishing colors.) However, you theoretically need an
infinite number of spectral samples to exactly simulate light
interreflection. You also need an infinite number of rays, and we
get by with fewer. As a practical matter, most rendering systems use
only three colors, and the paper we've been discussing shows how to
best leverage this machinery.
For a detailed description of color in computer graphics, Andrew
Glassner's "Principle of Digital Image Synthesis" is an excellent
reference. Roy Hall has a classic text on the subject as well, but I
believe it's out of print.
> i want to render lots of images of the same scene, but to change
> the single light source each time. so far i have written a script
> which does this quite nicely (it turned out simpler than using
> rtcontrib, because of the way i wanted to structure the scene
> description), but i have only used white sources.
> i want to be able to use colour filters with my sources, but if i
> do all the premultiplicaton i will have to do it for every
> different colour filter i want to use, which will complicate the
> autamation of the preoccess immensely, so i'm trying to think of
> simpler ways to do it!
> i guess i might have to do without, and just accept a less slightly
> accurate image.
As I said, it makes no difference to the result if you don't have
spectral data whether you incorporate your source color into your
surfaces or not. The result will be the same, so you might as well
script it if you don't have spectra.
-Greg
More information about the Radiance-general
mailing list