1 attribute vec3 a_position; 2 uniform mat4 u_projViewWorldTrans; 3 4 #ifdef boneWeight0Flag 5 #define boneWeightsFlag 6 attribute vec2 a_boneWeight0; 7 #endif //boneWeight0Flag 8 9 #ifdef boneWeight1Flag 10 #ifndef boneWeightsFlag 11 #define boneWeightsFlag 12 #endif 13 attribute vec2 a_boneWeight1; 14 #endif //boneWeight1Flag 15 16 #ifdef boneWeight2Flag 17 #ifndef boneWeightsFlag 18 #define boneWeightsFlag 19 #endif 20 attribute vec2 a_boneWeight2; 21 #endif //boneWeight2Flag 22 23 #ifdef boneWeight3Flag 24 #ifndef boneWeightsFlag 25 #define boneWeightsFlag 26 #endif 27 attribute vec2 a_boneWeight3; 28 #endif //boneWeight3Flag 29 30 #ifdef boneWeight4Flag 31 #ifndef boneWeightsFlag 32 #define boneWeightsFlag 33 #endif 34 attribute vec2 a_boneWeight4; 35 #endif //boneWeight4Flag 36 37 #ifdef boneWeight5Flag 38 #ifndef boneWeightsFlag 39 #define boneWeightsFlag 40 #endif 41 attribute vec2 a_boneWeight5; 42 #endif //boneWeight5Flag 43 44 #ifdef boneWeight6Flag 45 #ifndef boneWeightsFlag 46 #define boneWeightsFlag 47 #endif 48 attribute vec2 a_boneWeight6; 49 #endif //boneWeight6Flag 50 51 #ifdef boneWeight7Flag 52 #ifndef boneWeightsFlag 53 #define boneWeightsFlag 54 #endif 55 attribute vec2 a_boneWeight7; 56 #endif //boneWeight7Flag 57 58 #if defined(numBones) && defined(boneWeightsFlag) 59 #if (numBones > 0) 60 #define skinningFlag 61 #endif 62 #endif 63 64 #if defined(numBones) 65 #if numBones > 0 66 uniform mat4 u_bones[numBones]; 67 #endif //numBones 68 #endif 69 70 void main() 71 { 72 #ifdef skinningFlag 73 mat4 skinning = mat4(0.0); 74 #ifdef boneWeight0Flag 75 skinning += (a_boneWeight0.y) * u_bones[int(a_boneWeight0.x)]; 76 #endif //boneWeight0Flag 77 #ifdef boneWeight1Flag 78 skinning += (a_boneWeight1.y) * u_bones[int(a_boneWeight1.x)]; 79 #endif //boneWeight1Flag 80 #ifdef boneWeight2Flag 81 skinning += (a_boneWeight2.y) * u_bones[int(a_boneWeight2.x)]; 82 #endif //boneWeight2Flag 83 #ifdef boneWeight3Flag 84 skinning += (a_boneWeight3.y) * u_bones[int(a_boneWeight3.x)]; 85 #endif //boneWeight3Flag 86 #ifdef boneWeight4Flag 87 skinning += (a_boneWeight4.y) * u_bones[int(a_boneWeight4.x)]; 88 #endif //boneWeight4Flag 89 #ifdef boneWeight5Flag 90 skinning += (a_boneWeight5.y) * u_bones[int(a_boneWeight5.x)]; 91 #endif //boneWeight5Flag 92 #ifdef boneWeight6Flag 93 skinning += (a_boneWeight6.y) * u_bones[int(a_boneWeight6.x)]; 94 #endif //boneWeight6Flag 95 #ifdef boneWeight7Flag 96 skinning += (a_boneWeight7.y) * u_bones[int(a_boneWeight7.x)]; 97 #endif //boneWeight7Flag 98 #endif //skinningFlag 99 100 #ifdef skinningFlag 101 vec4 pos = u_projViewWorldTrans * skinning * vec4(a_position, 1.0); 102 #else 103 vec4 pos = u_projViewWorldTrans * vec4(a_position, 1.0); 104 #endif 105 106 gl_Position = pos; 107 }