skinnedShadow.vs 859 B

1234567891011121314151617181920212223242526
  1. #version 300 es
  2. in vec3 vertexPosition;
  3. in vec4 vertexBoneIds;
  4. in vec4 vertexBoneWeights;
  5. #define MAX_BONE_NUM 128
  6. uniform mat4 boneMatrices[MAX_BONE_NUM];
  7. uniform mat4 mvp;
  8. void main()
  9. {
  10. int boneIndex0 = int(vertexBoneIds.x);
  11. int boneIndex1 = int(vertexBoneIds.y);
  12. int boneIndex2 = int(vertexBoneIds.z);
  13. int boneIndex3 = int(vertexBoneIds.w);
  14. vec4 skinnedPosition =
  15. vertexBoneWeights.x * (boneMatrices[boneIndex0] * vec4(vertexPosition, 1.0f)) +
  16. vertexBoneWeights.y * (boneMatrices[boneIndex1] * vec4(vertexPosition, 1.0f)) +
  17. vertexBoneWeights.z * (boneMatrices[boneIndex2] * vec4(vertexPosition, 1.0f)) +
  18. vertexBoneWeights.w * (boneMatrices[boneIndex3] * vec4(vertexPosition, 1.0f));
  19. gl_Position = mvp * vec4(skinnedPosition.xyz / skinnedPosition.w, 1.0f);
  20. }