From 6d0e4c2662737b409de27be993c7a95f4fd87768 Mon Sep 17 00:00:00 2001 From: rdb Date: Mon, 15 Jun 2015 00:19:52 +0200 Subject: [PATCH] Correct scaling and normalizations of binormals and tangents in generated shaders --- panda/src/pgraphnodes/shaderGenerator.cxx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/panda/src/pgraphnodes/shaderGenerator.cxx b/panda/src/pgraphnodes/shaderGenerator.cxx index 90265514ed..9b64a038b5 100644 --- a/panda/src/pgraphnodes/shaderGenerator.cxx +++ b/panda/src/pgraphnodes/shaderGenerator.cxx @@ -713,6 +713,8 @@ synthesize_shader(const RenderState *rs) { text << "\t uniform float4x4 trans_model_to_view,\n"; eye_position_freg = alloc_freg(); text << "\t out float4 l_eye_position : " << eye_position_freg << ",\n"; + } else if ((_lighting || _out_aux_normal) && (_map_index_normal >= 0 && _auto_normal_on)) { + text << "\t uniform float4x4 trans_model_to_view,\n"; } if (_need_eye_normal) { eye_normal_freg = alloc_freg(); @@ -784,9 +786,9 @@ synthesize_shader(const RenderState *rs) { text << "\t l_color = vtx_color;\n"; } if ((_lighting || _out_aux_normal) && (_map_index_normal >= 0 && _auto_normal_on)) { - text << "\t l_tangent.xyz = mul((float3x3)tpose_view_to_model, vtx_" << tangent_input << ".xyz);\n"; + text << "\t l_tangent.xyz = normalize(mul((float3x3)trans_model_to_view, vtx_" << tangent_input << ".xyz));\n"; text << "\t l_tangent.w = 0;\n"; - text << "\t l_binormal.xyz = mul((float3x3)tpose_view_to_model, -vtx_" << binormal_input << ".xyz);\n"; + text << "\t l_binormal.xyz = normalize(mul((float3x3)trans_model_to_view, -vtx_" << binormal_input << ".xyz));\n"; text << "\t l_binormal.w = 0;\n"; } if (_shadows && _auto_shadow_on) {