D3D shader generator: Fix an issue with 4x3 vs 4x4 matrices that caused warnings to be reported (I think).

Make the GL code for this case (skinning without normal) more similar.
This commit is contained in:
Henrik Rydgard 2015-01-12 20:37:33 +01:00
parent 091593f0c9
commit df62bc42b7
2 changed files with 4 additions and 5 deletions

View File

@ -371,7 +371,6 @@ void GenerateVertexShaderDX9(int prim, char *buffer, bool useHWTransform) {
#endif
#endif
WRITE(p, ";\n");
// Trying to simplify this results in bugs in LBP...
@ -380,10 +379,10 @@ void GenerateVertexShaderDX9(int prim, char *buffer, bool useHWTransform) {
if (hasNormal) {
WRITE(p, " float3 skinnednormal = mul(float4(%sIn.normal, 0.0), skinMatrix);\n", flipNormal ? "-" : "");
WRITE(p, " float3 worldnormal = normalize(mul(float4(skinnednormal, 0.0), u_world));\n");
} else {
WRITE(p, " float3 worldnormal = mul( mul( float4(0.0, 0.0, 1.0, 0.0), skinMatrix), u_world);\n");
WRITE(p, " float3 skinnednormal = mul(float4(0.0, 0.0, %s1.0, 0.0), skinMatrix);\n", flipNormal ? "-" : "");
}
WRITE(p, " float3 worldnormal = normalize(mul(float4(skinnednormal, 0.0), u_world));\n");
}
WRITE(p, " float4 viewPos = float4(mul(float4(worldpos, 1.0), u_view), 1.0);\n");

View File

@ -463,10 +463,10 @@ void GenerateVertexShader(int prim, u32 vertType, char *buffer, bool useHWTransf
if (hasNormal) {
WRITE(p, " mediump vec3 skinnednormal = (skinMatrix * vec4(%snormal, 0.0)).xyz %s;\n", flipNormal ? "-" : "", factor);
WRITE(p, " mediump vec3 worldnormal = normalize((u_world * vec4(skinnednormal, 0.0)).xyz);\n");
} else {
WRITE(p, " mediump vec3 worldnormal = (u_world * (skinMatrix * vec4(0.0, 0.0, 1.0, 0.0))).xyz;\n");
WRITE(p, " mediump vec3 skinnednormal = (skinMatrix * vec4(0.0, 0.0, %s1.0, 0.0)).xyz %s;\n", flipNormal ? "-" : "", factor);
}
WRITE(p, " mediump vec3 worldnormal = normalize((u_world * vec4(skinnednormal, 0.0)).xyz);\n");
}
WRITE(p, " vec4 viewPos = u_view * vec4(worldpos, 1.0);\n");