diff options
author | Brecht Van Lommel <brecht@blender.org> | 2021-09-23 18:28:20 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-09-23 18:48:16 +0300 |
commit | 6279efbb78a3c701547b8e25cf90efd712c377d0 (patch) | |
tree | 004250fe50b761dbe74b42c81b5c8f9fff33f259 | |
parent | d0493796a6f40db8dcdd4a9058b98a69282d4759 (diff) |
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.
-rw-r--r-- | intern/cycles/kernel/integrator/integrator_shade_volume.h | 4 | ||||
-rw-r--r-- | intern/cycles/kernel/kernel_shader.h | 9 |
2 files changed, 8 insertions, 5 deletions
diff --git a/intern/cycles/kernel/integrator/integrator_shade_volume.h b/intern/cycles/kernel/integrator/integrator_shade_volume.h index 095a28ac505..dac3efb3996 100644 --- a/intern/cycles/kernel/integrator/integrator_shade_volume.h +++ b/intern/cycles/kernel/integrator/integrator_shade_volume.h @@ -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); }); diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h index 3052bb53040..8bad9c34d74 100644 --- a/intern/cycles/kernel/kernel_shader.h +++ b/intern/cycles/kernel/kernel_shader.h @@ -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); + } + } } } |