[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