how to calculate RGB transparence in shader programs?


    Oct 04 2006 | 1:21 pm
    hello,
    i have a texture,
    and i'd like to apply a colored tint to it;
    i'd like the percentage of this tint to be a controllable parameter.
    now, it makes sense that if i multiply the RGB values of a pixel in my texture by my tint-color's fractional RGB values (i.e. devide values between 0 and 255 by 255), then i get the color i want; but i wanna get less of that color than %100;
    if i were doing this in jitter, i would place another plane in front of my video plane for instance, and give it an alpha transparence; i'm wondering how i can get the same effect by calculating the RGB values of each pixel "by hand", as i have to do in the fragment shader of my program.
    i tried to find a formula online but i don't think i've found the best color resources on the web yet...
    thank you,
    a

    • Oct 04 2006 | 1:58 pm
      For this, the most straightforward way would be to use the mix() function:
      mix(source,tint-color,amount);
      Remember that in this case amount can (and should) be a vec4.
      Hope that helps.
      --
      Andrew
    • Oct 04 2006 | 2:20 pm
      of course!
      sorry, obvious question...
      and then i found all the compositing examples and now i have more ways to do what i wanted than i ever would want.
      on the other hand, i'm noticing something that i don't quite undertsand. when i use your suggested mix(source, tint, amount) expression, i find that if i define 'amount' as a uniform vec4 and send it in from out, i get two very different results if send things like "amoung .5" and "amount .5 .5 .5 .5"; it actually seems to me like "amount .5" gives the correct result, i.e. 1/2 way between the source and the tint... what does each of these actualy do?
      yours,
      a