[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