Monster0.vert 838 B

123456789101112131415161718192021222324
  1. precision highp float;
  2. uniform mat4 u_modelViewMatrix;
  3. uniform mat4 u_projectionMatrix;
  4. uniform mat3 u_normalMatrix;
  5. uniform mat4 u_jointMatrix[32];
  6. attribute vec3 a_position;
  7. varying vec3 v_position;
  8. attribute vec3 a_normal;
  9. varying vec3 v_normal;
  10. attribute vec2 a_texcoord0;
  11. varying vec2 v_texcoord0;
  12. attribute vec4 a_joint;
  13. attribute vec4 a_weight;
  14. void main(void) {
  15. mat4 skinMat = a_weight.x * u_jointMatrix[int(a_joint.x)];
  16. skinMat += a_weight.y * u_jointMatrix[int(a_joint.y)];
  17. skinMat += a_weight.z * u_jointMatrix[int(a_joint.z)];
  18. skinMat += a_weight.w * u_jointMatrix[int(a_joint.w)];
  19. vec4 pos = u_modelViewMatrix * skinMat * vec4(a_position,1.0);
  20. v_position = pos.xyz;
  21. gl_Position = u_projectionMatrix * pos;
  22. v_normal = u_normalMatrix * mat3(skinMat) * a_normal;
  23. v_texcoord0 = a_texcoord0;
  24. }