From b65a0228920df21b7f5a0a057bc9ad5fad64e4b3 Mon Sep 17 00:00:00 2001 From: Tamito Kajiyama Date: Fri, 1 Aug 2014 10:18:25 +0900 Subject: Freestyle: Removed the stored bContext from the Controller class. The stored context object was used for creation of shade nodes. A closer look at the node system showed that the context is not actually used when shader nodes are added to a shader node tree. Relying on this fact, now a NULL pointer is passed to nodeAddStaticNode() instead of the stored bContext pointer. --- .../freestyle/intern/application/Controller.cpp | 3 +-- .../freestyle/intern/application/Controller.h | 1 - .../blender_interface/BlenderStrokeRenderer.cpp | 29 +++++++++++----------- .../blender_interface/BlenderStrokeRenderer.h | 4 +-- .../intern/blender_interface/FRS_freestyle.cpp | 4 +-- 5 files changed, 19 insertions(+), 22 deletions(-) (limited to 'source/blender/freestyle/intern') diff --git a/source/blender/freestyle/intern/application/Controller.cpp b/source/blender/freestyle/intern/application/Controller.cpp index 8f57bbefa54..176199600ac 100644 --- a/source/blender/freestyle/intern/application/Controller.cpp +++ b/source/blender/freestyle/intern/application/Controller.cpp @@ -210,7 +210,6 @@ void Controller::setContext(bContext *C) { PythonInterpreter *py_inter = dynamic_cast(_inter); py_inter->setContext(C); - _context = C; } int Controller::LoadMesh(Render *re, SceneRenderLayer *srl) @@ -851,7 +850,7 @@ void Controller::ResetRenderCount() Render *Controller::RenderStrokes(Render *re, bool render) { _Chrono.start(); - BlenderStrokeRenderer *blenderRenderer = new BlenderStrokeRenderer(_context, re, ++_render_count); + BlenderStrokeRenderer *blenderRenderer = new BlenderStrokeRenderer(re, ++_render_count); if (render) _Canvas->Render(blenderRenderer); real d = _Chrono.stop(); diff --git a/source/blender/freestyle/intern/application/Controller.h b/source/blender/freestyle/intern/application/Controller.h index a653f4a63f5..f5e50347d0f 100644 --- a/source/blender/freestyle/intern/application/Controller.h +++ b/source/blender/freestyle/intern/application/Controller.h @@ -217,7 +217,6 @@ private: real _EPSILON; real _bboxDiag; - bContext *_context; int _render_count; //AppStyleWindow *_pStyleWindow; diff --git a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp index 440934ab99b..47b0c9b1e48 100644 --- a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp +++ b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp @@ -65,12 +65,11 @@ extern "C" { namespace Freestyle { -BlenderStrokeRenderer::BlenderStrokeRenderer(bContext *C, Render *re, int render_count) : StrokeRenderer() +BlenderStrokeRenderer::BlenderStrokeRenderer(Render *re, int render_count) : StrokeRenderer() { freestyle_bmain = re->freestyle_bmain; // for stroke mesh generation - _context = C; _width = re->winx; _height = re->winy; @@ -228,7 +227,7 @@ unsigned int BlenderStrokeRenderer::get_stroke_mesh_id(void) const return mesh_id; } -Material* BlenderStrokeRenderer::GetStrokeShader(bContext *C, Main *bmain, bNodeTree *iNodeTree, bool do_id_user) +Material* BlenderStrokeRenderer::GetStrokeShader(Main *bmain, bNodeTree *iNodeTree, bool do_id_user) { Material *ma = BKE_material_add(bmain, "stroke_shader"); bNodeTree *ntree; @@ -255,13 +254,13 @@ Material* BlenderStrokeRenderer::GetStrokeShader(bContext *C, Main *bmain, bNode ma->nodetree = ntree; ma->use_nodes = 1; - bNode *input_attr_color = nodeAddStaticNode(C, ntree, SH_NODE_ATTRIBUTE); + bNode *input_attr_color = nodeAddStaticNode(NULL, ntree, SH_NODE_ATTRIBUTE); input_attr_color->locx = 0.0f; input_attr_color->locy = -200.0f; storage = (NodeShaderAttribute *)input_attr_color->storage; BLI_strncpy(storage->name, "Color", sizeof(storage->name)); - bNode *mix_rgb_color = nodeAddStaticNode(C, ntree, SH_NODE_MIX_RGB); + bNode *mix_rgb_color = nodeAddStaticNode(NULL, ntree, SH_NODE_MIX_RGB); mix_rgb_color->custom1 = MA_RAMP_BLEND; // Mix mix_rgb_color->locx = 200.0f; mix_rgb_color->locy = -200.0f; @@ -269,13 +268,13 @@ Material* BlenderStrokeRenderer::GetStrokeShader(bContext *C, Main *bmain, bNode RNA_pointer_create((ID *)ntree, &RNA_NodeSocket, tosock, &toptr); RNA_float_set(&toptr, "default_value", 0.0f); - bNode *input_attr_alpha = nodeAddStaticNode(C, ntree, SH_NODE_ATTRIBUTE); + bNode *input_attr_alpha = nodeAddStaticNode(NULL, ntree, SH_NODE_ATTRIBUTE); input_attr_alpha->locx = 400.0f; input_attr_alpha->locy = 300.0f; storage = (NodeShaderAttribute *)input_attr_alpha->storage; BLI_strncpy(storage->name, "Alpha", sizeof(storage->name)); - bNode *mix_rgb_alpha = nodeAddStaticNode(C, ntree, SH_NODE_MIX_RGB); + bNode *mix_rgb_alpha = nodeAddStaticNode(NULL, ntree, SH_NODE_MIX_RGB); mix_rgb_alpha->custom1 = MA_RAMP_BLEND; // Mix mix_rgb_alpha->locx = 600.0f; mix_rgb_alpha->locy = 300.0f; @@ -283,27 +282,27 @@ Material* BlenderStrokeRenderer::GetStrokeShader(bContext *C, Main *bmain, bNode RNA_pointer_create((ID *)ntree, &RNA_NodeSocket, tosock, &toptr); RNA_float_set(&toptr, "default_value", 0.0f); - bNode *shader_emission = nodeAddStaticNode(C, ntree, SH_NODE_EMISSION); + bNode *shader_emission = nodeAddStaticNode(NULL, ntree, SH_NODE_EMISSION); shader_emission->locx = 400.0f; shader_emission->locy = -200.0f; - bNode *input_light_path = nodeAddStaticNode(C, ntree, SH_NODE_LIGHT_PATH); + bNode *input_light_path = nodeAddStaticNode(NULL, ntree, SH_NODE_LIGHT_PATH); input_light_path->locx = 400.0f; input_light_path->locy = 100.0f; - bNode *mix_shader_color = nodeAddStaticNode(C, ntree, SH_NODE_MIX_SHADER); + bNode *mix_shader_color = nodeAddStaticNode(NULL, ntree, SH_NODE_MIX_SHADER); mix_shader_color->locx = 600.0f; mix_shader_color->locy = -100.0f; - bNode *shader_transparent = nodeAddStaticNode(C, ntree, SH_NODE_BSDF_TRANSPARENT); + bNode *shader_transparent = nodeAddStaticNode(NULL, ntree, SH_NODE_BSDF_TRANSPARENT); shader_transparent->locx = 600.0f; shader_transparent->locy = 100.0f; - bNode *mix_shader_alpha = nodeAddStaticNode(C, ntree, SH_NODE_MIX_SHADER); + bNode *mix_shader_alpha = nodeAddStaticNode(NULL, ntree, SH_NODE_MIX_SHADER); mix_shader_alpha->locx = 800.0f; mix_shader_alpha->locy = 100.0f; - bNode *output_material = nodeAddStaticNode(C, ntree, SH_NODE_OUTPUT_MATERIAL); + bNode *output_material = nodeAddStaticNode(NULL, ntree, SH_NODE_OUTPUT_MATERIAL); output_material->locx = 1000.0f; output_material->locy = 100.0f; @@ -409,7 +408,7 @@ Material* BlenderStrokeRenderer::GetStrokeShader(bContext *C, Main *bmain, bNode bNodeSocket *sock = (bNodeSocket *)BLI_findlink(&node->outputs, 0); // add new UV Map node - bNode *input_uvmap = nodeAddStaticNode(C, ntree, SH_NODE_UVMAP); + bNode *input_uvmap = nodeAddStaticNode(NULL, ntree, SH_NODE_UVMAP); input_uvmap->locx = node->locx - 200.0f; input_uvmap->locy = node->locy; NodeShaderUVMap *storage = (NodeShaderUVMap *)input_uvmap->storage; @@ -444,7 +443,7 @@ void BlenderStrokeRenderer::RenderStrokeRep(StrokeRep *iStrokeRep) const bNodeTree *nt = iStrokeRep->getNodeTree(); Material *ma = (Material *)BLI_ghash_lookup(_nodetree_hash, nt); if (!ma) { - ma = BlenderStrokeRenderer::GetStrokeShader(_context, freestyle_bmain, nt, false); + ma = BlenderStrokeRenderer::GetStrokeShader(freestyle_bmain, nt, false); BLI_ghash_insert(_nodetree_hash, nt, ma); } diff --git a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.h b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.h index 956ec16dae6..74e5d321df2 100644 --- a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.h +++ b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.h @@ -44,7 +44,7 @@ namespace Freestyle { class BlenderStrokeRenderer : public StrokeRenderer { public: - BlenderStrokeRenderer(bContext *C, Render *re, int render_count); + BlenderStrokeRenderer(Render *re, int render_count); virtual ~BlenderStrokeRenderer(); /*! Renders a stroke rep */ @@ -55,7 +55,7 @@ public: Render *RenderScene(Render *re, bool render); - static Material* GetStrokeShader(bContext *C, Main *bmain, bNodeTree *iNodeTree, bool do_id_user); + static Material* GetStrokeShader(Main *bmain, bNodeTree *iNodeTree, bool do_id_user); protected: Main *freestyle_bmain; diff --git a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp index 3c24bb7051c..32f49d48ee7 100644 --- a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp +++ b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp @@ -735,10 +735,10 @@ void FRS_move_active_lineset_down(FreestyleConfig *config) // Testing -Material *FRS_create_stroke_material(bContext *C, Main *bmain, struct FreestyleLineStyle *linestyle) +Material *FRS_create_stroke_material(Main *bmain, struct FreestyleLineStyle *linestyle) { bNodeTree *nt = (linestyle->use_nodes) ? linestyle->nodetree : NULL; - Material *ma = BlenderStrokeRenderer::GetStrokeShader(C, bmain, nt, true); + Material *ma = BlenderStrokeRenderer::GetStrokeShader(bmain, nt, true); ma->id.us = 0; return ma; } -- cgit v1.2.3