attribute vec3 a_position; uniform mat4 u_projViewWorldTrans; #if defined(diffuseTextureFlag) && defined(blendedFlag) #define blendedTextureFlag attribute vec2 a_texCoord0; varying vec2 v_texCoords0; #endif #ifdef boneWeight0Flag #define boneWeightsFlag attribute vec2 a_boneWeight0; #endif //boneWeight0Flag #ifdef boneWeight1Flag #ifndef boneWeightsFlag #define boneWeightsFlag #endif attribute vec2 a_boneWeight1; #endif //boneWeight1Flag #ifdef boneWeight2Flag #ifndef boneWeightsFlag #define boneWeightsFlag #endif attribute vec2 a_boneWeight2; #endif //boneWeight2Flag #ifdef boneWeight3Flag #ifndef boneWeightsFlag #define boneWeightsFlag #endif attribute vec2 a_boneWeight3; #endif //boneWeight3Flag #ifdef boneWeight4Flag #ifndef boneWeightsFlag #define boneWeightsFlag #endif attribute vec2 a_boneWeight4; #endif //boneWeight4Flag #ifdef boneWeight5Flag #ifndef boneWeightsFlag #define boneWeightsFlag #endif attribute vec2 a_boneWeight5; #endif //boneWeight5Flag #ifdef boneWeight6Flag #ifndef boneWeightsFlag #define boneWeightsFlag #endif attribute vec2 a_boneWeight6; #endif //boneWeight6Flag #ifdef boneWeight7Flag #ifndef boneWeightsFlag #define boneWeightsFlag #endif attribute vec2 a_boneWeight7; #endif //boneWeight7Flag #if defined(numBones) && defined(boneWeightsFlag) #if (numBones > 0) #define skinningFlag #endif #endif #if defined(numBones) #if numBones > 0 uniform mat4 u_bones[numBones]; #endif //numBones #endif #ifdef PackedDepthFlag varying float v_depth; #endif //PackedDepthFlag void main() { #ifdef blendedTextureFlag v_texCoords0 = a_texCoord0; #endif // blendedTextureFlag #ifdef skinningFlag mat4 skinning = mat4(0.0); #ifdef boneWeight0Flag skinning += (a_boneWeight0.y) * u_bones[int(a_boneWeight0.x)]; #endif //boneWeight0Flag #ifdef boneWeight1Flag skinning += (a_boneWeight1.y) * u_bones[int(a_boneWeight1.x)]; #endif //boneWeight1Flag #ifdef boneWeight2Flag skinning += (a_boneWeight2.y) * u_bones[int(a_boneWeight2.x)]; #endif //boneWeight2Flag #ifdef boneWeight3Flag skinning += (a_boneWeight3.y) * u_bones[int(a_boneWeight3.x)]; #endif //boneWeight3Flag #ifdef boneWeight4Flag skinning += (a_boneWeight4.y) * u_bones[int(a_boneWeight4.x)]; #endif //boneWeight4Flag #ifdef boneWeight5Flag skinning += (a_boneWeight5.y) * u_bones[int(a_boneWeight5.x)]; #endif //boneWeight5Flag #ifdef boneWeight6Flag skinning += (a_boneWeight6.y) * u_bones[int(a_boneWeight6.x)]; #endif //boneWeight6Flag #ifdef boneWeight7Flag skinning += (a_boneWeight7.y) * u_bones[int(a_boneWeight7.x)]; #endif //boneWeight7Flag #endif //skinningFlag #ifdef skinningFlag vec4 pos = u_projViewWorldTrans * skinning * vec4(a_position, 1.0); #else vec4 pos = u_projViewWorldTrans * vec4(a_position, 1.0); #endif #ifdef PackedDepthFlag v_depth = pos.z / pos.w * 0.5 + 0.5; #endif //PackedDepthFlag gl_Position = pos; }