|
@@ -697,10 +697,11 @@ std::string g_szMaterialShader = std::string(
|
|
|
"#ifdef AV_SKINNING \n"
|
|
|
"float4 weights = IN.BlendWeights; \n"
|
|
|
"weights.w = 1.0f - dot( weights.xyz, float3( 1, 1, 1)); \n"
|
|
|
- "float3 objPos = mul( IN.Position, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n"
|
|
|
- "objPos += mul( IN.Position, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n"
|
|
|
- "objPos += mul( IN.Position, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n"
|
|
|
- "objPos += mul( IN.Position, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n"
|
|
|
+ "float4 localPos = float4( IN.Position, 1.0f); \n"
|
|
|
+ "float3 objPos = mul( localPos, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n"
|
|
|
+ "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n"
|
|
|
+ "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n"
|
|
|
+ "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n"
|
|
|
"#else \n"
|
|
|
"float3 objPos = IN.Position; \n"
|
|
|
"#endif // AV_SKINNING \n"
|
|
@@ -733,10 +734,11 @@ std::string g_szMaterialShader = std::string(
|
|
|
"#ifdef AV_SKINNING \n"
|
|
|
"float4 weights = IN.BlendWeights; \n"
|
|
|
"weights.w = 1.0f - dot( weights.xyz, float3( 1, 1, 1)); \n"
|
|
|
- "float3 objPos = mul( IN.Position, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n"
|
|
|
- "objPos += mul( IN.Position, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n"
|
|
|
- "objPos += mul( IN.Position, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n"
|
|
|
- "objPos += mul( IN.Position, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n"
|
|
|
+ "float4 localPos = float4( IN.Position, 1.0f); \n"
|
|
|
+ "float3 objPos = mul( localPos, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n"
|
|
|
+ "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n"
|
|
|
+ "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n"
|
|
|
+ "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n"
|
|
|
"#else \n"
|
|
|
"float3 objPos = IN.Position; \n"
|
|
|
"#endif // AV_SKINNING \n"
|
|
@@ -770,10 +772,11 @@ std::string g_szMaterialShader = std::string(
|
|
|
"#ifdef AV_SKINNING \n"
|
|
|
"float4 weights = IN.BlendWeights; \n"
|
|
|
"weights.w = 1.0f - dot( weights.xyz, float3( 1, 1, 1)); \n"
|
|
|
- "float3 objPos = mul( IN.Position, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n"
|
|
|
- "objPos += mul( IN.Position, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n"
|
|
|
- "objPos += mul( IN.Position, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n"
|
|
|
- "objPos += mul( IN.Position, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n"
|
|
|
+ "float4 localPos = float4( IN.Position, 1.0f); \n"
|
|
|
+ "float3 objPos = mul( localPos, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n"
|
|
|
+ "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n"
|
|
|
+ "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n"
|
|
|
+ "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n"
|
|
|
"#else \n"
|
|
|
"float3 objPos = IN.Position; \n"
|
|
|
"#endif // AV_SKINNING \n"
|