|
|
Author's note: This message probably goes far beyond the scope of this
newsgroup (which happens to be 'new users'), but I feel I should provide the
correct explanation since my previous one was wrong.
----
Soichi,
My original explanation was flawed. Sorry for the confusion. The pigment is
computed in two parts, one for the opaque part and one for the
filtered/transmitted part. What you wrote does describe the resulting behavior
of POV quite well.
So if anyone is interested, here's what I should have said last time:
The opaque part (Result_Colour) is computed by addition as expected, and the
filter part (Filter_Colour) is computed by multiplication as I described.
Later, a single ray is refracted through the object (provided that it is at
least semi-transparent), and then the color returned by the refracted ray
(Refracted_Colour), is combined with the Result_Colour as follows:
Result_Colour[i] += Refracted_Colour[i] *
(Filter_Colour[i] * Filter_Colour[FILTER] + Filter_Colour[TRANSM])
for each component. (Volume attenuation is also included in there, but I left
it out.)
Thus, after the final Filter_Colour is computed by the multiplication that I
described earlier, if both the filter and transmit values turn out to be zero,
the Refracted_Colour will have no effect on the Result_Colour.
Also, this accounts for the over-brightness caused by rgbft<1,1,1,1,1>.
OK, I'm pretty sure that this is correct. Just in case anyone cares.
-Nathan
Post a reply to this message
|
|