[Bf-blender-cvs] [4d6c877] master: Cycles OSL: fix mistake in recent refactoring, parameters are not set before setup.

Brecht Van Lommel noreply at git.blender.org
Fri Nov 29 17:18:54 CET 2013


Commit: 4d6c877b66903877ca379067299ed7cebdf8a94f
Author: Brecht Van Lommel
Date:   Fri Nov 29 17:17:00 2013 +0100
http://developer.blender.org/rB4d6c877b66903877ca379067299ed7cebdf8a94f

Cycles OSL: fix mistake in recent refactoring, parameters are not set before setup.

===================================================================

M	intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp
M	intern/cycles/kernel/osl/bsdf_phong_ramp.cpp
M	intern/cycles/kernel/osl/osl_bssrdf.cpp
M	intern/cycles/kernel/osl/osl_closures.h
M	intern/cycles/kernel/osl/osl_shader.cpp

===================================================================

diff --git a/intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp b/intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp
index 0e8193a..8f9c2ef 100644
--- a/intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp
+++ b/intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp
@@ -50,6 +50,9 @@ public:
 	float3 fcolors[8];
 
 	DiffuseRampClosure() : CBSDFClosure(LABEL_DIFFUSE)
+	{}
+
+	void setup()
 	{
 		sc.prim = this;
 		m_shaderdata_flag = bsdf_diffuse_ramp_setup(&sc);
diff --git a/intern/cycles/kernel/osl/bsdf_phong_ramp.cpp b/intern/cycles/kernel/osl/bsdf_phong_ramp.cpp
index 3c95bfc..c585174 100644
--- a/intern/cycles/kernel/osl/bsdf_phong_ramp.cpp
+++ b/intern/cycles/kernel/osl/bsdf_phong_ramp.cpp
@@ -49,6 +49,9 @@ public:
 	float3 fcolors[8];
 
 	PhongRampClosure() : CBSDFClosure(LABEL_GLOSSY)
+	{}
+
+	void setup()
 	{
 		sc.prim = this;
 		m_shaderdata_flag = bsdf_phong_ramp_setup(&sc);
diff --git a/intern/cycles/kernel/osl/osl_bssrdf.cpp b/intern/cycles/kernel/osl/osl_bssrdf.cpp
index 887015c..9433729 100644
--- a/intern/cycles/kernel/osl/osl_bssrdf.cpp
+++ b/intern/cycles/kernel/osl/osl_bssrdf.cpp
@@ -52,6 +52,9 @@ using namespace OSL;
 class CubicBSSRDFClosure : public CBSSRDFClosure {
 public:
 	CubicBSSRDFClosure()
+	{}
+
+	void setup()
 	{
 		sc.type = CLOSURE_BSSRDF_CUBIC_ID;
 		sc.data0 = fabsf(average(radius));
@@ -90,6 +93,9 @@ CCLOSURE_PREPARE(closure_bssrdf_cubic_prepare, CubicBSSRDFClosure)
 class GaussianBSSRDFClosure : public CBSSRDFClosure {
 public:
 	GaussianBSSRDFClosure()
+	{}
+
+	void setup()
 	{
 		sc.type = CLOSURE_BSSRDF_GAUSSIAN_ID;
 		sc.data0 = fabsf(average(radius));
diff --git a/intern/cycles/kernel/osl/osl_closures.h b/intern/cycles/kernel/osl/osl_closures.h
index 46d645d..b6c38e0 100644
--- a/intern/cycles/kernel/osl/osl_closures.h
+++ b/intern/cycles/kernel/osl/osl_closures.h
@@ -96,8 +96,9 @@ public:
 		AmbientOcclusion, ///< Ambient occlusion
 	};
 
-	CClosurePrimitive (Category category_) : category (category_) { }
+	CClosurePrimitive (Category category_) : category (category_) {}
 	virtual ~CClosurePrimitive() {}
+	virtual void setup() {}
 
 	Category category;
 };
@@ -110,7 +111,7 @@ public:
 
 	CBSDFClosure(int scattering) : CClosurePrimitive(BSDF),
 	  m_scattering_label(scattering), m_shaderdata_flag(0)
-	{ }
+	{}
 
 	int scattering() const { return m_scattering_label; }
 	int shaderdata_flag() const { return m_shaderdata_flag; }
@@ -136,6 +137,10 @@ class Upper##Closure : public CBSDFClosure { \
 public: \
 	Upper##Closure() : CBSDFClosure(TYPE) \
 	{ \
+	} \
+\
+	void setup() \
+	{ \
 		sc.prim = NULL; \
 		m_shaderdata_flag = bsdf_##lower##_setup(&sc); \
 	} \
diff --git a/intern/cycles/kernel/osl/osl_shader.cpp b/intern/cycles/kernel/osl/osl_shader.cpp
index 146736b..f2be61e 100644
--- a/intern/cycles/kernel/osl/osl_shader.cpp
+++ b/intern/cycles/kernel/osl/osl_shader.cpp
@@ -156,6 +156,8 @@ static void flatten_surface_closure_tree(ShaderData *sd, int path_flag,
 			sc.weight = weight;
 #endif
 
+			prim->setup();
+
 			switch (prim->category) {
 				case CClosurePrimitive::BSDF: {
 					CBSDFClosure *bsdf = (CBSDFClosure *)prim;
@@ -395,6 +397,8 @@ static void flatten_volume_closure_tree(ShaderData *sd,
 			sc.weight = weight;
 #endif
 
+			prim->setup();
+
 			switch (prim->category) {
 				case CClosurePrimitive::Volume: {
 					/* sample weight */




More information about the Bf-blender-cvs mailing list