From c73363819de643b6adfcf52ce04ec3f63f3431f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= <17685000+MoritzBrueckner@users.noreply.github.com> Date: Wed, 31 Jan 2024 14:59:25 +0100 Subject: [PATCH] Fix rendering of two sided materials in some render paths --- blender/arm/material/make_mesh.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/blender/arm/material/make_mesh.py b/blender/arm/material/make_mesh.py index 50eb059a15..ad7d0d0fc7 100644 --- a/blender/arm/material/make_mesh.py +++ b/blender/arm/material/make_mesh.py @@ -151,6 +151,9 @@ def make_base(con_mesh, parse_opacity): make_attrib.write_norpos(con_mesh, vert) frag.write_attrib('vec3 n = normalize(wnormal);') + if mat_state.material.arm_two_sided: + frag.write('if (!gl_FrontFacing) n *= -1;') # Flip normal when drawing back-face + if not is_displacement and not vattr_written: make_attrib.write_vertpos(vert) @@ -240,9 +243,6 @@ def make_deferred(con_mesh, rpasses): # Pack gbuffer frag.add_include('std/gbuffer.glsl') - if mat_state.material.arm_two_sided: - frag.write('if (!gl_FrontFacing) n *= -1;') # Flip normal when drawing back-face - frag.write('n /= (abs(n.x) + abs(n.y) + abs(n.z));') frag.write('n.xy = n.z >= 0.0 ? n.xy : octahedronWrap(n.xy);') @@ -342,6 +342,9 @@ def make_forward_mobile(con_mesh): make_attrib.write_norpos(con_mesh, vert) frag.write_attrib('vec3 n = normalize(wnormal);') + if mat_state.material.arm_two_sided: + frag.write('if (!gl_FrontFacing) n *= -1;') # Flip normal when drawing back-face + make_attrib.write_vertpos(vert) frag.add_include('std/math.glsl')