vertex & fragment programs issues

i wanted to start programming vertex and fragment programs in OpenGL with my Gainward gforce 4 ti4200 ultra, so i checked wich extensions were avaiable for my board and i was chocked to see that it didn’t supported the ARB’s extensions for vertex and fragment programs only the Nvidia’s.

Aren’t the ARB’s vertex and fragment programs extensions avaiable on most boards?

i really need to know this because i want my program to be compatible with as much graphics boards as possible and if my board is just crap because it should support the extensions then i might as well start thinking about buying a new one.

[This message has been edited by jcabeleira (edited 07-24-2003).]

If you have the latest driver you should find GL_ARB_vertex_program, but a gf4 cant handle the fragment_program spec, so you wont get that, regarless of the driver version…

Originally posted by Mazy:
If you have the latest driver you should find GL_ARB_vertex_program, but a gf4 cant handle the fragment_program spec, so you wont get that, regarless of the driver version…

so what should i do? buy a new board? if so, wich one?

an NV3X nvidia card (5200,5600,5800,5900), or a R3XX ATI card (9700, 9800, 9600)

if you need ARB_fragment_program you need either a GFfx or a Radeon 9500 or better… those are the only cards i know can handle that…

i really need to know this because i want my program to be compatible with as much graphics boards as possible

if you use fragment programs you limit yourself to a few cards anyway…atleast for now…

Originally posted by Mazy:
if you use fragment programs you limit yourself to a few cards anyway…atleast for now…

exactly, but correct me if i’m wrong when i say that pixel and vertex shaders are the future of the graphics programming. i hope that soon most of the graphics boards will be able to do operations with pixel and vertex shaders.

anyway i just want to start programming pixel and vertex shaders with the less compatibility between boards possible.

Originally posted by Mazy:
If you have the latest driver you should find GL_ARB_vertex_program, but a gf4 cant handle the fragment_program spec, so you wont get that, regarless of the driver version…

i know it might sound stupid, but can you explain me in detail what’s the role of the drivers? i don’t understand how they work so i wanted to know how they affect the software and the graphic board.

the ‘regardless of the driver version’ was a bit unnecessary

But since gf4 existed before the ARB_vertex_program specification was finished it ofcourse depends on the driver version if you have it or not. The first drivers for gf4 couldnt possible expose an extension that didnt even exist.

Originally posted by Mazy:
But since gf4 existed before the ARB_vertex_program specification was finished it ofcourse depends on the driver version if you have it or not. The first drivers for gf4 couldnt possible expose an extension that didnt even exist.

Doesn’t mean anything. That which is allowed by ARB_vertex_program isn’t much more (other than instruction and register counts) than the Geforce 4’s hardware capabilities. As such, most vertex programs written with ARB_vertex_program should easily work on the Geforce 4. If you look at ARB_fragment_program, the Geforce 4 comes nowhere close to meeting the minimum requirements, even ignoring instruction counts. Heck, even ignoring the new instructions and dependant texture reads, there’s still the matter of floating point precision.

I think at the moment the situation with graphic boards is quite frustrating. The gf4 ti is not good enough anymore, the gf fx cards are all disappointing at the moment (5900: too expensive, 5800: too expensive and much too noisy, 5600: slower than a ti4200(!), 5200: cheap but much too slow, generally all too slow for what they are supposed to be). and the ati cards as well if you want to use linux, due to poor drivers support at the moment (afaik). So, what to do if you want to learn/use ARB_fragment_program? I guess, wait some months for better boards, and for learning purposes in the meantime, buy a fx5200. best compromise seems to be a 5600 if you can live with the fact that your old ti4200 is faster .

Jan

the ati cards as well if you want to use linux, due to poor drivers support at the moment (afaik)

I don’t know about the Linux driver situation, but think about it like this. Nothing is going to make the hardware itself faster. However, drivers are always improving. So, eventually, your purchase of a 9500Pro would have good driver support, while your purchase of a 5600 Ultra would never be as fast as you want it.

And if you’re so worried about drivers, pick up a 5600Ultra. Benchmarks show that it is comperable to a 4200; it isn’t slower (in all games and situations). Not only that, it retains its speed better than a 4200 when you turn on antialiasing.

So, what to do if you want to learn/use ARB_fragment_program?

You can always turn on the NV30 emulation on your GeForce. It’ll be slow, but it’ll work.

Also, you seem to be operating on the assumption that everything should be supporting ARB_fragment_program. This is a very powerful extension, exposing a vast wealth of possible graphical features. Also, hardware supporting this is still pretty new. You should be glad that a $100 graphics card can even support it (5200), slow though it may be.

well, the driver issue… what use has a 9500pro for me if it doesn’t run under linux, which is the OS the program I am working on runs with?

And I would expect a 5600 to be much faster than a gf4 ti 4200, which was the cheap budget version one year ago, and as it is only about as fast as a 4200, I think you can really call this “disappointing”. the fx is the “great new thing with the cinefx engine”, and it is SLOWER than its predecessor. can’t really believe that.

And about the fragment program. if you start to learn about fragment shading NOW, you are likely to produce programs within the next months or even years, and as fragment programs are going to be the standard for this in the future, I think is does not really make sense to bother with register combiners or texture_env_combine now as this undoubtedly works fine, but is OUTDATED. So I think it does in fact make sense to discuss which graphics card with the fragment program extension to buy. At least, I find myself in this position and I am, as I said, quite frustrated as it seems that for an affordable amount of money, I can only get a graphics board that is slower than the one I already have, or which probably will not run under linux (ati. btw 9500pro is nearly sold out and 9600 is slower).

So at the moment, it seems like no board is the right one, however the idea to turn on nv30 emulation seems to be quite good .

Jan

quote:
So, what to do if you want to learn/use ARB_fragment_program?

You can always turn on the NV30 emulation on your GeForce. It’ll be slow, but it’ll work.

Also, you seem to be operating on the assumption that everything should be supporting ARB_fragment_program. This is a very powerful extension, exposing a vast wealth of possible graphical features. Also, hardware supporting this is still pretty new. You should be glad that a $100 graphics card can even support it (5200), slow though it may be.