diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2017-11-01 21:00:42 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2017-11-05 20:13:44 +0300 |
commit | 2c02a04c464c2f5c6e211ceb7b21255eaca7e087 (patch) | |
tree | 005c4b99ecf43db7513e9b5c2dfcaca56e1608a1 /intern/cycles/kernel/kernel_shader.h | |
parent | cac3d4d16691d77e8e01f158be07d182e56e9755 (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.h | 34 |
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__ */ |