diff options
author | Luca Rood <dev@lucarood.com> | 2017-07-21 12:53:13 +0300 |
---|---|---|
committer | Luca Rood <dev@lucarood.com> | 2017-07-21 15:47:26 +0300 |
commit | 1c4c288727214fa0588d66556a1cdf71755d70b4 (patch) | |
tree | 1433952be7e88cc7d09e8563831995290e3013ce /intern | |
parent | 9edb7e49d7e5e69385f3a0434c568c79fad88cd8 (diff) |
Pass EvaluationContext argument everywhere
Note that some little parts of code have been dissabled because eval_ctx
was not available there. This should be resolved once DerivedMesh is
replaced.
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/blender/blender_curves.cpp | 8 | ||||
-rw-r--r-- | intern/cycles/blender/blender_mesh.cpp | 2 | ||||
-rw-r--r-- | intern/cycles/blender/blender_session.cpp | 4 | ||||
-rw-r--r-- | intern/cycles/blender/blender_session.h | 1 | ||||
-rw-r--r-- | intern/cycles/blender/blender_shader.cpp | 16 | ||||
-rw-r--r-- | intern/cycles/blender/blender_sync.cpp | 1 | ||||
-rw-r--r-- | intern/cycles/blender/blender_sync.h | 2 | ||||
-rw-r--r-- | intern/cycles/blender/blender_texture.cpp | 3 | ||||
-rw-r--r-- | intern/cycles/blender/blender_texture.h | 2 | ||||
-rw-r--r-- | intern/cycles/blender/blender_util.h | 3 | ||||
-rw-r--r-- | intern/itasc/FixedObject.hpp | 2 | ||||
-rw-r--r-- | intern/itasc/MovingFrame.cpp | 4 | ||||
-rw-r--r-- | intern/itasc/MovingFrame.hpp | 5 | ||||
-rw-r--r-- | intern/itasc/Scene.cpp | 4 | ||||
-rw-r--r-- | intern/itasc/Scene.hpp | 2 | ||||
-rw-r--r-- | intern/itasc/UncontrolledObject.hpp | 5 | ||||
-rw-r--r-- | intern/itasc/WorldObject.hpp | 2 |
17 files changed, 43 insertions, 23 deletions
diff --git a/intern/cycles/blender/blender_curves.cpp b/intern/cycles/blender/blender_curves.cpp index 42b985305ea..63b07936426 100644 --- a/intern/cycles/blender/blender_curves.cpp +++ b/intern/cycles/blender/blender_curves.cpp @@ -325,14 +325,14 @@ static bool ObtainCacheParticleVcol(Mesh *mesh, return true; } -static void set_resolution(BL::Object *b_ob, BL::Scene *scene, bool render) +static void set_resolution(BL::Object *b_ob, BL::Scene *scene, BL::SceneLayer *sl, bool render) { BL::Object::modifiers_iterator b_mod; for(b_ob->modifiers.begin(b_mod); b_mod != b_ob->modifiers.end(); ++b_mod) { if((b_mod->type() == b_mod->type_PARTICLE_SYSTEM) && ((b_mod->show_viewport()) || (b_mod->show_render()))) { BL::ParticleSystemModifier psmd((const PointerRNA)b_mod->ptr); BL::ParticleSystem b_psys((const PointerRNA)psmd.particle_system().ptr); - b_psys.set_resolution(*scene, *b_ob, (render)? 2: 1); + b_psys.set_resolution(*scene, *sl, *b_ob, (render)? 2: 1); } } } @@ -912,7 +912,7 @@ void BlenderSync::sync_curves(Mesh *mesh, ParticleCurveData CData; if(!preview) - set_resolution(&b_ob, &b_scene, true); + set_resolution(&b_ob, &b_scene, &b_scene_layer, true); ObtainCacheParticleData(mesh, &b_mesh, &b_ob, &CData, !preview); @@ -1057,7 +1057,7 @@ void BlenderSync::sync_curves(Mesh *mesh, } if(!preview) - set_resolution(&b_ob, &b_scene, false); + set_resolution(&b_ob, &b_scene, &b_scene_layer, false); mesh->compute_bounds(); } diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp index f86b75f6643..2e3271c735f 100644 --- a/intern/cycles/blender/blender_mesh.cpp +++ b/intern/cycles/blender/blender_mesh.cpp @@ -1053,6 +1053,7 @@ Mesh *BlenderSync::sync_mesh(BL::Object& b_ob, BL::Mesh b_mesh = object_to_mesh(b_data, b_ob, b_scene, + b_scene_layer, true, !preview, need_undeformed, @@ -1184,6 +1185,7 @@ void BlenderSync::sync_mesh_motion(BL::Object& b_ob, b_mesh = object_to_mesh(b_data, b_ob, b_scene, + b_scene_layer, true, !preview, false, diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index bdc254d1995..f4e9da43454 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -60,6 +60,7 @@ BlenderSession::BlenderSession(BL::RenderEngine& b_engine, b_render(b_engine.render()), b_depsgraph(b_depsgraph), b_scene(b_scene), + b_scene_layer(b_engine.scene_layer()), b_v3d(PointerRNA_NULL), b_rv3d(PointerRNA_NULL), python_thread_state(NULL) @@ -89,6 +90,7 @@ BlenderSession::BlenderSession(BL::RenderEngine& b_engine, b_render(b_scene.render()), b_depsgraph(b_depsgraph), b_scene(b_scene), + b_scene_layer(b_engine.scene_layer()), b_v3d(b_v3d), b_rv3d(b_rv3d), width(width), @@ -1301,7 +1303,7 @@ bool BlenderSession::builtin_image_float_pixels(const string &builtin_name, BL::ShaderNodeTexPointDensity b_point_density_node(b_node); int length; int settings = background ? 1 : 0; /* 1 - render settings, 0 - vewport settings. */ - b_point_density_node.calc_point_density(b_scene, settings, &length, &pixels); + b_point_density_node.calc_point_density(b_scene, b_scene_layer, settings, &length, &pixels); } } diff --git a/intern/cycles/blender/blender_session.h b/intern/cycles/blender/blender_session.h index 5edf44d087e..7ae7bde1737 100644 --- a/intern/cycles/blender/blender_session.h +++ b/intern/cycles/blender/blender_session.h @@ -108,6 +108,7 @@ public: BL::RenderSettings b_render; BL::Depsgraph b_depsgraph; BL::Scene b_scene; + BL::SceneLayer b_scene_layer; BL::SpaceView3D b_v3d; BL::RegionView3D b_rv3d; string b_rlay_name; diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp index 17e451807dc..50202c3f272 100644 --- a/intern/cycles/blender/blender_shader.cpp +++ b/intern/cycles/blender/blender_shader.cpp @@ -243,6 +243,7 @@ static ShaderNode *add_node(Scene *scene, BL::RenderEngine& b_engine, BL::BlendData& b_data, BL::Scene& b_scene, + BL::SceneLayer b_scene_layer, const bool background, ShaderGraph *graph, BL::ShaderNodeTree& b_ntree, @@ -839,7 +840,7 @@ static ShaderNode *add_node(Scene *scene, /* TODO(sergey): Use more proper update flag. */ if(true) { - b_point_density_node.cache_point_density(b_scene, settings); + b_point_density_node.cache_point_density(b_scene, b_scene_layer, settings); scene->image_manager->tag_reload_image( point_density->filename.string(), point_density->builtin_data, @@ -857,7 +858,7 @@ static ShaderNode *add_node(Scene *scene, BL::Object b_ob(b_point_density_node.object()); if(b_ob) { float3 loc, size; - point_density_texture_space(b_scene, + point_density_texture_space(b_scene, b_scene_layer, b_point_density_node, settings, loc, @@ -954,6 +955,7 @@ static void add_nodes(Scene *scene, BL::RenderEngine& b_engine, BL::BlendData& b_data, BL::Scene& b_scene, + BL::SceneLayer& b_scene_layer, const bool background, ShaderGraph *graph, BL::ShaderNodeTree& b_ntree, @@ -1044,6 +1046,7 @@ static void add_nodes(Scene *scene, b_engine, b_data, b_scene, + b_scene_layer, background, graph, b_group_ntree, @@ -1093,6 +1096,7 @@ static void add_nodes(Scene *scene, b_engine, b_data, b_scene, + b_scene_layer, background, graph, b_ntree, @@ -1156,6 +1160,7 @@ static void add_nodes(Scene *scene, BL::RenderEngine& b_engine, BL::BlendData& b_data, BL::Scene& b_scene, + BL::SceneLayer& b_scene_layer, const bool background, ShaderGraph *graph, BL::ShaderNodeTree& b_ntree) @@ -1165,6 +1170,7 @@ static void add_nodes(Scene *scene, b_engine, b_data, b_scene, + b_scene_layer, background, graph, b_ntree, @@ -1203,7 +1209,7 @@ void BlenderSync::sync_materials(bool update_all) if(b_mat->use_nodes() && b_mat->node_tree()) { BL::ShaderNodeTree b_ntree(b_mat->node_tree()); - add_nodes(scene, b_engine, b_data, b_scene, !preview, graph, b_ntree); + add_nodes(scene, b_engine, b_data, b_scene, b_scene_layer, !preview, graph, b_ntree); } else { DiffuseBsdfNode *diffuse = new DiffuseBsdfNode(); @@ -1274,7 +1280,7 @@ void BlenderSync::sync_world(bool update_all) if(b_world && b_world.use_nodes() && b_world.node_tree()) { BL::ShaderNodeTree b_ntree(b_world.node_tree()); - add_nodes(scene, b_engine, b_data, b_scene, !preview, graph, b_ntree); + add_nodes(scene, b_engine, b_data, b_scene, b_scene_layer, !preview, graph, b_ntree); /* volume */ PointerRNA cworld = RNA_pointer_get(&b_world.ptr, "cycles"); @@ -1369,7 +1375,7 @@ void BlenderSync::sync_lamps(bool update_all) BL::ShaderNodeTree b_ntree(b_lamp->node_tree()); - add_nodes(scene, b_engine, b_data, b_scene, !preview, graph, b_ntree); + add_nodes(scene, b_engine, b_data, b_scene, b_scene_layer, !preview, graph, b_ntree); } else { float strength = 1.0f; diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index ab986766211..fd4498afdaf 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -54,6 +54,7 @@ BlenderSync::BlenderSync(BL::RenderEngine& b_engine, b_data(b_data), b_depsgraph(b_depsgraph), b_scene(b_scene), + b_scene_layer(b_engine.scene_layer()), shader_map(&scene->shaders), object_map(&scene->objects), mesh_map(&scene->meshes), diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h index fda8cb390c2..69fee9551dd 100644 --- a/intern/cycles/blender/blender_sync.h +++ b/intern/cycles/blender/blender_sync.h @@ -43,6 +43,7 @@ class Mesh; class Object; class ParticleSystem; class Scene; +class SceneLayer; class Shader; class ShaderGraph; class ShaderNode; @@ -165,6 +166,7 @@ private: BL::BlendData b_data; BL::Depsgraph b_depsgraph; BL::Scene b_scene; + BL::SceneLayer b_scene_layer; id_map<void*, Shader> shader_map; id_map<ObjectKey, Object> object_map; diff --git a/intern/cycles/blender/blender_texture.cpp b/intern/cycles/blender/blender_texture.cpp index b2e27b76189..dd08be3ddc9 100644 --- a/intern/cycles/blender/blender_texture.cpp +++ b/intern/cycles/blender/blender_texture.cpp @@ -34,7 +34,7 @@ void density_texture_space_invert(float3& loc, } /* namespace */ -void point_density_texture_space(BL::Scene& b_scene, +void point_density_texture_space(BL::Scene& b_scene, BL::SceneLayer& b_scene_layer, BL::ShaderNodeTexPointDensity& b_point_density_node, int settings, float3& loc, @@ -48,6 +48,7 @@ void point_density_texture_space(BL::Scene& b_scene, } float3 min, max; b_point_density_node.calc_point_density_minmax(b_scene, + b_scene_layer, settings, &min[0], &max[0]); diff --git a/intern/cycles/blender/blender_texture.h b/intern/cycles/blender/blender_texture.h index 734231a85ec..c343d5dab92 100644 --- a/intern/cycles/blender/blender_texture.h +++ b/intern/cycles/blender/blender_texture.h @@ -22,7 +22,7 @@ CCL_NAMESPACE_BEGIN -void point_density_texture_space(BL::Scene& b_scene, +void point_density_texture_space(BL::Scene& b_scene, BL::SceneLayer& b_scene_layer, BL::ShaderNodeTexPointDensity& b_point_density_node, const int settings, float3& loc, diff --git a/intern/cycles/blender/blender_util.h b/intern/cycles/blender/blender_util.h index 363e19f7a20..314bcaf23c4 100644 --- a/intern/cycles/blender/blender_util.h +++ b/intern/cycles/blender/blender_util.h @@ -46,6 +46,7 @@ void python_thread_state_restore(void **python_thread_state); static inline BL::Mesh object_to_mesh(BL::BlendData& data, BL::Object& object, BL::Scene& scene, + BL::SceneLayer scene_layer, bool apply_modifiers, bool render, bool calc_undeformed, @@ -64,7 +65,7 @@ static inline BL::Mesh object_to_mesh(BL::BlendData& data, subsurf_mod.show_viewport(false); } - BL::Mesh me = data.meshes.new_from_object(scene, object, apply_modifiers, (render)? 2: 1, false, calc_undeformed); + BL::Mesh me = data.meshes.new_from_object(scene, scene_layer, object, apply_modifiers, (render)? 2: 1, false, calc_undeformed); if(subdivision_type != Mesh::SUBDIVISION_NONE) { BL::Modifier subsurf_mod = object.modifiers[object.modifiers.length()-1]; diff --git a/intern/itasc/FixedObject.hpp b/intern/itasc/FixedObject.hpp index ad26e7cb2d6..02c1804073c 100644 --- a/intern/itasc/FixedObject.hpp +++ b/intern/itasc/FixedObject.hpp @@ -21,7 +21,7 @@ public: int addFrame(const std::string& name, const Frame& frame); - virtual void updateCoordinates(const Timestamp& timestamp) {}; + virtual void updateCoordinates(struct EvaluationContext *eval_ctx, const Timestamp& timestamp) {}; virtual int addEndEffector(const std::string& name); virtual bool finalize(); virtual const Frame& getPose(const unsigned int frameIndex); diff --git a/intern/itasc/MovingFrame.cpp b/intern/itasc/MovingFrame.cpp index 90ebe091eb5..b1815ddd0de 100644 --- a/intern/itasc/MovingFrame.cpp +++ b/intern/itasc/MovingFrame.cpp @@ -90,7 +90,7 @@ bool MovingFrame::setCallback(MovingFrameCallback _function, void* _param) return true; } -void MovingFrame::updateCoordinates(const Timestamp& timestamp) +void MovingFrame::updateCoordinates(struct EvaluationContext *eval_ctx, const Timestamp& timestamp) { // don't compute the velocity during substepping, it is assumed constant. if (!timestamp.substep) { @@ -98,7 +98,7 @@ void MovingFrame::updateCoordinates(const Timestamp& timestamp) if (!timestamp.reiterate) { cacheAvail = popInternalFrame(timestamp.cacheTimestamp); if (m_function) - (*m_function)(timestamp, m_internalPose, m_nextPose, m_param); + (*m_function)(eval_ctx, timestamp, m_internalPose, m_nextPose, m_param); } // only compute velocity if we have a previous pose if (cacheAvail && timestamp.interpolate) { diff --git a/intern/itasc/MovingFrame.hpp b/intern/itasc/MovingFrame.hpp index d2a956d7312..89519832840 100644 --- a/intern/itasc/MovingFrame.hpp +++ b/intern/itasc/MovingFrame.hpp @@ -11,10 +11,11 @@ #include "UncontrolledObject.hpp" #include <vector> +struct EvaluationContext; namespace iTaSC{ -typedef bool (*MovingFrameCallback)(const Timestamp& timestamp, const Frame& _current, Frame& _next, void *param); +typedef bool (*MovingFrameCallback)(struct EvaluationContext *eval_ctx, const Timestamp& timestamp, const Frame& _current, Frame& _next, void *param); class MovingFrame: public UncontrolledObject { public: @@ -24,7 +25,7 @@ public: bool setFrame(const Frame& frame); bool setCallback(MovingFrameCallback _function, void* _param); - virtual void updateCoordinates(const Timestamp& timestamp); + virtual void updateCoordinates(struct EvaluationContext *eval_ctx, const Timestamp& timestamp); virtual void updateKinematics(const Timestamp& timestamp); virtual void pushCache(const Timestamp& timestamp); virtual void initCache(Cache *_cache); diff --git a/intern/itasc/Scene.cpp b/intern/itasc/Scene.cpp index 5768a994970..fd8b006d19c 100644 --- a/intern/itasc/Scene.cpp +++ b/intern/itasc/Scene.cpp @@ -257,7 +257,7 @@ bool Scene::getConstraintPose(ConstraintSet* constraint, void *_param, KDL::Fram return true; } -bool Scene::update(double timestamp, double timestep, unsigned int numsubstep, bool reiterate, bool cache, bool interpolate) +bool Scene::update(struct EvaluationContext *eval_ctx, double timestamp, double timestep, unsigned int numsubstep, bool reiterate, bool cache, bool interpolate) { // we must have valid timestep and timestamp if (timestamp < KDL::epsilon || timestep < 0.0) @@ -316,7 +316,7 @@ bool Scene::update(double timestamp, double timestep, unsigned int numsubstep, b } } if (os->object->getType()==Object::UnControlled && ((UncontrolledObject*)os->object)->getNrOfCoordinates() != 0) { - ((UncontrolledObject*)(os->object))->updateCoordinates(ts); + ((UncontrolledObject*)(os->object))->updateCoordinates(eval_ctx, ts); if (!ts.substep) { // velocity of uncontrolled object remains constant during substepping project(m_xdot,os->coordinaterange) = ((UncontrolledObject*)(os->object))->getXudot(); diff --git a/intern/itasc/Scene.hpp b/intern/itasc/Scene.hpp index 5ed031b543e..0039be07584 100644 --- a/intern/itasc/Scene.hpp +++ b/intern/itasc/Scene.hpp @@ -39,7 +39,7 @@ public: bool addSolver(Solver* _solver); bool addCache(Cache* _cache); bool initialize(); - bool update(double timestamp, double timestep, unsigned int numsubstep=1, bool reiterate=false, bool cache=true, bool interpolate=true); + bool update(struct EvaluationContext *eval_ctx, double timestamp, double timestep, unsigned int numsubstep=1, bool reiterate=false, bool cache=true, bool interpolate=true); bool setParam(SceneParam paramId, double value); EIGEN_MAKE_ALIGNED_OPERATOR_NEW diff --git a/intern/itasc/UncontrolledObject.hpp b/intern/itasc/UncontrolledObject.hpp index 81445538fa6..889bc742c6d 100644 --- a/intern/itasc/UncontrolledObject.hpp +++ b/intern/itasc/UncontrolledObject.hpp @@ -11,6 +11,9 @@ #include "eigen_types.hpp" #include "Object.hpp" + +struct EvaluationContext; + namespace iTaSC{ class UncontrolledObject: public Object { @@ -26,7 +29,7 @@ public: virtual void initialize(unsigned int _nu, unsigned int _nf); virtual const e_matrix& getJu(unsigned int frameIndex) const; virtual const e_vector& getXudot() const {return m_xudot;} - virtual void updateCoordinates(const Timestamp& timestamp)=0; + virtual void updateCoordinates(struct EvaluationContext *eval_ctx, const Timestamp& timestamp)=0; virtual const unsigned int getNrOfCoordinates(){return m_nu;}; virtual const unsigned int getNrOfFrames(){return m_nf;}; diff --git a/intern/itasc/WorldObject.hpp b/intern/itasc/WorldObject.hpp index 99756dcd684..b992445ab10 100644 --- a/intern/itasc/WorldObject.hpp +++ b/intern/itasc/WorldObject.hpp @@ -16,7 +16,7 @@ public: WorldObject(); virtual ~WorldObject(); - virtual void updateCoordinates(const Timestamp& timestamp) {}; + virtual void updateCoordinates(struct EvaluationContext *eval_ctx, const Timestamp& timestamp) {}; virtual void updateKinematics(const Timestamp& timestamp) {}; virtual void pushCache(const Timestamp& timestamp) {}; virtual void initCache(Cache *_cache) {}; |