I want to make use of either the GL_EXT_vertex_weighting or GL_ARB_vertex_blend extensions. Will either one be supported on both ATI and NVidia cards?
Probably not. Both of these extensions are rendered pretty much useless by vertex program/shader extensions. You can write your own versions of these with those more powerful extensions. Unfortunately, neither nVidia nor ATi plan on supporting the same vertex program extension.
The reason these extensions are useless is that nVIDIA support two matrices, and ATI support four. That’s certainly not enough to render a fully skinned figure :-/ In addition, when you only support two matrices, you can’t even do things like render a triangle which consists of once vertex that’s bound to bones A and B, and another vertex that’s bound to bones B and C.
These extensions force you to split your geometry in a gazillion small buffers, each of which requires significant set-up, leading to an enormous waste of time. It’s faster to do the blending yourself in unoptimized C code…
What’s even worse: these extensions require that you specify a weight per POSSIBLE matrix, so if they supported 16 matrices, you’d have to specify 16 weights. Per vertex. Yuck!
Do what the man said, and build a vertex program/shader to do your blending, using indirect addressing. You pick the trade-off between speed and quality. And there are no per-triangle limitations, only per-vertex. Yum!
Except you’re likely to run out of matrix constant space for the vertex programs, if you’re doing a regular humanoid, and have to split your mesh in two or three pieces. Still beats those other extensions.
[This message has been edited by jwatte (edited 04-17-2002).]
Thanks for the replies. I am actually not doing skeletal animation. I just want to add a subtle motion to a display list. I will have to split up my list for 2 matrices but I think 4 would be enough.
A Vertex program would be great but I would rather use an extension that is supported by multiple manufacturers. I guess I can use the vertex blend extension on ATI and an NVidia vertex program.
Anybody know any good samples for vertex programs similar to this (other than nvidia.com)?
But when you try to use a vertex program you wil have to program the standard pipeline again (lights, texgen,…), with these extensions you still use the “standard” pipeline.
(Or am I wrong on this)
Originally posted by Korval:
Unfortunately, neither nVidia nor ATi plan on supporting the same vertex program extension.
That would be nice… Are you referring to GL 2, or something before then?
Relatively near future. Read your ARB minutes (I think they’ve been posted for the March meeting).