Jump to content
  • Advertisement
Sign in to follow this  
xerzi

preserving alpha in blend

This topic is 2337 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Well I seem to be having some trouble trying to get my multipass render to work. I have 3 passes: light, diffuse, glow.

I first draw the light and than render the diffuse on top of it and modulate it. The alpha channel of the diffuse render contains the mask for the glow so I try to preserve it with glBlendFuncSeparate but it doesn't seem to work. I know the alpha channel is good as I can change the blend of the diffuse to do an alpha test and the correct parts are transparent. When I use it on the glow, it does not work.



// ** draw lightmap here **

glEnable( GL_BLEND );

// take the color of the lightmap and multiple it by the diffuse
// destroy previous alpha while maintaining source's
glBlendFuncSeparate( GL_SRC_COLOR, GL_ZERO, GL_ONE, GL_ZERO );

// ** draw diffuse here **

glDisable( GL_BLEND );


glEnable( GL_BLEND );

// mask using diffuse's alpha while keeping colors intact
glBlend( GL_DST_ALPHA, GL_ONE );

// ** draw glow here **

glDisable( GL_BLEND );



I know that glBlendFunctSeparate might be the cause of the error but the syntax looks good, if I change the diffuse blend to glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) so I know the alpha is good but still for some reason it is reset to 1 when I do the glow draw.

Thanks for any help !

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!