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:
authorDalai Felinto <dfelinto@gmail.com>2014-05-26 23:55:16 +0400
committerDalai Felinto <dfelinto@gmail.com>2014-05-26 23:55:40 +0400
commit0efc0d5200416f98a9dc4fb4685382b3cf8f68cc (patch)
treee2cbef933ead9c9e7cef73058bc14b1a58935bb3 /intern/cycles/kernel/kernel_bake.h
parent3a41797df49160e5bdf43cf498af8cc6b81a302b (diff)
fix T40322: Glitch in baking a mixed SSS shader
Diffstat (limited to 'intern/cycles/kernel/kernel_bake.h')
-rw-r--r--intern/cycles/kernel/kernel_bake.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/intern/cycles/kernel/kernel_bake.h b/intern/cycles/kernel/kernel_bake.h
index b64c5cecbff..6e735517763 100644
--- a/intern/cycles/kernel/kernel_bake.h
+++ b/intern/cycles/kernel/kernel_bake.h
@@ -17,7 +17,7 @@
CCL_NAMESPACE_BEGIN
ccl_device void compute_light_pass(KernelGlobals *kg, ShaderData *sd, PathRadiance *L, RNG rng,
- bool is_combined, bool is_ao, bool is_sss)
+ const bool is_combined, const bool is_ao, const bool is_sss)
{
int samples = kernel_data.integrator.aa_samples;
@@ -31,6 +31,7 @@ ccl_device void compute_light_pass(KernelGlobals *kg, ShaderData *sd, PathRadian
PathState state;
Ray ray;
float3 throughput = make_float3(1.0f, 1.0f, 1.0f);
+ bool is_sss_sample = is_sss;
/* init radiance */
path_radiance_init(&L_sample, kernel_data.film.use_light_pass);
@@ -57,15 +58,15 @@ ccl_device void compute_light_pass(KernelGlobals *kg, ShaderData *sd, PathRadian
#ifdef __SUBSURFACE__
/* sample subsurface scattering */
- if((is_combined || is_sss) && (sd->flag & SD_BSSRDF)) {
+ if((is_combined || is_sss_sample) && (sd->flag & SD_BSSRDF)) {
/* when mixing BSSRDF and BSDF closures we should skip BSDF lighting if scattering was successful */
if (kernel_path_subsurface_scatter(kg, sd, &L_sample, &state, &rng, &ray, &throughput))
- is_sss = true;
+ is_sss_sample = true;
}
#endif
/* sample light and BSDF */
- if((!is_sss) && (!is_ao)) {
+ if((!is_sss_sample) && (!is_ao)) {
if(sd->flag & SD_EMISSION) {
float3 emission = indirect_primitive_emission(kg, sd, 0.0f, state.flag, state.ray_pdf);
@@ -96,14 +97,14 @@ ccl_device void compute_light_pass(KernelGlobals *kg, ShaderData *sd, PathRadian
#ifdef __SUBSURFACE__
/* sample subsurface scattering */
- if((is_combined || is_sss) && (sd->flag & SD_BSSRDF)) {
+ if((is_combined || is_sss_sample) && (sd->flag & SD_BSSRDF)) {
/* when mixing BSSRDF and BSDF closures we should skip BSDF lighting if scattering was successful */
kernel_branched_path_subsurface_scatter(kg, sd, &L_sample, &state, &rng, throughput);
}
#endif
/* sample light and BSDF */
- if((!is_sss) && (!is_ao)) {
+ if((!is_sss_sample) && (!is_ao)) {
if(sd->flag & SD_EMISSION) {
float3 emission = indirect_primitive_emission(kg, sd, 0.0f, state.flag, state.ray_pdf);