[Bf-blender-cvs] [6b1ae9fc850] cycles_procedural_api: avoid overloading Node::set for array<Shader *>

Kévin Dietrich noreply at git.blender.org
Tue Sep 22 14:14:46 CEST 2020


Commit: 6b1ae9fc85018180e9bf132c0eeefeb74791400b
Author: Kévin Dietrich
Date:   Mon Sep 21 13:58:24 2020 +0200
Branches: cycles_procedural_api
https://developer.blender.org/rB6b1ae9fc85018180e9bf132c0eeefeb74791400b

avoid overloading Node::set for array<Shader *>

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

M	intern/cycles/blender/blender_curves.cpp
M	intern/cycles/blender/blender_geometry.cpp
M	intern/cycles/blender/blender_light.cpp
M	intern/cycles/blender/blender_mesh.cpp
M	intern/cycles/blender/blender_object.cpp
M	intern/cycles/blender/blender_shader.cpp
M	intern/cycles/blender/blender_sync.h
M	intern/cycles/blender/blender_volume.cpp
M	intern/cycles/graph/node.cpp
M	intern/cycles/graph/node.h
M	intern/cycles/render/alembic.cpp
M	intern/cycles/render/alembic.h
M	intern/cycles/render/bake.cpp
M	intern/cycles/render/geometry.cpp
M	intern/cycles/render/geometry.h
M	intern/cycles/render/hair.cpp
M	intern/cycles/render/light.cpp
M	intern/cycles/render/mesh.cpp
M	intern/cycles/render/mesh_displace.cpp
M	intern/cycles/render/nodes.cpp
M	intern/cycles/render/object.cpp
M	intern/cycles/render/shader.cpp
M	intern/cycles/render/volume.cpp

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

diff --git a/intern/cycles/blender/blender_curves.cpp b/intern/cycles/blender/blender_curves.cpp
index 1b7e88840d1..e79c5c6933e 100644
--- a/intern/cycles/blender/blender_curves.cpp
+++ b/intern/cycles/blender/blender_curves.cpp
@@ -820,7 +820,7 @@ void BlenderSync::sync_hair(Hair *hair, BL::Object &b_ob, bool motion, int motio
 void BlenderSync::sync_hair(BL::Depsgraph b_depsgraph,
                             BL::Object b_ob,
                             Hair *hair,
-                            array<Shader *> &used_shaders)
+                            array<Node *> &used_shaders)
 {
   hair->clear();
   hair->set_used_shaders(used_shaders);
diff --git a/intern/cycles/blender/blender_geometry.cpp b/intern/cycles/blender/blender_geometry.cpp
index 9daaf20cfc1..41dfa090d96 100644
--- a/intern/cycles/blender/blender_geometry.cpp
+++ b/intern/cycles/blender/blender_geometry.cpp
@@ -57,7 +57,7 @@ Geometry *BlenderSync::sync_geometry(BL::Depsgraph &b_depsgraph,
   Geometry::Type geom_type = determine_geom_type(b_ob, use_particle_hair);
 
   /* Find shader indices. */
-  array<Shader *> used_shaders;
+  array<Node *> used_shaders;
 
   BL::Object::material_slots_iterator slot;
   for (b_ob.material_slots.begin(slot); slot != b_ob.material_slots.end(); ++slot) {
@@ -113,7 +113,8 @@ Geometry *BlenderSync::sync_geometry(BL::Depsgraph &b_depsgraph,
        * because the shader needs different geometry attributes. */
       bool attribute_recalc = false;
 
-      foreach (Shader *shader, geom->get_used_shaders()) {
+      foreach (Node *node, geom->get_used_shaders()) {
+        Shader *shader = static_cast<Shader *>(node);
         if (shader->need_update_geometry) {
           attribute_recalc = true;
         }
diff --git a/intern/cycles/blender/blender_light.cpp b/intern/cycles/blender/blender_light.cpp
index 77a914e3b8c..6c9f61e6caa 100644
--- a/intern/cycles/blender/blender_light.cpp
+++ b/intern/cycles/blender/blender_light.cpp
@@ -115,9 +115,9 @@ void BlenderSync::sync_light(BL::Object &b_parent,
   light->set_tfm(tfm);
 
   /* shader */
-  array<Shader *> used_shaders;
+  array<Node *> used_shaders;
   find_shader(b_light, used_shaders, scene->default_light);
-  light->set_shader(used_shaders[0]);
+  light->set_shader(static_cast<Shader *>(used_shaders[0]));
 
   /* shadow */
   PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp
index 97e7a084361..6d13848513e 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -733,7 +733,7 @@ static void attr_create_random_per_island(Scene *scene,
 static void create_mesh(Scene *scene,
                         Mesh *mesh,
                         BL::Mesh &b_mesh,
-                        const array<Shader *> &used_shaders,
+                        const array<Node *> &used_shaders,
                         bool subdivision = false,
                         bool subdivide_uvs = true)
 {
@@ -876,7 +876,7 @@ static void create_subd_mesh(Scene *scene,
                              Mesh *mesh,
                              BL::Object &b_ob,
                              BL::Mesh &b_mesh,
-                             const array<Shader *> &used_shaders,
+                             const array<Node *> &used_shaders,
                              float dicing_rate,
                              int max_subdivisions)
 {
@@ -1017,7 +1017,7 @@ static void sync_mesh_fluid_motion(BL::Object &b_ob, Scene *scene, Mesh *mesh)
 void BlenderSync::sync_mesh(BL::Depsgraph b_depsgraph,
                             BL::Object b_ob,
                             Mesh *mesh,
-                            array<Shader *> &used_shaders)
+                            array<Node *> &used_shaders)
 {
   if (mesh->get_time_stamp() == b_depsgraph.scene().frame_current()) {
     return;
diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp
index 447a7bd7e2f..d3cde741474 100644
--- a/intern/cycles/blender/blender_object.cpp
+++ b/intern/cycles/blender/blender_object.cpp
@@ -375,7 +375,7 @@ void BlenderSync::sync_procedural(BL::Object &b_ob,
   Shader *default_shader = (b_ob.type() == BL::Object::type_VOLUME) ? scene->default_volume :
                                                                       scene->default_surface;
   /* Find shader indices. */
-  array<Shader *> used_shaders;
+  array<Node *> used_shaders;
 
   BL::Object::material_slots_iterator slot;
   for (b_ob.material_slots.begin(slot); slot != b_ob.material_slots.end(); ++slot) {
diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp
index f03e257c0a0..dda8a2aa4f3 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -42,7 +42,7 @@ typedef map<string, ConvertNode *> ProxyMap;
 
 /* Find */
 
-void BlenderSync::find_shader(BL::ID &id, array<Shader *> &used_shaders, Shader *default_shader)
+void BlenderSync::find_shader(BL::ID &id, array<Node *> &used_shaders, Shader *default_shader)
 {
   Shader *shader = (id) ? shader_map.find(id) : default_shader;
 
diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h
index 49e080e755f..cdb02ed837c 100644
--- a/intern/cycles/blender/blender_sync.h
+++ b/intern/cycles/blender/blender_sync.h
@@ -153,20 +153,20 @@ class BlenderSync {
                        float motion_time);
 
   /* Volume */
-  void sync_volume(BL::Object &b_ob, Volume *volume, array<Shader *> &used_shaders);
+  void sync_volume(BL::Object &b_ob, Volume *volume, array<Node *> &used_shaders);
 
   /* Mesh */
   void sync_mesh(BL::Depsgraph b_depsgraph,
                  BL::Object b_ob,
                  Mesh *mesh,
-                 array<Shader *> &used_shaders);
+                 array<Node *> &used_shaders);
   void sync_mesh_motion(BL::Depsgraph b_depsgraph, BL::Object b_ob, Mesh *mesh, int motion_step);
 
   /* Hair */
   void sync_hair(BL::Depsgraph b_depsgraph,
                  BL::Object b_ob,
                  Hair *hair,
-                 array<Shader *> &used_shaders);
+                 array<Node *> &used_shaders);
   void sync_hair_motion(BL::Depsgraph b_depsgraph, BL::Object b_ob, Hair *hair, int motion_step);
   void sync_hair(Hair *hair, BL::Object &b_ob, bool motion, int motion_step = 0);
   void sync_particle_hair(
@@ -211,7 +211,7 @@ class BlenderSync {
   void free_data_after_sync(BL::Depsgraph &b_depsgraph);
 
   /* util */
-  void find_shader(BL::ID &id, array<Shader *> &used_shaders, Shader *default_shader);
+  void find_shader(BL::ID &id, array<Node *> &used_shaders, Shader *default_shader);
   bool BKE_object_is_modified(BL::Object &b_ob);
   bool object_is_geometry(BL::Object &b_ob);
   bool object_is_light(BL::Object &b_ob);
diff --git a/intern/cycles/blender/blender_volume.cpp b/intern/cycles/blender/blender_volume.cpp
index ad2e6a697e9..e86512b6f91 100644
--- a/intern/cycles/blender/blender_volume.cpp
+++ b/intern/cycles/blender/blender_volume.cpp
@@ -320,7 +320,7 @@ static vector<int> get_voxel_image_slots(Mesh *mesh)
   return slots;
 }
 
-void BlenderSync::sync_volume(BL::Object &b_ob, Volume *volume, array<Shader *> &used_shaders)
+void BlenderSync::sync_volume(BL::Object &b_ob, Volume *volume, array<Node *> &used_shaders)
 {
   vector<int> old_voxel_slots = get_voxel_image_slots(volume);
 
diff --git a/intern/cycles/graph/node.cpp b/intern/cycles/graph/node.cpp
index 18cc8af3f6c..4206f1769ea 100644
--- a/intern/cycles/graph/node.cpp
+++ b/intern/cycles/graph/node.cpp
@@ -184,12 +184,6 @@ void Node::set(const SocketType &input, array<Transform> &value)
 }
 
 void Node::set(const SocketType &input, array<Node *> &value)
-{
-  assert(input.type == SocketType::TRANSFORM_ARRAY);
-  set_if_different(input, value);
-}
-
-void Node::set(const SocketType &input, array<Shader *> &value)
 {
   assert(input.type == SocketType::NODE_ARRAY);
   set_if_different(input, value);
diff --git a/intern/cycles/graph/node.h b/intern/cycles/graph/node.h
index 4f4a7291082..81834f2f04d 100644
--- a/intern/cycles/graph/node.h
+++ b/intern/cycles/graph/node.h
@@ -112,7 +112,6 @@ struct Node {
   void set(const SocketType &input, array<ustring> &value);
   void set(const SocketType &input, array<Transform> &value);
   void set(const SocketType &input, array<Node *> &value);
-  void set(const SocketType &input, array<Shader *> &value);
 
   /* get values */
   bool get_bool(const SocketType &input) const;
diff --git a/intern/cycles/render/alembic.cpp b/intern/cycles/render/alembic.cpp
index dc41ff269e0..fa4798350ba 100644
--- a/intern/cycles/render/alembic.cpp
+++ b/intern/cycles/render/alembic.cpp
@@ -322,7 +322,7 @@ void AlembicProcedural::read_mesh(Scene *scene,
     mesh = scene->create_node<Mesh>();
     mesh->set_use_motion_blur(use_motion_blur);
 
-    array<Shader *> used_shaders = abc_object->get_used_shaders();
+    array<Node *> used_shaders = abc_object->get_used_shaders();
     mesh->set_used_shaders(used_shaders);
 
     /* create object*/
@@ -426,7 +426,7 @@ void AlembicProcedural::read_curves(Scene *scene,
     hair = scene->create_node<Hair>();
     hair->set_use_motion_blur(use_motion_blur);
 
-    array<Shader *> used_shaders = abc_object->get_used_shaders();
+    array<Node *> used_shaders = abc_object->get_used_shaders();
     hair->set_used_shaders(used_shaders);
 
     /* create object*/
diff --git a/intern/cycles/render/alembic.h b/intern/cycles/render/alembic.h
index 8ac6c97fdb5..b3197cb2e1d 100644
--- a/intern/cycles/render/alembic.h
+++ b/intern/cycles/render/alembic.h
@@ -41,7 +41,7 @@ class AlembicObject : public Node {
   ~AlembicObject();
 
   NODE_PUBLIC_API(ustring, path)
-  NODE_PUBLIC_API_ARRAY(array<Shader *>, used_shaders)
+  NODE_PUBLIC_API_ARRAY(array<Node *>, used_shaders)
 
   void set_object(Object *object);
   Object *get_object();
diff --git a/intern/cycles/render/bake.cpp b/intern/cycles/render/bake.cpp
index 4cf8dc577ca..9b00791bfb7 100644
--- a/intern/cycles/render/bake.cpp
+++ b/intern/cycles/render/bake.cpp
@@ -33,7 +33,8 @@ static int aa_samples(Scene *scene, Object *object, ShaderEvalType type)
   e

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list