Cycles: Fix wrong SSS with regular path tracing and clamping enabled
Radiance sum and reset was happening in different order after 26f1c51
.
This is a quick fix to unlock Caminandes team, perhaps we can avoid having
separate variable to detect when radiance is to be sum.
This commit is contained in:
parent
c8a041f489
commit
bf9e88bfbe
Notes:
blender-bot
2023-02-14 06:17:17 +01:00
Referenced by commit 175f00c89a
, Revert "Cycles: Fix wrong SSS with regular path tracing and clamping enabled"
|
@ -77,7 +77,6 @@ ccl_device void compute_light_pass(KernelGlobals *kg, ShaderData *sd, PathRadian
|
|||
while(ss_indirect.num_rays) {
|
||||
kernel_path_subsurface_setup_indirect(kg,
|
||||
&ss_indirect,
|
||||
&L_sample,
|
||||
&state,
|
||||
&ray,
|
||||
&ray,
|
||||
|
@ -89,6 +88,12 @@ ccl_device void compute_light_pass(KernelGlobals *kg, ShaderData *sd, PathRadian
|
|||
state.num_samples,
|
||||
&state,
|
||||
&L_sample);
|
||||
|
||||
/* For render passes, sum and reset indirect light pass variables
|
||||
* for the next samples.
|
||||
*/
|
||||
path_radiance_sum_indirect(&L_sample);
|
||||
path_radiance_reset_indirect(&L_sample);
|
||||
}
|
||||
is_sss_sample = true;
|
||||
}
|
||||
|
|
|
@ -519,7 +519,6 @@ ccl_device bool kernel_path_subsurface_scatter(
|
|||
ccl_device void kernel_path_subsurface_setup_indirect(
|
||||
KernelGlobals *kg,
|
||||
SubsurfaceIndirectRays *ss_indirect,
|
||||
PathRadiance *L,
|
||||
PathState *state,
|
||||
Ray *orig_ray,
|
||||
Ray *ray,
|
||||
|
@ -548,12 +547,6 @@ ccl_device void kernel_path_subsurface_setup_indirect(
|
|||
#endif
|
||||
|
||||
*ray = *indirect_ray;
|
||||
|
||||
/* For render passes, sum and reset indirect light pass variables
|
||||
* for the next samples.
|
||||
*/
|
||||
path_radiance_sum_indirect(L);
|
||||
path_radiance_reset_indirect(L);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -584,7 +577,7 @@ ccl_device float4 kernel_path_integrate(KernelGlobals *kg, RNG *rng, int sample,
|
|||
*/
|
||||
Ray ss_orig_ray;
|
||||
|
||||
for(;;) {
|
||||
for(int ss_indirect_iter = 0; ; ss_indirect_iter++) {
|
||||
#endif
|
||||
|
||||
/* path iteration */
|
||||
|
@ -848,13 +841,20 @@ ccl_device float4 kernel_path_integrate(KernelGlobals *kg, RNG *rng, int sample,
|
|||
}
|
||||
|
||||
#ifdef __SUBSURFACE__
|
||||
if(ss_indirect_iter != 0) {
|
||||
/* For render passes, sum and reset indirect light pass variables
|
||||
* for the next samples.
|
||||
*/
|
||||
path_radiance_sum_indirect(&L);
|
||||
path_radiance_reset_indirect(&L);
|
||||
}
|
||||
|
||||
/* Trace indirect subsurface rays by restarting the loop. this uses less
|
||||
* stack memory than invoking kernel_path_indirect.
|
||||
*/
|
||||
if(ss_indirect.num_rays) {
|
||||
kernel_path_subsurface_setup_indirect(kg,
|
||||
&ss_indirect,
|
||||
&L,
|
||||
&state,
|
||||
&ss_orig_ray,
|
||||
&ray,
|
||||
|
|
Loading…
Reference in New Issue