Extensions to maximize use of shaders

New extensoins are needed to maximize the use of shaders. for example, currently uploading unifrom data (in Shader 2.0) or Program parameters (int Shader 1.0) are quite slow. A new Set of extensions that would make/allow mapping/transfering a big set of data to those registers on the vertex/pixel shader would be a boost to shaders in general and would allow for faster executoin and increased functionality of the shaders. This could be helpful in skeletal animation, where the shader can perform the the entire process on its own or with little preprocessing, inistead of the current trend of haveing the CPU do most of the work regarding the skeleton and just letting the shader do the vertex transformations only …
It would be benificial if such extensions can actually map data directly from superbuffers.

A new Set of extensions that would make/allow mapping/transfering a big set of data to those registers on the vertex/pixel shader would be a boost to shaders in general and would allow for faster executoin and increased functionality of the shaders.

How is what you’re asking different from vertex attributes?

Vertex Attributes vary/change per vertex. They also eat up a lot of bandwidth, and there is also a small fixed number of them available.
But Program parameters on the other hand are specific to a program or a running instance of a program … you load them only once according to the needs of the program, just before it runs. Those params are supposed to be stored on the GPU or very close to the GPU (this is implementation specific) thus it saves a lot of bandwidth. especially when you don’t need to reload the same data to the GPU per vertex (as in the case if params were passed as Vertex attribs.).

If you need to change a program parameter often, then it’s a good idea to use a light update mechanism such as a vertex attribute. If, on the other hand, the parameter changes only rarely, or not very often, then the delay caused by uploading a new uniform is negligeable.

Secondly, vertex data can also be stored on-board the GPU’s memory.

As for having a limited number of them, you have at least 16*4 = 64 scalar attributes. How many do you need? If your program is complex enough to warrent more, then you’re likely not CPU limited and thus have plenty of time to update uniforms.

So, which is it?

for example, currently uploading unifrom data (in Shader 2.0) or Program parameters (int Shader 1.0) are quite slow.

How “quite slow” is it? I haven’t tried to time the performance of these operations, but I don’t imagine that it would be any slower than regular state changes (especially for ATi cards, who build the fixed-function pipe out of their programmable hardware).

If you need to change a program parameter often, then it’s a good idea to use a light update mechanism such as a vertex attribute.

He’s talking about skinning. Until we get 100+ vertex attributes, that’s not a reasonable update mechanism.