[Bf-blender-cvs] [1f8c36d] bake-cycles: Cycles-Bake: [review] using MACRO in get_shader_type()

Dalai Felinto noreply at git.blender.org
Wed Apr 23 02:48:03 CEST 2014


Commit: 1f8c36d02c2b62387c2bb7c3f29ddb722771b2de
Author: Dalai Felinto
Date:   Thu Apr 10 17:33:11 2014 -0300
https://developer.blender.org/rB1f8c36d02c2b62387c2bb7c3f29ddb722771b2de

Cycles-Bake: [review] using MACRO in get_shader_type()

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

M	intern/cycles/blender/blender_session.cpp
M	intern/cycles/kernel/kernel_displace.h
M	intern/cycles/kernel/kernel_types.h

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

diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 6f959d4..191daf4 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -263,58 +263,50 @@ static PassType get_pass_type(BL::RenderPass b_pass)
 	return PASS_NONE;
 }
 
+#define STRINGIFY_APPEND(a, b) "" a #b
+#define STRINGIFY(x) STRINGIFY_APPEND("", x)
+
+#define SHADER_EVAL_CHECK_RET(id) \
+if (strcmp(shader_type, STRINGIFY(id)) == 0) \
+return SHADER_EVAL_##id;
+
 static ShaderEvalType get_shader_type(const string& pass_type)
 {
 	const char *shader_type = pass_type.c_str();
 
 	/* data passes */
-	if(strcmp(shader_type, "NORMAL")==0)
-		return SHADER_EVAL_NORMAL;
-	else if(strcmp(shader_type, "UV")==0)
-		return SHADER_EVAL_UV;
-	else if(strcmp(shader_type, "DIFFUSE_COLOR")==0)
-		return SHADER_EVAL_DIFFUSE_COLOR;
-	else if(strcmp(shader_type, "GLOSSY_COLOR")==0)
-		return SHADER_EVAL_GLOSSY_COLOR;
-	else if(strcmp(shader_type, "TRANSMISSION_COLOR")==0)
-		return SHADER_EVAL_TRANSMISSION_COLOR;
-	else if(strcmp(shader_type, "SUBSURFACE_COLOR")==0)
-		return SHADER_EVAL_SUBSURFACE_COLOR;
-	else if(strcmp(shader_type, "EMIT")==0)
-		return SHADER_EVAL_EMISSION;
+	SHADER_EVAL_CHECK_RET(NORMAL)
+	SHADER_EVAL_CHECK_RET(UV)
+	SHADER_EVAL_CHECK_RET(DIFFUSE_COLOR)
+	SHADER_EVAL_CHECK_RET(GLOSSY_COLOR)
+	SHADER_EVAL_CHECK_RET(TRANSMISSION_COLOR)
+	SHADER_EVAL_CHECK_RET(SUBSURFACE_COLOR)
+	SHADER_EVAL_CHECK_RET(EMIT)
 
 	/* light passes */
-	else if(strcmp(shader_type, "AO")==0)
-		return SHADER_EVAL_AO;
-	else if(strcmp(shader_type, "COMBINED")==0)
-		return SHADER_EVAL_COMBINED;
-	else if(strcmp(shader_type, "SHADOW")==0)
-		return SHADER_EVAL_SHADOW;
-	else if(strcmp(shader_type, "DIFFUSE_DIRECT")==0)
-		return SHADER_EVAL_DIFFUSE_DIRECT;
-	else if(strcmp(shader_type, "GLOSSY_DIRECT")==0)
-		return SHADER_EVAL_GLOSSY_DIRECT;
-	else if(strcmp(shader_type, "TRANSMISSION_DIRECT")==0)
-		return SHADER_EVAL_TRANSMISSION_DIRECT;
-	else if(strcmp(shader_type, "SUBSURFACE_DIRECT")==0)
-		return SHADER_EVAL_SUBSURFACE_DIRECT;
-	else if(strcmp(shader_type, "DIFFUSE_INDIRECT")==0)
-		return SHADER_EVAL_DIFFUSE_INDIRECT;
-	else if(strcmp(shader_type, "GLOSSY_INDIRECT")==0)
-		return SHADER_EVAL_GLOSSY_INDIRECT;
-	else if(strcmp(shader_type, "TRANSMISSION_INDIRECT")==0)
-		return SHADER_EVAL_TRANSMISSION_INDIRECT;
-	else if(strcmp(shader_type, "SUBSURFACE_INDIRECT")==0)
-		return SHADER_EVAL_SUBSURFACE_INDIRECT;
+	SHADER_EVAL_CHECK_RET(AO)
+	SHADER_EVAL_CHECK_RET(COMBINED)
+	SHADER_EVAL_CHECK_RET(SHADOW)
+	SHADER_EVAL_CHECK_RET(DIFFUSE_DIRECT)
+	SHADER_EVAL_CHECK_RET(GLOSSY_DIRECT)
+	SHADER_EVAL_CHECK_RET(TRANSMISSION_DIRECT)
+	SHADER_EVAL_CHECK_RET(SUBSURFACE_DIRECT)
+	SHADER_EVAL_CHECK_RET(DIFFUSE_INDIRECT)
+	SHADER_EVAL_CHECK_RET(GLOSSY_INDIRECT)
+	SHADER_EVAL_CHECK_RET(TRANSMISSION_INDIRECT)
+	SHADER_EVAL_CHECK_RET(SUBSURFACE_INDIRECT)
 
 	/* extra */
-	else if(strcmp(shader_type, "ENVIRONMENT")==0)
-		return SHADER_EVAL_ENVIRONMENT;
+	SHADER_EVAL_CHECK_RET(ENVIRONMENT)
 
-	else
-		return SHADER_EVAL_BAKE;
+	return SHADER_EVAL_BAKE;
 }
 
+#undef SHADER_EVAL_CHECK_RET
+
+#undef STRINGIFY
+#undef STRINGIFY_APPEND
+
 static BL::RenderResult begin_render_result(BL::RenderEngine b_engine, int x, int y, int w, int h, const char *layername)
 {
 	return b_engine.begin_result(x, y, w, h, layername);
diff --git a/intern/cycles/kernel/kernel_displace.h b/intern/cycles/kernel/kernel_displace.h
index 6dfed72..e048f55 100644
--- a/intern/cycles/kernel/kernel_displace.h
+++ b/intern/cycles/kernel/kernel_displace.h
@@ -165,7 +165,7 @@ ccl_device void kernel_bake_evaluate(KernelGlobals *kg, ccl_global uint4 *input,
 #endif
 			break;
 		}
-		case SHADER_EVAL_EMISSION:
+		case SHADER_EVAL_EMIT:
 		{
 			shader_eval_surface(kg, &sd, 0.f, 0, SHADER_CONTEXT_EMISSION);
 			out = shader_emissive_eval(kg, &sd);
diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h
index b3656c3..18d1869 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -172,7 +172,7 @@ typedef enum ShaderEvalType {
 	SHADER_EVAL_GLOSSY_COLOR,
 	SHADER_EVAL_TRANSMISSION_COLOR,
 	SHADER_EVAL_SUBSURFACE_COLOR,
-	SHADER_EVAL_EMISSION,
+	SHADER_EVAL_EMIT,
 
 	/* light passes */
 	SHADER_EVAL_AO,




More information about the Bf-blender-cvs mailing list