[Bf-blender-cvs] [746628e] master: Cycles OSL: refactoring to remove all dependencies on builtin OSL closures.

Brecht Van Lommel noreply at git.blender.org
Fri Nov 29 04:01:47 CET 2013


Commit: 746628e0d021fa616c69e9ff0ef9ad71cba23694
Author: Brecht Van Lommel
Date:   Fri Nov 29 02:09:24 2013 +0100
http://developer.blender.org/rB746628e0d021fa616c69e9ff0ef9ad71cba23694

Cycles OSL: refactoring to remove all dependencies on builtin OSL closures.

These were removed in new OSL versions. We only used these as base classes,
not using them at all simplifies the code a bit.

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

M	intern/cycles/kernel/closure/volume.h
M	intern/cycles/kernel/kernel_shader.h
M	intern/cycles/kernel/osl/background.cpp
M	intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp
M	intern/cycles/kernel/osl/bsdf_phong_ramp.cpp
M	intern/cycles/kernel/osl/emissive.cpp
M	intern/cycles/kernel/osl/osl_bssrdf.cpp
M	intern/cycles/kernel/osl/osl_bssrdf.h
M	intern/cycles/kernel/osl/osl_closures.cpp
M	intern/cycles/kernel/osl/osl_closures.h
M	intern/cycles/kernel/osl/osl_shader.cpp
M	intern/cycles/kernel/osl/osl_shader.h

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

diff --git a/intern/cycles/kernel/closure/volume.h b/intern/cycles/kernel/closure/volume.h
index f30b30c..f493256 100644
--- a/intern/cycles/kernel/closure/volume.h
+++ b/intern/cycles/kernel/closure/volume.h
@@ -53,11 +53,6 @@ ccl_device float3 volume_transparent_eval_phase(const ShaderClosure *sc, const f
 
 ccl_device float3 volume_eval_phase(KernelGlobals *kg, const ShaderClosure *sc, const float3 omega_in, const float3 omega_out)
 {
-#ifdef __OSL__
-	if(kg->osl && sc->prim)
-		return OSLShader::volume_eval_phase(sc, omega_in, omega_out);
-#endif
-
 	float3 eval;
 
 	switch(sc->type) {
diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h
index 77154ce..dbc705e 100644
--- a/intern/cycles/kernel/kernel_shader.h
+++ b/intern/cycles/kernel/kernel_shader.h
@@ -764,11 +764,6 @@ ccl_device float3 shader_bssrdf_sum(ShaderData *sd, float3 *N_, float *texture_b
 
 ccl_device float3 emissive_eval(KernelGlobals *kg, ShaderData *sd, ShaderClosure *sc)
 {
-#ifdef __OSL__
-	if(kg->osl && sc->prim)
-		return OSLShader::emissive_eval(sd, sc);
-#endif
-
 	return emissive_simple_eval(sd->Ng, sd->I);
 }
 
diff --git a/intern/cycles/kernel/osl/background.cpp b/intern/cycles/kernel/osl/background.cpp
index eed4446..2facced 100644
--- a/intern/cycles/kernel/osl/background.cpp
+++ b/intern/cycles/kernel/osl/background.cpp
@@ -46,14 +46,9 @@ using namespace OSL;
 /// to return a color in background shaders. No methods,
 /// only the weight is taking into account
 ///
-class GenericBackgroundClosure : public OSL::BackgroundClosure {
+class GenericBackgroundClosure : public CClosurePrimitive {
 public:
-	GenericBackgroundClosure() {}
-
-	void setup() {};
-	size_t memsize() const { return sizeof(*this); }
-	const char *name() const { return "background"; }
-	void print_on(std::ostream &out) const { out << name() << " ()"; }
+	GenericBackgroundClosure() : CClosurePrimitive(Background) {}
 };
 
 /// Holdout closure
@@ -63,14 +58,9 @@ public:
 /// point. No parameters, only the weight will be
 /// used
 ///
-class HoldoutClosure : ClosurePrimitive {
+class HoldoutClosure : CClosurePrimitive {
 public:
-	HoldoutClosure () : ClosurePrimitive(Holdout) {}
-
-	void setup() {};
-	size_t memsize() const { return sizeof(*this); }
-	const char *name() const { return "holdout"; }
-	void print_on(std::ostream &out) const { out << name() << " ()"; }
+	HoldoutClosure () : CClosurePrimitive(Holdout) {}
 };
 
 /// ambient occlusion closure
@@ -79,14 +69,9 @@ public:
 /// to return a color in ambient occlusion shaders. No methods,
 /// only the weight is taking into account
 ///
-class AmbientOcclusionClosure : public ClosurePrimitive {
+class AmbientOcclusionClosure : public CClosurePrimitive {
 public:
-	AmbientOcclusionClosure () : ClosurePrimitive((ClosurePrimitive::Category)AmbientOcclusion) {}
-
-	void setup() {};
-	size_t memsize() const { return sizeof(*this); }
-	const char *name() const { return "ambient_occlusion"; }
-	void print_on(std::ostream &out) const { out << name() << " ()"; }
+	AmbientOcclusionClosure () : CClosurePrimitive(AmbientOcclusion) {}
 };
 
 ClosureParam *closure_background_params()
@@ -98,7 +83,7 @@ ClosureParam *closure_background_params()
 	return params;
 }
 
-CLOSURE_PREPARE(closure_background_prepare, GenericBackgroundClosure)
+CCLOSURE_PREPARE(closure_background_prepare, GenericBackgroundClosure)
 
 ClosureParam *closure_holdout_params()
 {
@@ -108,7 +93,7 @@ ClosureParam *closure_holdout_params()
 	return params;
 }
 
-CLOSURE_PREPARE(closure_holdout_prepare, HoldoutClosure)
+CCLOSURE_PREPARE(closure_holdout_prepare, HoldoutClosure)
 
 ClosureParam *closure_ambient_occlusion_params()
 {
@@ -119,7 +104,7 @@ ClosureParam *closure_ambient_occlusion_params()
 	return params;
 }
 
-CLOSURE_PREPARE(closure_ambient_occlusion_prepare, AmbientOcclusionClosure)
+CCLOSURE_PREPARE(closure_ambient_occlusion_prepare, AmbientOcclusionClosure)
 
 CCL_NAMESPACE_END
 
diff --git a/intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp b/intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp
index a320bea..0e8193a 100644
--- a/intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp
+++ b/intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp
@@ -46,14 +46,10 @@ using namespace OSL;
 
 class DiffuseRampClosure : public CBSDFClosure {
 public:
-	DiffuseRampClosure() : CBSDFClosure(LABEL_DIFFUSE) {}
 	Color3 colors[8];
 	float3 fcolors[8];
 
-	size_t memsize() const { return sizeof(*this); }
-	const char *name() const { return "diffuse_ramp"; }
-
-	void setup()
+	DiffuseRampClosure() : CBSDFClosure(LABEL_DIFFUSE)
 	{
 		sc.prim = this;
 		m_shaderdata_flag = bsdf_diffuse_ramp_setup(&sc);
@@ -62,21 +58,11 @@ public:
 			fcolors[i] = TO_FLOAT3(colors[i]);
 	}
 
-	bool mergeable(const ClosurePrimitive *other) const
-	{
-		return false;
-	}
-
 	void blur(float roughness)
 	{
 		bsdf_diffuse_ramp_blur(&sc, roughness);
 	}
 
-	void print_on(std::ostream &out) const
-	{
-		out << name() << " ((" << sc.N[0] << ", " << sc.N[1] << ", " << sc.N[2] << "))";
-	}
-
 	float3 eval_reflect(const float3 &omega_out, const float3 &omega_in, float& pdf) const
 	{
 		return bsdf_diffuse_ramp_eval_reflect(&sc, fcolors, omega_out, omega_in, &pdf);
@@ -109,7 +95,7 @@ ClosureParam *closure_bsdf_diffuse_ramp_params()
 	return params;
 }
 
-CLOSURE_PREPARE(closure_bsdf_diffuse_ramp_prepare, DiffuseRampClosure)
+CCLOSURE_PREPARE(closure_bsdf_diffuse_ramp_prepare, DiffuseRampClosure)
 
 CCL_NAMESPACE_END
 
diff --git a/intern/cycles/kernel/osl/bsdf_phong_ramp.cpp b/intern/cycles/kernel/osl/bsdf_phong_ramp.cpp
index ef656ee..3c95bfc 100644
--- a/intern/cycles/kernel/osl/bsdf_phong_ramp.cpp
+++ b/intern/cycles/kernel/osl/bsdf_phong_ramp.cpp
@@ -45,14 +45,10 @@ using namespace OSL;
 
 class PhongRampClosure : public CBSDFClosure {
 public:
-	PhongRampClosure() : CBSDFClosure(LABEL_GLOSSY) {}
 	Color3 colors[8];
 	float3 fcolors[8];
 
-	size_t memsize() const { return sizeof(*this); }
-	const char *name() const { return "phong_ramp"; }
-
-	void setup()
+	PhongRampClosure() : CBSDFClosure(LABEL_GLOSSY)
 	{
 		sc.prim = this;
 		m_shaderdata_flag = bsdf_phong_ramp_setup(&sc);
@@ -61,21 +57,11 @@ public:
 			fcolors[i] = TO_FLOAT3(colors[i]);
 	}
 
-	bool mergeable(const ClosurePrimitive *other) const
-	{
-		return false;
-	}
-
 	void blur(float roughness)
 	{
 		bsdf_phong_ramp_blur(&sc, roughness);
 	}
 
-	void print_on(std::ostream &out) const
-	{
-		out << name() << " ((" << sc.N[0] << ", " << sc.N[1] << ", " << sc.N[2] << "))";
-	}
-
 	float3 eval_reflect(const float3 &omega_out, const float3 &omega_in, float& pdf) const
 	{
 		return bsdf_phong_ramp_eval_reflect(&sc, fcolors, omega_out, omega_in, &pdf);
@@ -109,7 +95,7 @@ ClosureParam *closure_bsdf_phong_ramp_params()
 	return params;
 }
 
-CLOSURE_PREPARE(closure_bsdf_phong_ramp_prepare, PhongRampClosure)
+CCLOSURE_PREPARE(closure_bsdf_phong_ramp_prepare, PhongRampClosure)
 
 CCL_NAMESPACE_END
 
diff --git a/intern/cycles/kernel/osl/emissive.cpp b/intern/cycles/kernel/osl/emissive.cpp
index 7d9fa81..0293554 100644
--- a/intern/cycles/kernel/osl/emissive.cpp
+++ b/intern/cycles/kernel/osl/emissive.cpp
@@ -50,18 +50,9 @@ using namespace OSL;
 /// outer_angle limit. It can also behave as a lambertian emitter
 /// if the provided angles are PI/2, which is the default
 ///
-class GenericEmissiveClosure : public EmissiveClosure {
+class GenericEmissiveClosure : public CClosurePrimitive {
 public:
-	GenericEmissiveClosure() { }
-
-	void setup() {}
-	size_t memsize() const { return sizeof(*this); }
-	const char *name() const { return "emission"; }
-
-	void print_on(std::ostream &out) const
-	{
-		out << name() << "()";
-	}
+	GenericEmissiveClosure() : CClosurePrimitive(Emissive) { }
 
 	Color3 eval(const Vec3 &Ng, const Vec3 &omega_out) const
 	{
@@ -92,7 +83,7 @@ ClosureParam *closure_emission_params()
 	return params;
 }
 
-CLOSURE_PREPARE(closure_emission_prepare, GenericEmissiveClosure)
+CCLOSURE_PREPARE(closure_emission_prepare, GenericEmissiveClosure)
 
 CCL_NAMESPACE_END
 
diff --git a/intern/cycles/kernel/osl/osl_bssrdf.cpp b/intern/cycles/kernel/osl/osl_bssrdf.cpp
index 975967c..887015c 100644
--- a/intern/cycles/kernel/osl/osl_bssrdf.cpp
+++ b/intern/cycles/kernel/osl/osl_bssrdf.cpp
@@ -51,24 +51,11 @@ using namespace OSL;
 
 class CubicBSSRDFClosure : public CBSSRDFClosure {
 public:
-	size_t memsize() const { return sizeof(*this); }
-	const char *name() const { return "bssrdf_cubic"; }
-
-	void setup()
+	CubicBSSRDFClosure()
 	{
 		sc.type = CLOSURE_BSSRDF_CUBIC_ID;
 		sc.data0 = fabsf(average(radius));
 	}
-
-	bool mergeable(const ClosurePrimitive *other) const
-	{
-		return false;
-	}
-
-	void print_on(std::ostream &out) const
-	{
-		out << name() << " ((" << sc.N[0] << ", " << sc.N[1] << ", " << sc.N[2] << "))";
-	}
 };
 
 ClosureParam *closure_bssrdf_cubic_params()
@@ -96,30 +83,17 @@ ClosureParam *closure_bssrdf_cubic_extended_params()
 	return params;
 }
 
-CLOSURE_PREPARE(closure_bssrdf_cubic_prepare, CubicBSSRDFClosure)
+CCLOSURE_PREPARE(closure_bssrdf_cubic_prepare, CubicBSSRDFClosure)
 
 /* Gaussian */
 
 class GaussianBSSRDFClosure : public CBSSRDFClosure {
 public:
-	size_t memsize() const { return sizeof(*this); }
-	const char *name() const { return "bssrdf_gaussian"; }
-
-	void setup()
+	GaussianBSSRDFClosure()
 	{
 		sc.type = CLOSURE_BSSRDF_GAUSSIAN_ID;
 		sc.data0 = fabsf(average(radius));
 	}
-
-	bool mergeable(const ClosurePrimitive *other) const
-	{
-		return false;
-	}
-
-	void print_on(std::ostream &out) const
-	{
-		out << name() << " ((" << sc.N[0] << ", " << sc.N[1] << ", " << sc.N[2] << "))";
-	}
 };
 
 ClosureParam *closure_bssrdf_gaussian_params()
@@ -146,7 +120,7 @@ ClosureParam *closure_bssrdf_gaussian_extended_params()
 	return params;
 }
 
-CLOSURE_PREPARE(closure_bssrdf_gaussian_prepare, GaussianBSSRDFClosure)
+CCLOSURE_PREPARE(closure_bssrdf_gaussian_prepare, GaussianBSSRDFClosure)
 
 CCL_NAMESPACE_END
 
diff --git a/intern/cycles/kernel/osl/osl_bssrdf.h b/intern/cycles/kernel/osl/osl_bssrdf.h
index fc1a4c5..6aee2c2 100644
--- a/intern/cycles/kernel/osl/osl_bssrdf.h
+++ b/intern/cycles/kernel/osl/osl_bssrdf.h
@@ -37,20 +37,20 @@
 #include <OSL/oslexec.h>
 #include <OSL/genclosure.h>
 
+#include "osl_closures.h

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list