[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