[Bf-blender-cvs] [68d5ad99839] master: Fix T75539: Cycles missing geometry update when switching displacement method

Joan Bonet Orantos noreply at git.blender.org
Mon Dec 14 13:48:53 CET 2020


Commit: 68d5ad998393856da3285e0d51290b31e5360770
Author: Joan Bonet Orantos
Date:   Mon Dec 14 13:42:34 2020 +0100
Branches: master
https://developer.blender.org/rB68d5ad998393856da3285e0d51290b31e5360770

Fix T75539: Cycles missing geometry update when switching displacement method

The shaders were not tagged for a needed geometry update when the displacement method was modified, neither were the Geometry and Object managers.

Reviewed By: kevindietrich

Maniphest Tasks: T75539

Differential Revision: https://developer.blender.org/D8896

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

M	intern/cycles/render/shader.cpp

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

diff --git a/intern/cycles/render/shader.cpp b/intern/cycles/render/shader.cpp
index cf49dedc426..7e06b427e4d 100644
--- a/intern/cycles/render/shader.cpp
+++ b/intern/cycles/render/shader.cpp
@@ -347,8 +347,15 @@ void Shader::tag_update(Scene *scene)
   foreach (ShaderNode *node, graph->nodes)
     node->attributes(this, &attributes);
 
-  if (has_displacement && displacement_method == DISPLACE_BOTH) {
-    attributes.add(ATTR_STD_POSITION_UNDISPLACED);
+  if (has_displacement) {
+    if (displacement_method == DISPLACE_BOTH) {
+      attributes.add(ATTR_STD_POSITION_UNDISPLACED);
+    }
+    if (displacement_method_is_modified()) {
+      need_update_geometry = true;
+      scene->geometry_manager->need_update = true;
+      scene->object_manager->need_flags_update = true;
+    }
   }
 
   /* compare if the attributes changed, mesh manager will check



More information about the Bf-blender-cvs mailing list