PDA

View Full Version : Multipass, muliply, add, subtract, and blend ratio.



molmsted
03-07-2002, 10:09 AM
I am working on an openGl plugin for Maya that performs multipass rendering. I have most of it working eccept for a couple of items. I have a psuedo add function by using glBlendFunc(GL_ONE, GL_ONE); I am having difficulty figuring out how to do it in Multiply and subtract modes also.

My limitation is that I have to use only OpenGL 1.2 and don't have access to GL_ARB_multitexture or any of the cool extenstions.

Thanks,

Morris Olmsted

Bob
03-08-2002, 12:21 AM
Multiplicative blending is one of these two. They are the same.



glBlendFunc(GL_DST_COLOR, GL_ZERO);
glBlendFunc(GL_ZERO, GL_SRC_COLOR);

For subtractive blending, use the same blending function as for additive blending, but change the blending equation.



glBlendFunc(GL_ONE, GL_ONE);

glBlendEquation(GL_FUNC_SUBTRACT);
glBlendEquation(GL_FUNC_REVERSE_SUBTRACT);


[This message has been edited by Bob (edited 03-08-2002).]

molmsted
03-08-2002, 05:37 AM
Thank you very much for your help.

Morris

molmsted
03-08-2002, 11:33 AM
If I am also trying to perform a sliding ratio for my last pass of my render, where do I adjust the alpha? I mean I don't see a place where I could substitute a value of my own or use a variable as a multiplicand. I also am needing to perform a devide function too, but as a seperate stepp.

Thanks,

Morris Olmsted

Bob
03-08-2002, 11:54 AM
I didn't mention it. I gave two different blending equations for subtractive blending. The first one is for (source - destination), and the other one for (destin<tion - source), I think. Anyways, have a look in the OpenGL specification for more details.

Crossfading between two passes can be done with glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA). Then use glColor4*(r, g, b, a) (or any other way to set the alpha channel of your objects) to control the blending factor. It's the alpha channel that decides the amount to blend from the source and the destination. 90% alpha means 90% from the source, and 10% from the destination, added together.