diff options
author | Aras Pranckevicius <aras@nesnausk.org> | 2022-04-27 22:09:27 +0300 |
---|---|---|
committer | Aras Pranckevicius <aras@nesnausk.org> | 2022-05-01 20:10:21 +0300 |
commit | c87f6242b952d3821d7bdbdd8075b27479791448 (patch) | |
tree | 24085e02fb20acbf5cf08a99f2a8cca1d274f01c /source/blender/io/wavefront_obj/importer | |
parent | 33518f9da160cf2d9e91dd7a69cd5788303dcca4 (diff) |
Fix T97644: new 3.2 obj importer does not set blend mode for eevee
The old python importer had a "if do_transparency, set blend_method to
BLEND" type of logic. This bit was missing in the new importer; it was
only setting the eevee blend method when a transparency texture was
present, but not in other cases of transparency (as driven by MTL
"illum" mode).
Reviewd By: Howard Trickey
Differential Revision: https://developer.blender.org/D14783
Diffstat (limited to 'source/blender/io/wavefront_obj/importer')
-rw-r--r-- | source/blender/io/wavefront_obj/importer/obj_import_mtl.cc | 7 | ||||
-rw-r--r-- | source/blender/io/wavefront_obj/importer/obj_import_mtl.hh | 2 |
2 files changed, 6 insertions, 3 deletions
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 f2a8941e8a7..56e3a062cb6 100644 --- a/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc +++ b/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc @@ -122,7 +122,7 @@ ShaderNodetreeWrap::ShaderNodetreeWrap(Main *bmain, const MTLMaterial &mtl_mat, bsdf_ = add_node_to_tree(SH_NODE_BSDF_PRINCIPLED); shader_output_ = add_node_to_tree(SH_NODE_OUTPUT_MATERIAL); - set_bsdf_socket_values(); + set_bsdf_socket_values(mat); add_image_textures(bmain, mat); link_sockets(bsdf_, "BSDF", shader_output_, "Surface", 4); @@ -188,7 +188,7 @@ void ShaderNodetreeWrap::link_sockets(bNode *from_node, nodeAddLink(nodetree_.get(), from_node, from_sock, to_node, to_sock); } -void ShaderNodetreeWrap::set_bsdf_socket_values() +void ShaderNodetreeWrap::set_bsdf_socket_values(Material *mat) { const int illum = mtl_mat_.illum; bool do_highlight = false; @@ -309,6 +309,9 @@ void ShaderNodetreeWrap::set_bsdf_socket_values() set_property_of_socket(SOCK_FLOAT, "Metallic", {metallic}, bsdf_); set_property_of_socket(SOCK_FLOAT, "IOR", {ior}, bsdf_); set_property_of_socket(SOCK_FLOAT, "Alpha", {alpha}, bsdf_); + if (do_tranparency) { + mat->blend_method = MA_BM_BLEND; + } } void ShaderNodetreeWrap::add_image_textures(Main *bmain, Material *mat) diff --git a/source/blender/io/wavefront_obj/importer/obj_import_mtl.hh b/source/blender/io/wavefront_obj/importer/obj_import_mtl.hh index 74bc9f21bc4..12bea1cdc5a 100644 --- a/source/blender/io/wavefront_obj/importer/obj_import_mtl.hh +++ b/source/blender/io/wavefront_obj/importer/obj_import_mtl.hh @@ -82,7 +82,7 @@ class ShaderNodetreeWrap { /** * Set values of sockets in p-BSDF node of the nodetree. */ - void set_bsdf_socket_values(); + void set_bsdf_socket_values(Material *mat); /** * Create image texture, vector and normal mapping nodes from MTL materials and link the * nodes to p-BSDF node. |