From 09cff506c1b7c6c13c9e6a85687d9d74975cddc1 Mon Sep 17 00:00:00 2001 From: Jesse Yurkovich Date: Thu, 16 Mar 2023 00:10:26 +0100 Subject: [PATCH] Fix #89630: Hide backfaces when using using the "Alpha Blend" blend method For proper display, backfaces should be hidden when using the "Alpha Blend" blend method: https://docs.blender.org/manual/en/dev/render/eevee/materials/settings.html#blend-mode See the mentioned bug for various examples. Pull Request: https://projects.blender.org/blender/blender/pulls/105585 --- scripts/modules/bpy_extras/node_shader_utils.py | 1 + source/blender/io/wavefront_obj/importer/obj_import_mtl.cc | 2 ++ 2 files changed, 3 insertions(+) diff --git a/scripts/modules/bpy_extras/node_shader_utils.py b/scripts/modules/bpy_extras/node_shader_utils.py index 0c349084220..c5b1b1d4499 100644 --- a/scripts/modules/bpy_extras/node_shader_utils.py +++ b/scripts/modules/bpy_extras/node_shader_utils.py @@ -671,6 +671,7 @@ class ShaderImageTextureWrapper(): tree.links.new(node_image.outputs["Alpha" if self.use_alpha else "Color"], self.socket_dst) if self.use_alpha: self.owner_shader.material.blend_method = 'BLEND' + self.owner_shader.material.show_transparent_back = False self._node_image = node_image return self._node_image diff --git a/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc b/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc index 1591faa4738..50ed1e56711 100644 --- a/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc +++ b/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc @@ -315,6 +315,7 @@ static void set_bsdf_socket_values(bNode *bsdf, Material *mat, const MTLMaterial } if (do_tranparency || (alpha >= 0.0f && alpha < 1.0f)) { mat->blend_method = MA_BM_BLEND; + mat->blend_flag |= MA_BL_HIDE_BACKFACE; } if (mtl_mat.sheen >= 0) { @@ -393,6 +394,7 @@ static void add_image_textures(Main *bmain, else if (key == int(MTLTexMapType::Alpha)) { link_sockets(ntree, image_node, "Alpha", bsdf, tex_map_type_to_socket_id[key]); mat->blend_method = MA_BM_BLEND; + mat->blend_flag |= MA_BL_HIDE_BACKFACE; } else { link_sockets(ntree, image_node, "Color", bsdf, tex_map_type_to_socket_id[key]);