View Full Version : nvidia register combiners and multipass
Dakeyras
03-24-2002, 01:03 AM
Hi all,
I want to set up this equation:
(A dot B) * C + D
where A and B are vector maps, C and D are texture maps, so all 4 need their own texture units.
I'm using a geforce2, so I only have 2 texture units to play with. Is it possible to perform the equation in 2 passes? One pass to perform (A dot B) and another pass to perform the rest?
If so, how do I store the results of (A dot B) without taking up another texture unit?
tia.
LaBasX2
03-24-2002, 03:15 AM
You can use the alpha buffer to store the result of (A dot B). Fore more information see Ron Frazier's great tutorial:
http://www.ronfrazier.net/apparition/research/advanced_per_pixel_lighting.html
I don't think that it is possible to do that operation in 2 passes. I think you will need 3 passes. Store (A dot B) in the alpha buffer. Multiply the alpha buffer with C and add the result to the color buffer. Then add D to the color buffer. If your equation is for lighting calculations you could even add several lights using this alpha buffer technique.
Hope that helps a bit
LaBasX2
davepermen
03-24-2002, 03:23 AM
blendfunc http://www.opengl.org/discussion_boards/ubb/redface.gifne,zero
framebuffer = AdotB
blendfunc:dstcolor,zero
framebuffer *= C
blendfunc http://www.opengl.org/discussion_boards/ubb/redface.gifne,one
framebuffer += D
the only ways i can see use 3 passes, sorry..
only if C or D would be alpha-only, not color, then i would see a way..
davepermen
03-24-2002, 04:16 AM
****in smilies http://www.opengl.org/discussion_boards/ubb/wink.gif
Nutty
03-24-2002, 11:55 AM
HUH?!
You should be more explicit with your equations.
Using BODMAS ordering I assume you mean;
((A dot B) * C) + D
You can do (A dot B) * (C + D) in two passes, with 1 blend easily.
Simply in register combiners do
1st pass.
A Dot B, store in framebuffer.
2nd pass.
C * D, blend with framebuffer with DST_COLOR, ZERO.
Previous equation will require 3, as Dave said.
Nutty
Nutty
03-24-2002, 11:19 PM
Oops!!
That should've been GL_ONE, GL_ONE for the blend.
Nutty
Dakeyras
03-25-2002, 05:48 AM
Yup I meant the previous eqn
((A dot B) * C) + D
The link to Ron Frazier's paper helped a lot.
thx all.
Powered by vBulletin® Version 4.2.0 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.