I don't really get this ARB_vertex_program stuff

Today I played a little with ARB_vertex program - some sort of vacation since I am too lazy right now to do something serious. Here are the results of some queries I did.

Renderer: GeForce4 Ti 4400/AGP/SSE/3DNOW!
ARB_vertex_program
Max prog instructions (native) = 128 (128)
Max prog temporaries (native) = 12 (12)
Max prog parameters (native) = 96 (96)
Max prog local parameters = 96
Max prog environment parameters = 96
Max prog attribs (native) = 16 (16)
Max prog address registers (native) = 1 (1)

Well, this is exactly what I was expecting - a good ‘old’ NV_vertex_program piece of hardware. Then, I turned on NVemulate and took a look.

Renderer: Emulated GeForceFx
ARB_vertex_program
Max prog instructions (native) = 256 (256)
Max prog temporaries (native) = 16 (16)
Max prog parameters (native) = 96 (96)
Max prog local parameters = 256
Max prog environment parameters = 256
Max prog attribs (native) = 16 (16)
Max prog address registers (native) = 2 (2)

The first thing is about max prog instructions. I heard it should be 1024. Maybe it was with looping? I’ll read NV_vertex_program2 in the next days so I should get it.

If you can have no more than 96 program parameters, what is the point in allowing 256 environment/local parameters? I think having a greater number makes no sense.

I will read the ARB_vertex_program spec again but, for the time being, I don’t get what address register can be used to. Anyone got some ideas?

Can someone which has acces to other cards (interested in radeons of curse) put there the values? I guess there should be no problem in finding what characteristics are actually being queried.
Other cards like pharelia or the xabre would also be appreciated. If someone is interested, I will try to post there the results of the NV15… if its driver can emulate the vertex_program funcs in software of curse, not tried yet.

Thank you!

[This message has been edited by Obli (edited 04-08-2003).]

If you can have no more than 96 program parameters, what is the point in allowing 256 environment/local parameters? I think having a greater number makes no sense.

See below.

I will read the ARB_vertex_program spec again but, for the time being, I don’t get what address register can be used to. Anyone got some ideas?

Address register is used to look up a value in an array defined by program parameters. So you get it - the more program parameters are allowed, the bigger the array.

Can someone which has acces to other cards (interested in radeons of curse) put there the values?

I think that http://www.delphi3D.net exposes that kind of information for every driver/card combo (click on the ‘3D hardware’ link in the left bar). It is not an official site, but it’s really useful !

[This message has been edited by vincoof (edited 04-08-2003).]