[Bf-blender-cvs] [f06335e] master: Fix for view map cache not flushed by updates of edge detection options.
Tamito Kajiyama
noreply at git.blender.org
Sat Jan 3 07:41:11 CET 2015
Commit: f06335e12f0addb8102649af3087d02c680b9ad0
Author: Tamito Kajiyama
Date: Sat Jan 3 01:48:27 2015 +0900
Branches: master
https://developer.blender.org/rBf06335e12f0addb8102649af3087d02c680b9ad0
Fix for view map cache not flushed by updates of edge detection options.
This fix should be considered for inclusion in the 2.73 release, since
it concerns a new feature of Freestyle introduced in 2.73.
===================================================================
M source/blender/freestyle/CMakeLists.txt
M source/blender/freestyle/intern/application/Controller.cpp
A source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.cpp
A source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.h
M source/blender/freestyle/intern/scene_graph/SceneHash.cpp
M source/blender/freestyle/intern/scene_graph/SceneHash.h
M source/blender/freestyle/intern/scene_graph/SceneVisitor.h
===================================================================
diff --git a/source/blender/freestyle/CMakeLists.txt b/source/blender/freestyle/CMakeLists.txt
index cb187ec..6860afe 100644
--- a/source/blender/freestyle/CMakeLists.txt
+++ b/source/blender/freestyle/CMakeLists.txt
@@ -392,6 +392,8 @@ set(SRC
intern/scene_graph/NodeGroup.h
intern/scene_graph/NodeLight.cpp
intern/scene_graph/NodeLight.h
+ intern/scene_graph/NodeSceneRenderLayer.cpp
+ intern/scene_graph/NodeSceneRenderLayer.h
intern/scene_graph/NodeShape.cpp
intern/scene_graph/NodeShape.h
intern/scene_graph/NodeTransform.cpp
diff --git a/source/blender/freestyle/intern/application/Controller.cpp b/source/blender/freestyle/intern/application/Controller.cpp
index 237176d..7c8a0c9 100644
--- a/source/blender/freestyle/intern/application/Controller.cpp
+++ b/source/blender/freestyle/intern/application/Controller.cpp
@@ -40,6 +40,7 @@ extern "C" {
#include "../scene_graph/NodeDrawingStyle.h"
#include "../scene_graph/NodeShape.h"
#include "../scene_graph/NodeTransform.h"
+#include "../scene_graph/NodeSceneRenderLayer.h"
#include "../scene_graph/ScenePrettyPrinter.h"
#include "../scene_graph/VertexRep.h"
@@ -294,6 +295,7 @@ int Controller::LoadMesh(Render *re, SceneRenderLayer *srl)
}
cam->setProjectionMatrix(proj);
_RootNode->AddChild(cam);
+ _RootNode->AddChild(new NodeSceneRenderLayer(*srl));
sceneHashFunc.reset();
//blenderScene->accept(sceneHashFunc);
diff --git a/source/blender/freestyle/intern/scene_graph/SceneHash.h b/source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.cpp
similarity index 50%
copy from source/blender/freestyle/intern/scene_graph/SceneHash.h
copy to source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.cpp
index 5521b79..24c56ff 100644
--- a/source/blender/freestyle/intern/scene_graph/SceneHash.h
+++ b/source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.cpp
@@ -18,63 +18,18 @@
* ***** END GPL LICENSE BLOCK *****
*/
-#ifndef __FREESTYLE_SCENE_HASH_H__
-#define __FREESTYLE_SCENE_HASH_H__
-
-/** \file blender/freestyle/intern/scene_graph/SceneHash.h
+/** \file blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.cpp
* \ingroup freestyle
+ * \brief Class to represent a scene render layer in Blender.
*/
-#include "IndexedFaceSet.h"
-#include "NodeCamera.h"
-#include "SceneVisitor.h"
-
-#include "BLI_sys_types.h"
-
-#ifdef WITH_CXX_GUARDEDALLOC
-#include "MEM_guardedalloc.h"
-#endif
+#include "NodeSceneRenderLayer.h"
namespace Freestyle {
-class SceneHash : public SceneVisitor
+void NodeSceneRenderLayer::accept(SceneVisitor& v)
{
-public:
- inline SceneHash() : SceneVisitor()
- {
- _sum = 1;
- }
-
- virtual ~SceneHash() {}
-
- VISIT_DECL(NodeCamera)
- VISIT_DECL(IndexedFaceSet)
-
- string toString();
-
- inline bool match() {
- return _sum == _prevSum;
- }
-
- inline void store() {
- _prevSum = _sum;
- }
-
- inline void reset() {
- _sum = 1;
- }
-
-private:
- void adler32(unsigned char *data, int size);
-
- uint32_t _sum;
- uint32_t _prevSum;
-
-#ifdef WITH_CXX_GUARDEDALLOC
- MEM_CXX_CLASS_ALLOC_FUNCS("Freestyle:SceneHash")
-#endif
-};
+ v.visitNodeSceneRenderLayer(*this);
+}
} /* namespace Freestyle */
-
-#endif // __FREESTYLE_SCENE_HASH_H__
diff --git a/source/blender/freestyle/intern/scene_graph/SceneHash.h b/source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.h
similarity index 51%
copy from source/blender/freestyle/intern/scene_graph/SceneHash.h
copy to source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.h
index 5521b79..2fc08bb 100644
--- a/source/blender/freestyle/intern/scene_graph/SceneHash.h
+++ b/source/blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.h
@@ -18,63 +18,47 @@
* ***** END GPL LICENSE BLOCK *****
*/
-#ifndef __FREESTYLE_SCENE_HASH_H__
-#define __FREESTYLE_SCENE_HASH_H__
+#ifndef __FREESTYLE_NODE_SCENE_RENDER_LAYER_H__
+#define __FREESTYLE_NODE_SCENE_RENDER_LAYER_H__
-/** \file blender/freestyle/intern/scene_graph/SceneHash.h
+/** \file blender/freestyle/intern/scene_graph/NodeSceneRenderLayer.h
* \ingroup freestyle
+ * \brief Class to represent a scene render layer in Blender.
*/
-#include "IndexedFaceSet.h"
-#include "NodeCamera.h"
-#include "SceneVisitor.h"
+#include "Node.h"
-#include "BLI_sys_types.h"
+extern "C" {
+#include "DNA_scene_types.h" /* for SceneRenderLayer */
+}
-#ifdef WITH_CXX_GUARDEDALLOC
-#include "MEM_guardedalloc.h"
-#endif
+using namespace std;
namespace Freestyle {
-class SceneHash : public SceneVisitor
+class NodeSceneRenderLayer : public Node
{
public:
- inline SceneHash() : SceneVisitor()
- {
- _sum = 1;
- }
-
- virtual ~SceneHash() {}
-
- VISIT_DECL(NodeCamera)
- VISIT_DECL(IndexedFaceSet)
-
- string toString();
+ inline NodeSceneRenderLayer(SceneRenderLayer& srl) : Node(), _SceneRenderLayer(srl) {}
+ virtual ~NodeSceneRenderLayer() {}
- inline bool match() {
- return _sum == _prevSum;
- }
-
- inline void store() {
- _prevSum = _sum;
+ inline struct SceneRenderLayer& sceneRenderLayer() const
+ {
+ return _SceneRenderLayer;
}
- inline void reset() {
- _sum = 1;
+ inline void setSceneRenderLayer(SceneRenderLayer& srl)
+ {
+ _SceneRenderLayer = srl;
}
-private:
- void adler32(unsigned char *data, int size);
-
- uint32_t _sum;
- uint32_t _prevSum;
+ /*! Accept the corresponding visitor */
+ virtual void accept(SceneVisitor& v);
-#ifdef WITH_CXX_GUARDEDALLOC
- MEM_CXX_CLASS_ALLOC_FUNCS("Freestyle:SceneHash")
-#endif
+protected:
+ SceneRenderLayer& _SceneRenderLayer;
};
} /* namespace Freestyle */
-#endif // __FREESTYLE_SCENE_HASH_H__
+#endif // __FREESTYLE_NODE_SCENE_RENDER_LAYER_H__
diff --git a/source/blender/freestyle/intern/scene_graph/SceneHash.cpp b/source/blender/freestyle/intern/scene_graph/SceneHash.cpp
index 60b95aa..ee1d0c5 100644
--- a/source/blender/freestyle/intern/scene_graph/SceneHash.cpp
+++ b/source/blender/freestyle/intern/scene_graph/SceneHash.cpp
@@ -35,6 +35,15 @@ string SceneHash::toString()
return ss.str();
}
+void SceneHash::visitNodeSceneRenderLayer(NodeSceneRenderLayer& srl)
+{
+ 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));
+}
+
void SceneHash::visitNodeCamera(NodeCamera& cam)
{
double *proj = cam.projectionMatrix();
diff --git a/source/blender/freestyle/intern/scene_graph/SceneHash.h b/source/blender/freestyle/intern/scene_graph/SceneHash.h
index 5521b79..9da7116 100644
--- a/source/blender/freestyle/intern/scene_graph/SceneHash.h
+++ b/source/blender/freestyle/intern/scene_graph/SceneHash.h
@@ -26,6 +26,7 @@
*/
#include "IndexedFaceSet.h"
+#include "NodeSceneRenderLayer.h"
#include "NodeCamera.h"
#include "SceneVisitor.h"
@@ -48,6 +49,7 @@ public:
virtual ~SceneHash() {}
VISIT_DECL(NodeCamera)
+ VISIT_DECL(NodeSceneRenderLayer)
VISIT_DECL(IndexedFaceSet)
string toString();
diff --git a/source/blender/freestyle/intern/scene_graph/SceneVisitor.h b/source/blender/freestyle/intern/scene_graph/SceneVisitor.h
index c00f512..712585c 100644
--- a/source/blender/freestyle/intern/scene_graph/SceneVisitor.h
+++ b/source/blender/freestyle/intern/scene_graph/SceneVisitor.h
@@ -56,6 +56,7 @@ class NodeLight;
class NodeCamera;
class NodeDrawingStyle;
class NodeTransform;
+class NodeSceneRenderLayer;
class Rep;
class LineRep;
@@ -87,6 +88,7 @@ public:
VISIT_COMPLETE_DEF(NodeCamera)
VISIT_COMPLETE_DEF(NodeDrawingStyle)
VISIT_COMPLETE_DEF(NodeTransform)
+ VISIT_COMPLETE_DEF(NodeSceneRenderLayer)
VISIT_COMPLETE_DEF(Rep)
VISIT_COMPLETE_DEF(LineRep)
More information about the Bf-blender-cvs
mailing list