[Bf-blender-cvs] [2b9df69] bake-cycles: Cycles-Bake: divide the in/direct passes by the color passes

Dalai Felinto noreply at git.blender.org
Wed Apr 23 02:47:38 CEST 2014


Commit: 2b9df69ea531758e39cf4c2bdd334b8ecb58bcb3
Author: Dalai Felinto
Date:   Mon Mar 24 11:56:18 2014 -0300
https://developer.blender.org/rB2b9df69ea531758e39cf4c2bdd334b8ecb58bcb3

Cycles-Bake: divide the in/direct passes by the color passes

Otherwise the in/direct passes are 'contamined' by the texture/color of
the faces.

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

M	intern/cycles/kernel/kernel_displace.h

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

diff --git a/intern/cycles/kernel/kernel_displace.h b/intern/cycles/kernel/kernel_displace.h
index dde8b4e..936db07 100644
--- a/intern/cycles/kernel/kernel_displace.h
+++ b/intern/cycles/kernel/kernel_displace.h
@@ -192,42 +192,54 @@ ccl_device void kernel_bake_evaluate(KernelGlobals *kg, ccl_global uint4 *input,
 		}
 		case SHADER_EVAL_DIFFUSE_DIRECT:
 		{
-			out = L.direct_diffuse;
+			shader_eval_surface(kg, &sd, 0.f, 0, SHADER_CONTEXT_MAIN);
+			out = safe_divide_color(L.direct_diffuse, shader_bsdf_diffuse(kg, &sd));
 			break;
 		}
 		case SHADER_EVAL_GLOSSY_DIRECT:
 		{
-			out = L.direct_glossy;
+			shader_eval_surface(kg, &sd, 0.f, 0, SHADER_CONTEXT_MAIN);
+			out = safe_divide_color(L.direct_glossy, shader_bsdf_glossy(kg, &sd));
 			break;
 		}
 		case SHADER_EVAL_TRANSMISSION_DIRECT:
 		{
-			out = L.direct_transmission;
+			shader_eval_surface(kg, &sd, 0.f, 0, SHADER_CONTEXT_MAIN);
+			out = safe_divide_color(L.direct_transmission, shader_bsdf_transmission(kg, &sd));
 			break;
 		}
 		case SHADER_EVAL_SUBSURFACE_DIRECT:
 		{
-			out = L.direct_subsurface;
+#ifdef __SUBSURFACE__
+			shader_eval_surface(kg, &sd, 0.f, 0, SHADER_CONTEXT_MAIN);
+			out = safe_divide_color(L.direct_subsurface, shader_bsdf_subsurface(kg, &sd));
+#endif
 			break;
 		}
 		case SHADER_EVAL_DIFFUSE_INDIRECT:
 		{
-			out = L.indirect_diffuse;
+			shader_eval_surface(kg, &sd, 0.f, 0, SHADER_CONTEXT_MAIN);
+			out = safe_divide_color(L.indirect_diffuse, shader_bsdf_diffuse(kg, &sd));
 			break;
 		}
 		case SHADER_EVAL_GLOSSY_INDIRECT:
 		{
-			out = L.indirect_glossy;
+			shader_eval_surface(kg, &sd, 0.f, 0, SHADER_CONTEXT_MAIN);
+			out = safe_divide_color(L.indirect_glossy, shader_bsdf_glossy(kg, &sd));
 			break;
 		}
 		case SHADER_EVAL_TRANSMISSION_INDIRECT:
 		{
-			out = L.indirect_transmission;
+			shader_eval_surface(kg, &sd, 0.f, 0, SHADER_CONTEXT_MAIN);
+			out = safe_divide_color(L.indirect_transmission, shader_bsdf_transmission(kg, &sd));
 			break;
 		}
 		case SHADER_EVAL_SUBSURFACE_INDIRECT:
 		{
-			out = L.indirect_subsurface;
+#ifdef __SUBSURFACE__
+			shader_eval_surface(kg, &sd, 0.f, 0, SHADER_CONTEXT_MAIN);
+			out = safe_divide_color(L.indirect_subsurface, shader_bsdf_subsurface(kg, &sd));
+#endif
 			break;
 		}




More information about the Bf-blender-cvs mailing list