[Bf-blender-cvs] [ccde338] bake-cycles: Cycles-Bake: some small cleanup and small changes

Dalai Felinto noreply at git.blender.org
Wed Apr 23 02:46:42 CEST 2014


Commit: ccde3383647a99cfaacf7243dc3933d3cf892a3a
Author: Dalai Felinto
Date:   Tue Jan 21 11:59:32 2014 -0200
https://developer.blender.org/rBccde3383647a99cfaacf7243dc3933d3cf892a3a

Cycles-Bake: some small cleanup and small changes

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

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

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

diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index b2427e3..8c52982 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -319,13 +319,16 @@ static ShaderEvalType get_shader_type(const string& pass_type)
 	else if (strcmp(shader_type, "SHADOW")==0)
 		return SHADER_EVAL_SHADOW;
 
-	/*
 	else if (strcmp(shader_type, "DIFFUSE")==0)
+		return SHADER_EVAL_DIFFUSE;
 	else if (strcmp(shader_type, "COLOR")==0)
+		return SHADER_EVAL_COLOR;
 	else if (strcmp(shader_type, "REFRACTION")==0)
+		return SHADER_EVAL_REFRACTION;
 	else if (strcmp(shader_type, "SPECULAR")==0)
+		return SHADER_EVAL_SPECULAR;
 	else if (strcmp(shader_type, "REFLECTION")==0)
-		*/
+		return SHADER_EVAL_REFLECTION;
 	else
 		return SHADER_EVAL_BAKE;
 }
diff --git a/intern/cycles/kernel/kernel_displace.h b/intern/cycles/kernel/kernel_displace.h
index fc28b35..54f7bcf 100644
--- a/intern/cycles/kernel/kernel_displace.h
+++ b/intern/cycles/kernel/kernel_displace.h
@@ -16,7 +16,6 @@
 
 CCL_NAMESPACE_BEGIN
 
-
 ccl_device void kernel_bake_evaluate(KernelGlobals *kg, ccl_global uint4 *input, ccl_global float4 *output, ShaderEvalType type, int i)
 {
 	ShaderData sd;
@@ -38,19 +37,23 @@ ccl_device void kernel_bake_evaluate(KernelGlobals *kg, ccl_global uint4 *input,
 		return;
 	}
 
+	/* dummy initilizations copied from SHADER_EVAL_DISPLACE */
+	float3 I = make_float3(0.f);
+	float t = 0.f;
+	float time = TIME_INVALID;
+	int bounce = 0;
+	int segment = ~0;
+
 	switch (type) {
 		case SHADER_EVAL_COMBINED:
 		{
+			/* TODO it's not taking into consideration the
+			   RGB inputs of the shader nodes, so it's differing
+			   from the Composite COMBINED */
+
 			int shader;
 			float3 Ng = triangle_normal_MT(kg, prim, &shader);
 
-			/* dummy initilizations copied from SHADER_EVAL_DISPLACE */
-			float3 I = make_float3(0.f);
-			float t = 0.f;
-			float time = TIME_INVALID;
-			int bounce = 0;
-			int segment = ~0;
-
 			shader_setup_from_sample(kg, &sd, P, Ng, I, shader, object, prim, u, v, t, time, bounce, segment);
 			shader_eval_surface(kg, &sd, 0.f, 0, SHADER_CONTEXT_MAIN);
 
@@ -68,9 +71,56 @@ ccl_device void kernel_bake_evaluate(KernelGlobals *kg, ccl_global uint4 *input,
 #endif
 			break;
 		}
+		case SHADER_EVAL_DIFFUSE:
+		{
+			int shader;
+			float3 Ng = triangle_normal_MT(kg, prim, &shader);
+
+			shader_setup_from_sample(kg, &sd, P, Ng, I, shader, object, prim, u, v, t, time, bounce, segment);
+			shader_eval_surface(kg, &sd, 0.f, 0, SHADER_CONTEXT_MAIN);
+
+#ifdef __MULTI_CLOSURE__
+			float3 eval = make_float3(0.0f, 0.0f, 0.0f);
+
+			for(int i = 0; i< sd.num_closure; i++) {
+				const ShaderClosure *sc = &sd.closure[i];
+				if(sc->type == CLOSURE_BSDF_DIFFUSE_ID)
+					eval += sc->weight;
+			}
+
+			out = eval;
+#else
+			if(sd.closure.type == CLOSURE_BSDF_DIFFUSE_ID)
+				out = sd.closure.weight;
+			else
+				out = make_float3(0.0f, 0.0f, 0.0f);
+#endif
+			break;
+		}
 		case SHADER_EVAL_EMISSION:
 		{
-			/* TODO */
+			int shader;
+			float3 Ng = triangle_normal_MT(kg, prim, &shader);
+
+			shader_setup_from_sample(kg, &sd, P, Ng, I, shader, object, prim, u, v, t, time, bounce, segment);
+			shader_eval_surface(kg, &sd, 0.f, 0, SHADER_CONTEXT_EMISSION);
+
+#ifdef __MULTI_CLOSURE__
+			float3 eval = make_float3(0.0f, 0.0f, 0.0f);
+
+			for(int i = 0; i< sd.num_closure; i++) {
+				const ShaderClosure *sc = &sd.closure[i];
+				if(sc->type == CLOSURE_EMISSION_ID)
+					eval += sc->weight;
+			}
+
+			out = eval;
+#else
+			if(sd.closure.type == CLOSURE_EMISSION_ID)
+				out = sd.closure.weight;
+			else
+				out = make_float3(0.0f, 0.0f, 0.0f);
+#endif
 			break;
 		}
 		case SHADER_EVAL_AO:
@@ -78,6 +128,11 @@ ccl_device void kernel_bake_evaluate(KernelGlobals *kg, ccl_global uint4 *input,
 			/* TODO */
 			break;
 		}
+		case SHADER_EVAL_UV:
+		{
+			/* TODO */
+			break;
+		}
 		case SHADER_EVAL_ENVIRONMENT:
 		{
 			/* setup ray */
@@ -105,10 +160,12 @@ ccl_device void kernel_bake_evaluate(KernelGlobals *kg, ccl_global uint4 *input,
 		}
 		case SHADER_EVAL_NORMAL:
 		{
-			/* TODO: the normal needs to be
-			   evaluated inside the shader */
 			int shader;
-			out = triangle_normal_MT(kg, prim, &shader);
+			float3 Ng = triangle_normal_MT(kg, prim, &shader);
+
+			shader_setup_from_sample(kg, &sd, P, Ng, I, shader, object, prim, u, v, t, time, bounce, segment);
+
+			out = sd.N;
 			break;
 		}
 		case SHADER_EVAL_BAKE:




More information about the Bf-blender-cvs mailing list