[Bf-blender-cvs] [9299a88d7c6] cycles_procedural_api: cleanup, merge loops on shaders for detecting changes

Kévin Dietrich noreply at git.blender.org
Mon Nov 16 13:10:51 CET 2020


Commit: 9299a88d7c67283e18aa176a9971d83f4d7cd710
Author: Kévin Dietrich
Date:   Tue Nov 10 16:05:20 2020 +0100
Branches: cycles_procedural_api
https://developer.blender.org/rB9299a88d7c67283e18aa176a9971d83f4d7cd710

cleanup, merge loops on shaders for detecting changes

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

M	intern/cycles/render/geometry.cpp

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

diff --git a/intern/cycles/render/geometry.cpp b/intern/cycles/render/geometry.cpp
index 24997b56ae6..1e3400f81ed 100644
--- a/intern/cycles/render/geometry.cpp
+++ b/intern/cycles/render/geometry.cpp
@@ -1372,9 +1372,31 @@ void GeometryManager::device_update_preprocess(Device *device, Scene *scene, Pro
       if (shader->has_volume) {
         geom->has_volume = true;
       }
+
       if (shader->has_surface_bssrdf) {
         geom->has_surface_bssrdf = true;
       }
+
+      if (shader->need_update_uvs) {
+        // todo: attributes
+        geom->tag_modified();
+      }
+
+      if (shader->need_update_attribute) {
+        // todo: attributes
+        geom->tag_modified();
+      }
+
+      if (shader->need_update_displacement) {
+        // tag displacement related sockets as modified
+        if (geom->is_mesh()) {
+          Mesh *mesh = static_cast<Mesh *>(geom);
+          mesh->tag_verts_modified();
+          mesh->tag_subd_dicing_rate_modified();
+          mesh->tag_subd_max_level_modified();
+          mesh->tag_subd_objecttoworld_modified();
+        }
+      }
     }
 
     /* Re-create volume mesh if we will rebuild or refit the BVH. Note we
@@ -1531,30 +1553,6 @@ void GeometryManager::device_update(Device *device,
     });
 
     foreach (Geometry *geom, scene->geometry) {
-      foreach (Node *node, geom->get_used_shaders()) {
-        Shader *shader = static_cast<Shader *>(node);
-        if (shader->need_update_uvs) {
-          // todo: attributes
-          geom->tag_modified();
-        }
-
-        if (shader->need_update_attribute) {
-          // todo: attributes
-          geom->tag_modified();
-        }
-
-        if (shader->need_update_displacement) {
-          // tag displacement related sockets as modified
-          if (geom->is_mesh()) {
-            Mesh *mesh = static_cast<Mesh *>(geom);
-            mesh->tag_verts_modified();
-            mesh->tag_subd_dicing_rate_modified();
-            mesh->tag_subd_max_level_modified();
-            mesh->tag_subd_objecttoworld_modified();
-          }
-        }
-      }
-
       if (geom->is_modified() &&
           (geom->geometry_type == Geometry::MESH || geom->geometry_type == Geometry::VOLUME)) {
         Mesh *mesh = static_cast<Mesh *>(geom);



More information about the Bf-blender-cvs mailing list