Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorJoan Bonet Orantos <LaTerreta>2020-12-14 15:42:34 +0300
committerKévin Dietrich <kevin.dietrich@mailoo.org>2020-12-14 15:44:29 +0300
commit68d5ad998393856da3285e0d51290b31e5360770 (patch)
treea28365cc753bbae815d9f37b65ff3a3465d0dc10 /intern
parent4b0396695c622d1ac8669600fa820e80b1f0979f (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')
-rw-r--r--intern/cycles/render/shader.cpp11
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