[edit - oops, this is be in glsl forum - sorry!]
Just having a play around with gl shading language, and noticed that the compiler seems to optimize out dead uniforms OK, but not always dead attributes.
Example vertex shader:
attribute vec3 dummy;
void main(){
vec3 t=dummy;
gl_Position=gl_ModelViewProjectionMatrix * gl_Vertex;
}
GL reports 2 active attributes (gl_Vertex and dummy) and 1 active uniform (gl_ModelViewProjectionMatrix). However, the ‘dummy’ attribute is dead so should really have been stripped.
If I change dummy to a uniform it is successfully stripped. Also, if I leave it as an attribute and remove the ‘t=dummy’ assignment.
I am currently doing this sort of dead code analysis on GL ASM code very successfully. I was hoping I could move to high level code and get it done for me, but this kind of inconsistency makes me nervous!