[SOLVED] Skeletal Animation Shader

Started by haubna, June 21, 2012, 13:22:08

Previous topic - Next topic

haubna

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 :)