What are Register Combiners ???

[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

Hi

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

Lars

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:

  1. Wait for OpenGL 2.0
  2. 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.

For implementing a high level shading language, you can look at RenderMan http://www.renderman.org/ and at the Stanford shading language .

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 .

A great site about shading (japanese only).

Hope it helped,
Julien.

[This message has been edited by deepmind (edited 02-19-2002).]

[This message has been edited by deepmind (edited 02-19-2002).]

[This message has been edited by deepmind (edited 02-19-2002).]

The newest version of the SGI Shader uses
register combiners. So not so many framebuffer readbacks.

I don’t know if ATI has released such a wrapper.

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.

i once found some stuff on this on Nvidia’s webby site, if i remember where i found it i will post a link

[This message has been edited by robert (edited 02-19-2002).]