POV-Ray : Newsgroups : povray.programming : merging filtered colors : Re: merging filtered colors Server Time
28 Jul 2024 18:22:32 EDT (-0400)
  Re: merging filtered colors  
From: Nathan Kopp
Date: 12 Dec 1999 01:22:30
Message: <38533f26@news.povray.org>
Merging them into one I think would be impossible due to limitations in the
RGBFT light model.  If we instead used r,g,b,rf,gf,bf (with a filter amount
for each color channel), then they could be combined easily.

However, to filter/transmit incoming light properly through two layers that
use filter and transmit, you would do something like the following:

/* first filter through the first layer */
for(i=0; i<3; i++)
  Output[i] = Input[i]*Fil[TRANSM] + Input[i]*Fil[i]*Fil[FILTER];

/* now repeat fo the second layer */
Assign_Colour(Input, Output);

for(i=0; i<3; i++)
  Output[i] = Input[i]*Fil[TRANSM] + Input[i]*Fil[i]*Fil[FILTER];

-Nathan

Matthew Corey Brown - XenoArch <mcb### [at] xenoarchcom> wrote...
> i have 2 colors with various FILTER and TRANSM values.. lets call them
> front and back
> how do i combine these two colors such that the resulting color
> will filter light as if it came through the back one first then the
> front.
> I can get the RGB values... but the FILTER value is tricky (I think i
> got
> the TRANSM just multiply the two) any pointers?
> this is my current function i'm working with (I realize FILTER is no
> where near right)
>
> void MergeColour(COLOUR Fil,COLOUR Back) {
> DBL mask,fm;
> mask = 1.0-Fil[TRANSM];
> fm = Fil[FILTER]*mask;
> Fil[RED] = Back[RED]*Fil[RED]*fm + Fil[RED]*mask +
> Back[RED]*Fil[TRANSM];
> Fil[GREEN] = Back[GREEN]*Fil[GREEN]*fm + Fil[GREEN]*mask +
> Back[GREEN]*Fil[TRANSM];
> Fil[BLUE] = Back[BLUE]*Fil[BLUE]*fm + Fil[BLUE]*mask +
> Back[BLUE]*Fil[TRANSM];
> Fil[FILTER] *= Back[FILTER];
> Fil[TRANSM] *= Back[TRANSM];
> }
>
> --
> Matthew Corey Brown                                         XenoArch
> mcb### [at] xenoarchcom                             http://www.xenoarch.com


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.