Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/freestyle/intern/application/Controller.cpp2
-rw-r--r--source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.h16
-rw-r--r--source/blender/freestyle/intern/scene_graph/SceneHash.cpp17
3 files changed, 26 insertions, 9 deletions
diff --git a/source/blender/freestyle/intern/application/Controller.cpp b/source/blender/freestyle/intern/application/Controller.cpp
index 682183ef6ff..8d9b1a4fb52 100644
--- a/source/blender/freestyle/intern/application/Controller.cpp
+++ b/source/blender/freestyle/intern/application/Controller.cpp
@@ -295,7 +295,7 @@ int Controller::LoadMesh(Render *re, SceneRenderLayer *srl)
}
cam->setProjectionMatrix(proj);
_RootNode->AddChild(cam);
- _RootNode->AddChild(new NodeSceneRenderLayer(*srl));
+ _RootNode->AddChild(new NodeSceneRenderLayer(*re->scene, *srl));
sceneHashFunc.reset();
//blenderScene->accept(sceneHashFunc);
diff --git a/source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.h b/source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.h
index 2fc08bb1175..4b079df5632 100644
--- a/source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.h
+++ b/source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.h
@@ -29,7 +29,7 @@
#include "Node.h"
extern "C" {
-#include "DNA_scene_types.h" /* for SceneRenderLayer */
+#include "DNA_scene_types.h" /* for Scene and SceneRenderLayer */
}
using namespace std;
@@ -39,14 +39,24 @@ namespace Freestyle {
class NodeSceneRenderLayer : public Node
{
public:
- inline NodeSceneRenderLayer(SceneRenderLayer& srl) : Node(), _SceneRenderLayer(srl) {}
+ inline NodeSceneRenderLayer(Scene& scene, SceneRenderLayer& srl) : Node(), _Scene(scene), _SceneRenderLayer(srl) {}
virtual ~NodeSceneRenderLayer() {}
+ inline struct Scene& scene() const
+ {
+ return _Scene;
+ }
+
inline struct SceneRenderLayer& sceneRenderLayer() const
{
return _SceneRenderLayer;
}
+ inline void setSceneRenderLayer(Scene& scene)
+ {
+ _Scene = scene;
+ }
+
inline void setSceneRenderLayer(SceneRenderLayer& srl)
{
_SceneRenderLayer = srl;
@@ -56,6 +66,8 @@ public:
virtual void accept(SceneVisitor& v);
protected:
+
+ Scene& _Scene;
SceneRenderLayer& _SceneRenderLayer;
};
diff --git a/source/blender/freestyle/intern/scene_graph/SceneHash.cpp b/source/blender/freestyle/intern/scene_graph/SceneHash.cpp
index ee1d0c53b87..22538736fbf 100644
--- a/source/blender/freestyle/intern/scene_graph/SceneHash.cpp
+++ b/source/blender/freestyle/intern/scene_graph/SceneHash.cpp
@@ -35,13 +35,18 @@ string SceneHash::toString()
return ss.str();
}
-void SceneHash::visitNodeSceneRenderLayer(NodeSceneRenderLayer& srl)
+void SceneHash::visitNodeSceneRenderLayer(NodeSceneRenderLayer& node)
{
- struct FreestyleConfig *config = &srl.sceneRenderLayer().freestyleConfig;
- adler32((unsigned char *)&config->flags, sizeof(int));
- adler32((unsigned char *)&config->crease_angle, sizeof(float));
- adler32((unsigned char *)&config->sphere_radius, sizeof(float));
- adler32((unsigned char *)&config->dkr_epsilon, sizeof(float));
+ struct RenderData *r = &node.scene().r;
+ adler32((unsigned char *)&r->xsch, sizeof(r->xsch)); // resolution_x
+ adler32((unsigned char *)&r->ysch, sizeof(r->ysch)); // resolution_y
+ adler32((unsigned char *)&r->size, sizeof(r->size)); // resolution_percentage
+
+ struct FreestyleConfig *config = &node.sceneRenderLayer().freestyleConfig;
+ adler32((unsigned char *)&config->flags, sizeof(config->flags));
+ adler32((unsigned char *)&config->crease_angle, sizeof(config->crease_angle));
+ adler32((unsigned char *)&config->sphere_radius, sizeof(config->sphere_radius));
+ adler32((unsigned char *)&config->dkr_epsilon, sizeof(config->dkr_epsilon));
}
void SceneHash::visitNodeCamera(NodeCamera& cam)