diff options
author | Joan Bonet Orantos <LaTerreta> | 2020-12-14 15:42:34 +0300 |
---|---|---|
committer | Kévin Dietrich <kevin.dietrich@mailoo.org> | 2020-12-14 15:44:29 +0300 |
commit | 68d5ad998393856da3285e0d51290b31e5360770 (patch) | |
tree | a28365cc753bbae815d9f37b65ff3a3465d0dc10 /intern/cycles | |
parent | 4b0396695c622d1ac8669600fa820e80b1f0979f (diff) |
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
Diffstat (limited to 'intern/cycles')
-rw-r--r-- | intern/cycles/render/shader.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
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 |