[Bf-blender-cvs] [543614a17d2] master: Fix T63415: no Cycles displacement update when updating OSL code

Brecht Van Lommel noreply at git.blender.org
Sun Apr 21 02:20:18 CEST 2019


Commit: 543614a17d235ad6bf09a4cc82969bf92f16e1de
Author: Brecht Van Lommel
Date:   Sun Apr 21 02:18:19 2019 +0200
Branches: master
https://developer.blender.org/rB543614a17d235ad6bf09a4cc82969bf92f16e1de

Fix T63415: no Cycles displacement update when updating OSL code

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

M	intern/cycles/blender/blender_shader.cpp
M	intern/cycles/render/graph.cpp
M	intern/cycles/render/graph.h
M	intern/cycles/render/nodes.cpp

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

diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp
index 5fd60ff7970..d1f823bc2b8 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -908,7 +908,7 @@ static ShaderNode *add_node(Scene *scene,
 
 static bool node_use_modified_socket_name(ShaderNode *node)
 {
-  if (node->special_type == SHADER_SPECIAL_TYPE_SCRIPT)
+  if (node->special_type == SHADER_SPECIAL_TYPE_OSL)
     return false;
 
   return true;
diff --git a/intern/cycles/render/graph.cpp b/intern/cycles/render/graph.cpp
index c284c64b5bf..e5fd39f08b7 100644
--- a/intern/cycles/render/graph.cpp
+++ b/intern/cycles/render/graph.cpp
@@ -721,6 +721,13 @@ void ShaderGraph::compute_displacement_hash()
       int link_id = (input->link) ? input->link->parent->id : 0;
       md5.append((uint8_t *)&link_id, sizeof(link_id));
     }
+
+    if (node->special_type == SHADER_SPECIAL_TYPE_OSL) {
+      /* Hash takes into account socket values, to detect changes
+       * in the code of the node we need an exception. */
+      OSLNode *oslnode = static_cast<OSLNode *>(node);
+      md5.append(oslnode->bytecode_hash);
+    }
   }
 
   displacement_hash = md5.get_hex();
diff --git a/intern/cycles/render/graph.h b/intern/cycles/render/graph.h
index a2c030fd226..b1aa5cf3168 100644
--- a/intern/cycles/render/graph.h
+++ b/intern/cycles/render/graph.h
@@ -61,7 +61,7 @@ enum ShaderNodeSpecialType {
   SHADER_SPECIAL_TYPE_PROXY,
   SHADER_SPECIAL_TYPE_AUTOCONVERT,
   SHADER_SPECIAL_TYPE_GEOMETRY,
-  SHADER_SPECIAL_TYPE_SCRIPT,
+  SHADER_SPECIAL_TYPE_OSL,
   SHADER_SPECIAL_TYPE_IMAGE_SLOT,
   SHADER_SPECIAL_TYPE_CLOSURE,
   SHADER_SPECIAL_TYPE_COMBINE_CLOSURE,
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index 30968ab0c5e..16416a9a009 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -5718,7 +5718,7 @@ void SetNormalNode::compile(OSLCompiler &compiler)
 
 OSLNode::OSLNode() : ShaderNode(new NodeType(NodeType::SHADER))
 {
-  special_type = SHADER_SPECIAL_TYPE_SCRIPT;
+  special_type = SHADER_SPECIAL_TYPE_OSL;
 }
 
 OSLNode::~OSLNode()



More information about the Bf-blender-cvs mailing list