Cycles-Bake: fix T40322 Glitch in baking a mixed SSS shader
If we are using a mix node we still need to evaluate the BSDF lighting even if scattering is successful. Note: this was working for branched path (probably an oversight when branched path support was introduced for baking, a good oversight though ;)
This commit is contained in:
@@ -58,9 +58,7 @@ ccl_device void compute_light_pass(KernelGlobals *kg, ShaderData *sd, PathRadian
|
|||||||
#ifdef __SUBSURFACE__
|
#ifdef __SUBSURFACE__
|
||||||
/* sample subsurface scattering */
|
/* sample subsurface scattering */
|
||||||
if((is_combined || is_sss) && (sd->flag & SD_BSSRDF)) {
|
if((is_combined || is_sss) && (sd->flag & SD_BSSRDF)) {
|
||||||
/* when mixing BSSRDF and BSDF closures we should skip BSDF lighting if scattering was successful */
|
kernel_path_subsurface_scatter(kg, sd, &L_sample, &state, &rng, &ray, &throughput);
|
||||||
if (kernel_path_subsurface_scatter(kg, sd, &L_sample, &state, &rng, &ray, &throughput))
|
|
||||||
is_sss = true;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -97,7 +95,6 @@ ccl_device void compute_light_pass(KernelGlobals *kg, ShaderData *sd, PathRadian
|
|||||||
#ifdef __SUBSURFACE__
|
#ifdef __SUBSURFACE__
|
||||||
/* sample subsurface scattering */
|
/* sample subsurface scattering */
|
||||||
if((is_combined || is_sss) && (sd->flag & SD_BSSRDF)) {
|
if((is_combined || is_sss) && (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);
|
kernel_branched_path_subsurface_scatter(kg, sd, &L_sample, &state, &rng, throughput);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user