[Bf-blender-cvs] [dbc4f6fdc90] master: Fix error rendering Cycles shader nodes from before 2013

Brecht Van Lommel noreply at git.blender.org
Thu Aug 19 20:13:05 CEST 2021


Commit: dbc4f6fdc900493a9d03c88afe48beae6289fb30
Author: Brecht Van Lommel
Date:   Thu Aug 19 20:08:44 2021 +0200
Branches: master
https://developer.blender.org/rBdbc4f6fdc900493a9d03c88afe48beae6289fb30

Fix error rendering Cycles shader nodes from before 2013

After the recent changes to use socket identifiers instead of names.

===================================================================

M	intern/cycles/blender/blender_shader.cpp

===================================================================

diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp
index 24819bacbb5..de7b2761d00 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -1020,13 +1020,21 @@ static ShaderInput *node_find_input_by_name(ShaderNode *node, BL::NodeSocket &b_
     input = node->input(name.c_str());
 
     if (!input) {
-      /* Different internal numbering of two sockets with same name. */
+      /* Different internal numbering of two sockets with same name.
+       * Note that the Blender convention for unique socket names changed
+       * from . to _ at some point, so we check both to handle old files. */
       if (string_endswith(name, "_001")) {
         string_replace(name, "_001", "2");
       }
+      else if (string_endswith(name, ".001")) {
+        string_replace(name, ".001", "2");
+      }
       else if (string_endswith(name, "_002")) {
         string_replace(name, "_002", "3");
       }
+      else if (string_endswith(name, ".002")) {
+        string_replace(name, ".002", "3");
+      }
       else {
         name += "1";
       }



More information about the Bf-blender-cvs mailing list