Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2017-11-01 21:00:42 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2017-11-05 20:13:44 +0300
commit2c02a04c464c2f5c6e211ceb7b21255eaca7e087 (patch)
tree005c4b99ecf43db7513e9b5c2dfcaca56e1608a1 /intern/cycles/kernel/kernel_shader.h
parentcac3d4d16691d77e8e01f158be07d182e56e9755 (diff)
Code refactor: remove emission and background closures, sum directly.
Diffstat (limited to 'intern/cycles/kernel/kernel_shader.h')
-rw-r--r--intern/cycles/kernel/kernel_shader.h34
1 files changed, 10 insertions, 24 deletions
diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h
index b410785d7e0..30195605f2e 100644
--- a/intern/cycles/kernel/kernel_shader.h
+++ b/intern/cycles/kernel/kernel_shader.h
@@ -926,24 +926,14 @@ ccl_device float3 shader_bssrdf_sum(ShaderData *sd, float3 *N_, float *texture_b
/* Emission */
-ccl_device float3 emissive_eval(KernelGlobals *kg, ShaderData *sd, ShaderClosure *sc)
-{
- return emissive_simple_eval(sd->Ng, sd->I);
-}
-
ccl_device float3 shader_emissive_eval(KernelGlobals *kg, ShaderData *sd)
{
- float3 eval;
- eval = make_float3(0.0f, 0.0f, 0.0f);
-
- for(int i = 0; i < sd->num_closure; i++) {
- ShaderClosure *sc = &sd->closure[i];
-
- if(CLOSURE_IS_EMISSION(sc->type))
- eval += emissive_eval(kg, sd, sc)*sc->weight;
+ if(sd->flag & SD_EMISSION) {
+ return emissive_simple_eval(sd->Ng, sd->I) * sd->closure_emission_background;
+ }
+ else {
+ return make_float3(0.0f, 0.0f, 0.0f);
}
-
- return eval;
}
/* Holdout */
@@ -1011,16 +1001,12 @@ ccl_device float3 shader_eval_background(KernelGlobals *kg, ShaderData *sd,
svm_eval_nodes(kg, sd, state, SHADER_TYPE_SURFACE, path_flag);
}
- 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(CLOSURE_IS_BACKGROUND(sc->type))
- eval += sc->weight;
+ if(sd->flag & SD_EMISSION) {
+ return sd->closure_emission_background;
+ }
+ else {
+ return make_float3(0.0f, 0.0f, 0.0f);
}
-
- return eval;
#else /* __SVM__ */
return make_float3(0.8f, 0.8f, 0.8f);
#endif /* __SVM__ */