Fix Cycles compiler warning on GCC 11
For shadow rays there are no closures, leave out the closure merging code there to avoid warnings about accessing closure memory that does not exist.
This commit is contained in:
parent
d0493796a6
commit
6279efbb78
|
@ -74,7 +74,7 @@ ccl_device_inline bool shadow_volume_shader_sample(INTEGRATOR_STATE_ARGS,
|
|||
ShaderData *ccl_restrict sd,
|
||||
float3 *ccl_restrict extinction)
|
||||
{
|
||||
shader_eval_volume(INTEGRATOR_STATE_PASS, sd, PATH_RAY_SHADOW, [=](const int i) {
|
||||
shader_eval_volume<true>(INTEGRATOR_STATE_PASS, sd, PATH_RAY_SHADOW, [=](const int i) {
|
||||
return integrator_state_read_shadow_volume_stack(INTEGRATOR_STATE_PASS, i);
|
||||
});
|
||||
|
||||
|
@ -93,7 +93,7 @@ ccl_device_inline bool volume_shader_sample(INTEGRATOR_STATE_ARGS,
|
|||
VolumeShaderCoefficients *coeff)
|
||||
{
|
||||
const int path_flag = INTEGRATOR_STATE(path, flag);
|
||||
shader_eval_volume(INTEGRATOR_STATE_PASS, sd, path_flag, [=](const int i) {
|
||||
shader_eval_volume<false>(INTEGRATOR_STATE_PASS, sd, path_flag, [=](const int i) {
|
||||
return integrator_state_read_volume_stack(INTEGRATOR_STATE_PASS, i);
|
||||
});
|
||||
|
||||
|
|
|
@ -750,7 +750,7 @@ ccl_device int shader_phase_sample_closure(const KernelGlobals *kg,
|
|||
|
||||
/* Volume Evaluation */
|
||||
|
||||
template<typename StackReadOp>
|
||||
template<const bool shadow, typename StackReadOp>
|
||||
ccl_device_inline void shader_eval_volume(INTEGRATOR_STATE_CONST_ARGS,
|
||||
ShaderData *ccl_restrict sd,
|
||||
const int path_flag,
|
||||
|
@ -815,8 +815,11 @@ ccl_device_inline void shader_eval_volume(INTEGRATOR_STATE_CONST_ARGS,
|
|||
# endif
|
||||
|
||||
/* Merge closures to avoid exceeding number of closures limit. */
|
||||
if (i > 0)
|
||||
shader_merge_volume_closures(sd);
|
||||
if (!shadow) {
|
||||
if (i > 0) {
|
||||
shader_merge_volume_closures(sd);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue