diff options
Diffstat (limited to 'intern/cycles/kernel/kernel_shader.h')
-rw-r--r-- | intern/cycles/kernel/kernel_shader.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h index c4fc65596b2..ed3aec21207 100644 --- a/intern/cycles/kernel/kernel_shader.h +++ b/intern/cycles/kernel/kernel_shader.h @@ -342,6 +342,26 @@ __device void shader_emissive_sample(KernelGlobals *kg, ShaderData *sd, } } +/* Holdout */ + +__device float3 shader_holdout_eval(KernelGlobals *kg, ShaderData *sd) +{ +#ifdef WITH_OSL + if(kg->osl.use) { + return OSLShader::holdout_eval(sd); + } + else +#endif + { +#ifdef __SVM__ + if(sd->svm_closure == CLOSURE_HOLDOUT_ID) + return make_float3(1.0f, 1.0f, 1.0f); + else + return make_float3(0.0f, 0.0f, 0.0f); +#endif + } +} + /* Surface Evaluation */ __device void shader_eval_surface(KernelGlobals *kg, ShaderData *sd, |