Here in OpenGL the Register Combiners are the special Hardware in GeForce Cards that compute the final color in the framebuffer. It works like an specialized ALU. It has some Registers. Some for free use (reading and writing) and some initially filled with Data, like filtered texture color, or interpolated Vertexcolor, the fog value and some other. And it can do Operations on those Registers like addition, multiplication and some specials.
Normally (in pre Geforce Hardware) all the colors get combined in a constant number of ways.
The Register Combiner Extension now allows programmibility of those operations.
The explicit Operations that can be done are described in some Papers and Presentations on the nvidia Website under http://developer.nvidia.com
Originally posted by Olumide:
[b][Already posted on the Beginners Forum]
(Sorry if this is a rather simple question)
Hi Fellas
My question is simple one, and I need simple - and if possible, detailed answer.
(Please send links where appropriate but please note that I doccumentation on how to program these Register thingies are hardly appropriate…)
so … WHAT’S A REGISTER COMBINER?
HOW DOES IT WORK?
WHY IS IT SO IMPORTANT?
ThanX[/b]
It’s nVidia’s proprietary (so NO ONE else can use it excpect nVidia) per pixel math extension, to do stuff like add, subtract, multiply, DOT3, lerp, etc.
Originally posted by Olumide: so … WHAT’S A REGISTER COMBINER?
NV_register_combiners is used to achieve per-fragment shading. It is a NVidia-only extension. ATI uses ATI_fragment_shader. If you want to perform hardware-independant pixel shading, you have 2 ways:
Wait for OpenGL 2.0
Do you abstraction shading layer yourself, routing your own language’s instructions to their NVidia or ATI equivalents depending on the hardware. NVidia has released NVParse which allows you to parse a DirectX8 Pixel Shader program, translating it into register combiners. I don’t know if ATI has released such a wrapper.
SGI also has a high level shading language, but its bad implementation (lots of read from the framebuffer) make its performances suck. You can have a look at SGI Shader (free for Linux) here .
ATI doesn’t really need to, since it’s fragment_shader extension mirrors almost exactly the DX Pixel shaders v1.4. Granted, you enter them in two very different ways, but they are both the same language.