basic_animated.vs 740 B

12345678910111213141516171819202122232425262728293031
  1. #version 120
  2. attribute vec3 bone_indicies;
  3. attribute vec3 bone_weights;
  4. uniform mat4 world_matrix;
  5. uniform mat4 proj_matrix;
  6. uniform mat4 view_matrix;
  7. uniform mat4 bone_world_matrices[32];
  8. uniform int bone_count;
  9. varying vec3 normal;
  10. void main() {
  11. vec4 blendpos = vec4(0.0,0.0,0.0,0.0);
  12. for (int i = 0; i < 3; i++) {
  13. blendpos += vec4((bone_world_matrices[int(bone_indicies[i])] * gl_Vertex).xyz, 1.0) * bone_weights[i];
  14. }
  15. vec3 blendnorm = vec3(0.0,0.0,0.0);
  16. for (int i = 0; i < 3; i++) {
  17. blendnorm += (mat3(bone_world_matrices[int(bone_indicies[i])]) * gl_Normal) * bone_weights[i];
  18. }
  19. normal = mat3(world_matrix) * blendnorm;
  20. gl_Position = proj_matrix * view_matrix * world_matrix * blendpos;
  21. }