Can somebody please explain me(in english) what are the register combiners?I understand the shaders/vertex programs but not the combiners and i have some feeling that they are the key to the advanced effects .So please inform the dumb one guys!10x
Register combiners are a weak version of fragment programs. They are a sequence of 2 or 8 (depending on the hardware) opcodes that can take a number of per-fragment input components (texture accessing results, interpolated colors) and perform a relatively arbiturary set of operations on them. The result of the RC is the fragment’s color, post the separated-specular and fog color application.
Now, dealing with the particulars of register combiners is a pain, in general. But, that’s what the non-FX GeForce hardware has for per-fragment operations (in addition to texture shaders, for GeForce 3+).
The issues that baffles you befuddled me quite a bit when I first started coding GeForce 3. Just looking at the specs of the NV_register_combiners, and NV_register_combiners_2 extensions is not enough to understand the intersticies of the GeForce3’s fragment programming ALU.
I was finally able to find solid documentation regarding this elusive beast from the NVidia developer center. Download the OpenGL SDK and take a good look at the documentation. You will find diagrams and examples of how the thing works. I must warn you, it’s not for the light of heart.
If you can’t find the OpenGL SDK, try this on for size: http://developer.nvidia.com/attach/1322
This document offers an overview of the GeForce2 and a detailed description of the GeForce3 register combiners.
If you understand how TexEnv works, then you can think of register combiners as a TexEnv on steroids; specifically with the ability to source textures other than the texture with the same number as the combiner, and there are more combiners than there are texture units.
If you don’t understand how modulate, add, subtract, decal, and the other texture environment modes work, then you need to get ahold of PhotoShop, or something like it, and play with its layer blending options, which work a lot like the different fragment combiner/TexEnv modes. That’ll teach you “what” you want. Then you use TexEnv (cross-platform) or NV_register_combiners (nVIDIA-only) or ARB_fragment_program (cross-platform, modern cards only) to implement that.
This paper http://developer.nvidia.com/object/combiners.html was damned helpful for me. It explains absolutely everything.
After i read that paper i knew everything i needed, and it is still a great reference.
I hope it will be as useful to you.