[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