[Bf-blender-cvs] [0305b20] master: Fix for Freestyle view map caching not properly updated upon changes of render resolution and scale.
Tamito Kajiyama
noreply at git.blender.org
Mon Feb 2 02:19:26 CET 2015
Commit: 0305b208eb8d582fa04985e6350214a0b669159d
Author: Tamito Kajiyama
Date: Mon Feb 2 09:17:16 2015 +0900
Branches: master
https://developer.blender.org/rB0305b208eb8d582fa04985e6350214a0b669159d
Fix for Freestyle view map caching not properly updated upon changes of render resolution and scale.
Problem reports independently by Light BWK and Folkert de Vries, thanks.
===================================================================
M source/blender/freestyle/intern/application/Controller.cpp
M source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.h
M source/blender/freestyle/intern/scene_graph/SceneHash.cpp
===================================================================
diff --git a/source/blender/freestyle/intern/application/Controller.cpp b/source/blender/freestyle/intern/application/Controller.cpp
index 682183e..8d9b1a4 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 2fc08bb..4b079df 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 ee1d0c5..2253873 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)
More information about the Bf-blender-cvs
mailing list