12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- const char* cc3D_PositionTex_vert = R"(
- attribute vec4 a_position;
- attribute vec2 a_texCoord;
- varying vec2 TextureCoordOut;
- void main(void)
- {
- gl_Position = CC_MVPMatrix * a_position;
- TextureCoordOut = a_texCoord;
- TextureCoordOut.y = 1.0 - TextureCoordOut.y;
- }
- )";
- const char* cc3D_SkinPositionTex_vert = R"(
- attribute vec3 a_position;
- attribute vec4 a_blendWeight;
- attribute vec4 a_blendIndex;
- attribute vec2 a_texCoord;
- const int SKINNING_JOINT_COUNT = 60;
- // Uniforms
- uniform vec4 u_matrixPalette[SKINNING_JOINT_COUNT * 3];
- // Varyings
- varying vec2 TextureCoordOut;
- vec4 getPosition()
- {
- float blendWeight = a_blendWeight[0];
- int matrixIndex = int (a_blendIndex[0]) * 3;
- vec4 matrixPalette1 = u_matrixPalette[matrixIndex] * blendWeight;
- vec4 matrixPalette2 = u_matrixPalette[matrixIndex + 1] * blendWeight;
- vec4 matrixPalette3 = u_matrixPalette[matrixIndex + 2] * blendWeight;
-
-
- blendWeight = a_blendWeight[1];
- if (blendWeight > 0.0)
- {
- matrixIndex = int(a_blendIndex[1]) * 3;
- matrixPalette1 += u_matrixPalette[matrixIndex] * blendWeight;
- matrixPalette2 += u_matrixPalette[matrixIndex + 1] * blendWeight;
- matrixPalette3 += u_matrixPalette[matrixIndex + 2] * blendWeight;
-
- blendWeight = a_blendWeight[2];
- if (blendWeight > 0.0)
- {
- matrixIndex = int(a_blendIndex[2]) * 3;
- matrixPalette1 += u_matrixPalette[matrixIndex] * blendWeight;
- matrixPalette2 += u_matrixPalette[matrixIndex + 1] * blendWeight;
- matrixPalette3 += u_matrixPalette[matrixIndex + 2] * blendWeight;
-
- blendWeight = a_blendWeight[3];
- if (blendWeight > 0.0)
- {
- matrixIndex = int(a_blendIndex[3]) * 3;
- matrixPalette1 += u_matrixPalette[matrixIndex] * blendWeight;
- matrixPalette2 += u_matrixPalette[matrixIndex + 1] * blendWeight;
- matrixPalette3 += u_matrixPalette[matrixIndex + 2] * blendWeight;
- }
- }
- }
- vec4 _skinnedPosition;
- vec4 position = vec4(a_position, 1.0);
- _skinnedPosition.x = dot(position, matrixPalette1);
- _skinnedPosition.y = dot(position, matrixPalette2);
- _skinnedPosition.z = dot(position, matrixPalette3);
- _skinnedPosition.w = position.w;
-
- return _skinnedPosition;
- }
- void main()
- {
- vec4 position = getPosition();
- gl_Position = CC_MVPMatrix * position;
-
- TextureCoordOut = a_texCoord;
- TextureCoordOut.y = 1.0 - TextureCoordOut.y;
- }
- )";
|