Commit: 382218beb29f52e1ea5c10803edf95a937878308 Author: Dalai Felinto Date: Wed Feb 28 13:54:00 2018 -0300 Branches: blender2.8 https://developer.blender.org/rB382218beb29f52e1ea5c10803edf95a937878308
Point cache: Pass EvaluationContext for all the related functions Now the only missing bit seems to be in Cycles to pass depsgraph to builtin_image_float_pixels(). Ideally we could get evaluation context instead of using depsgraph + settings. But for the other rna EvaluationContext functions this is how we are doing. Reviewers: sergey, brecht Differential Revision: https://developer.blender.org/D3087 =================================================================== M intern/cycles/blender/blender_session.cpp M intern/cycles/blender/blender_shader.cpp M intern/cycles/blender/blender_texture.cpp M intern/cycles/blender/blender_texture.h M source/blender/depsgraph/DEG_depsgraph.h M source/blender/depsgraph/intern/depsgraph_eval.cc M source/blender/makesrna/intern/rna_nodetree.c M source/blender/render/extern/include/RE_render_ext.h M source/blender/render/intern/source/pointdensity.c M source/blenderplayer/bad_level_call_stubs/stubs.c =================================================================== diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index 12b707d8f95..c6bfaea238d 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -1280,9 +1280,8 @@ bool BlenderSession::builtin_image_float_pixels(const string &builtin_name, else { /* TODO: fix point density to work with new view layer depsgraph */ #if 0 - /* We originally were passing view_layer here but in reality we need a whole EvaluationContext - * in the RE_point_density_minmax() function. - * Note: There is not a single EvaluationContext for the entire render. They are per RenderLayer now. + /* We originally were passing view_layer here but in reality we need a whole EvaluationContext or at the + * very least a dpesgraph to pass to the RE_point_density_minmax() function. */ /* TODO(sergey): Check we're indeed in shader node tree. */ PointerRNA ptr; @@ -1292,7 +1291,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, b_view_layer, settings, &length, &pixels); + b_point_density_node.calc_point_density(b_depsgraph, settings, &length, &pixels); } #endif } diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp index f371515825e..d6e3f33fa9d 100644 --- a/intern/cycles/blender/blender_shader.cpp +++ b/intern/cycles/blender/blender_shader.cpp @@ -234,8 +234,8 @@ static void get_tex_mapping(TextureMapping *mapping, static ShaderNode *add_node(Scene *scene, BL::RenderEngine& b_engine, BL::BlendData& b_data, + BL::Depsgraph& b_depsgraph, BL::Scene& b_scene, - BL::ViewLayer& b_view_layer, const bool background, ShaderGraph *graph, BL::ShaderNodeTree& b_ntree, @@ -848,7 +848,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, b_view_layer, settings); + b_point_density_node.cache_point_density(b_depsgraph, settings); scene->image_manager->tag_reload_image( point_density->filename.string(), point_density->builtin_data, @@ -866,7 +866,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, b_view_layer, + point_density_texture_space(b_depsgraph, b_point_density_node, settings, loc, @@ -1006,8 +1006,8 @@ static BL::ShaderNode find_output_node(BL::ShaderNodeTree& b_ntree) static void add_nodes(Scene *scene, BL::RenderEngine& b_engine, BL::BlendData& b_data, + BL::Depsgraph& b_depsgraph, BL::Scene& b_scene, - BL::ViewLayer& b_view_layer, const bool background, ShaderGraph *graph, BL::ShaderNodeTree& b_ntree, @@ -1093,8 +1093,8 @@ static void add_nodes(Scene *scene, add_nodes(scene, b_engine, b_data, + b_depsgraph, b_scene, - b_view_layer, background, graph, b_group_ntree, @@ -1141,8 +1141,8 @@ static void add_nodes(Scene *scene, node = add_node(scene, b_engine, b_data, + b_depsgraph, b_scene, - b_view_layer, background, graph, b_ntree, @@ -1205,8 +1205,8 @@ static void add_nodes(Scene *scene, static void add_nodes(Scene *scene, BL::RenderEngine& b_engine, BL::BlendData& b_data, + BL::Depsgraph& b_depsgraph, BL::Scene& b_scene, - BL::ViewLayer& b_view_layer, const bool background, ShaderGraph *graph, BL::ShaderNodeTree& b_ntree) @@ -1215,8 +1215,8 @@ static void add_nodes(Scene *scene, add_nodes(scene, b_engine, b_data, + b_depsgraph, b_scene, - b_view_layer, background, graph, b_ntree, @@ -1228,7 +1228,6 @@ static void add_nodes(Scene *scene, void BlenderSync::sync_materials(BL::Depsgraph& b_depsgraph, bool update_all) { - BL::ViewLayer b_view_layer(b_depsgraph.view_layer()); shader_map.set_default(scene->default_surface); TaskPool pool; @@ -1256,7 +1255,7 @@ void BlenderSync::sync_materials(BL::Depsgraph& b_depsgraph, 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, b_view_layer, !preview, graph, b_ntree); + add_nodes(scene, b_engine, b_data, b_depsgraph, b_scene, !preview, graph, b_ntree); } else { DiffuseBsdfNode *diffuse = new DiffuseBsdfNode(); @@ -1314,7 +1313,6 @@ void BlenderSync::sync_materials(BL::Depsgraph& b_depsgraph, bool update_all) void BlenderSync::sync_world(BL::Depsgraph& b_depsgraph, bool update_all) { - BL::ViewLayer b_view_layer(b_depsgraph.view_layer()); Background *background = scene->background; Background prevbackground = *background; @@ -1328,7 +1326,7 @@ void BlenderSync::sync_world(BL::Depsgraph& b_depsgraph, 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, b_view_layer, !preview, graph, b_ntree); + add_nodes(scene, b_engine, b_data, b_depsgraph, b_scene, !preview, graph, b_ntree); /* volume */ PointerRNA cworld = RNA_pointer_get(&b_world.ptr, "cycles"); @@ -1407,7 +1405,6 @@ void BlenderSync::sync_world(BL::Depsgraph& b_depsgraph, bool update_all) void BlenderSync::sync_lamps(BL::Depsgraph& b_depsgraph, bool update_all) { - BL::ViewLayer b_view_layer(b_depsgraph.view_layer()); shader_map.set_default(scene->default_light); /* lamp loop */ @@ -1431,7 +1428,7 @@ void BlenderSync::sync_lamps(BL::Depsgraph& b_depsgraph, bool update_all) BL::ShaderNodeTree b_ntree(b_lamp->node_tree()); - add_nodes(scene, b_engine, b_data, b_scene, b_view_layer, !preview, graph, b_ntree); + add_nodes(scene, b_engine, b_data, b_depsgraph, b_scene, !preview, graph, b_ntree); } else { float strength = 1.0f; diff --git a/intern/cycles/blender/blender_texture.cpp b/intern/cycles/blender/blender_texture.cpp index 3b06fb720de..637f3632a49 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, BL::ViewLayer& b_view_layer, +void point_density_texture_space(BL::Depsgraph& b_depsgraph, BL::ShaderNodeTexPointDensity& b_point_density_node, int settings, float3& loc, @@ -47,8 +47,7 @@ void point_density_texture_space(BL::Scene& b_scene, BL::ViewLayer& b_view_layer return; } float3 min, max; - b_point_density_node.calc_point_density_minmax(b_scene, - b_view_layer, + b_point_density_node.calc_point_density_minmax(b_depsgraph, settings, &min[0], &max[0]); diff --git a/intern/cycles/blender/blender_texture.h b/intern/cycles/blender/blender_texture.h index 3d4b8739d49..9c921d1e9f8 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, BL::ViewLayer& b_view_layer, +void point_density_texture_space(BL::Depsgraph& b_depsgraph, BL::ShaderNodeTexPointDensity& b_point_density_node, const int settings, float3& loc, diff --git a/source/blender/depsgraph/DEG_depsgraph.h b/source/blender/depsgraph/DEG_depsgraph.h index e96ef847137..477c0dd36ea 100644 --- a/source/blender/depsgraph/DEG_depsgraph.h +++ b/source/blender/depsgraph/DEG_depsgraph.h @@ -230,6 +230,11 @@ void DEG_evaluation_context_init_from_view_layer_for_render( struct Scene *scene, struct ViewLayer *view_layer); +void DEG_evaluation_context_init_from_depsgraph( + struct EvaluationContext *eval_ctx, + struct Depsgraph *depsgraph, + eEvaluationMode mode); + /* Free evaluation context. */ void DEG_evaluation_context_free(struct EvaluationContext *eval_ctx); diff --git a/source/blender/depsgraph/intern/depsgraph_eval.cc b/source/blender/depsgraph/intern/depsgraph_eval.cc index ddb049a0043..d76eba29628 100644 --- a/source/blender/depsgraph/intern/depsgraph_eval.cc +++ b/source/blender/depsgraph/intern/depsgraph_eval.cc @@ -39,10 +39,12 @@ extern "C" { #include "BKE_scene.h" +#include "DNA_object_types.h" #include "DNA_scene_types.h" } /* extern "C" */ #include "DEG_depsgraph.h" +#include "DEG_depsgraph_query.h" #include "intern/eval/deg_eval.h" #include "intern/eval/deg_eval_flush.h" @@ -111,6 +113,20 @@ void DEG_evaluation_context_init_from_view_layer_for_render( eval_ctx->engine_type = NULL; } +void DEG_evaluation_context_init_from_depsgraph( + EvaluationContext *eval_ctx, + Depsgraph *depsgraph, + @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list [email protected] https://lists.blender.org/mailman/listinfo/bf-blender-cvs
