Hey guys,
I got a little problem with my vertex shader:
#version 150
uniform mat4 bones[128]; // inverse bone bind matrices multiplied with the interpolated bone matrices
uniform mat4 bsm; // bind shape matrix
attribute vec4 weights;
attribute vec4 indices;
void main()
{
vec4 v = gl_Vertex;
vec4 finalVertex = vec4(0.0);
int index1 = int(indices.x);
finalVertex = bones[index1] * v; // right here... if i use bones[1] instead of bones[index1] it works fine :o (i am 100% sure that index1 == 1)
gl_FrontColor = weights;
gl_Position = gl_ModelViewProjectionMatrix * finalVertex;
}
Someone knows why this happens?
EDIT:
- I read about that dynamic indexing isn't working on lower GLSL versions. Any workarounds?
- This error only exists on an ATI graphics card. On my NVIDIA GC everything works fine.
SOLVED:
- I exceeded the maximum usable uniforms and thus had to reduce the mat4 bones[128] to mat4[50]. I think i'll use quaternions in the future