|
|
"PoD" <pod### [at] internodeonnet> wrote...
> The alpha channel for pixels corresponding to an object with transmit !=
> 0 is set to fully opaque regardless of the actual transmit value.
>
> I've tracked this down to compute_lighted_texture() in lighting.c
> but I'm having trouble following why a lot of the changes were made.
>
> line 4711 says
> ResCol[TRANSM] = (0.30*AttCol[0] + 0.59*AttCol[1] + 0.11*AttCol[2]) *
> FilCol[TRANSM];
> but FilCol[TRANSM] is never changed from 0.0 as far as I can see.
>
> There's a comment at line 4617
> /* note FilCol[3] stays at 1.0, [4] stays at 0.0 */
> Why is that?
For the purposes of FilCol, anything that can be represented with the
Transmit channel can be represented using the filter channel with an
appropriate color.
Examples:
<0,0,0,0,1> can be represented as <1,1,1,1,0>
<0,0,0,0,.5> can be represened either as <.5,.5,.5,1,0>
<.5,0,0,.5,.5> can be represented as <1,.5,.5,1,0>
etc.
Actually, in future versions (far in the future) of POV, I think that we use
6-channel (actually 2*3 channel) colors: <r,g,b,rf,gf,bf>. In lighting.cpp,
ResCol represents <r,g,b> and FilCol represents <rf,gf,bf>. This allows
much more control of what gets transmitted and what gets diffused. Of
course, this would cause backwards-compatibility problems...
-Nathan
Post a reply to this message
|
|