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:
authorStefan Werner <stefan.werner@tangent-animation.com>2018-01-27 12:36:22 +0300
committerStefan Werner <stefan.werner@tangent-animation.com>2018-01-27 23:39:19 +0300
commit3c852ba0741f794a697f95073b04921e9ff94039 (patch)
tree63c97f79b720598759c99ece3493460b4cc7f284 /intern/cycles/kernel/kernel_path_state.h
parent7b29e917118ffdeb39de5c942dd652d40914dbc3 (diff)
Fix T53914: Volumetric scattering now goes correctly through transparent surfaces.
There was a check for volume bounces at every surface intersection. That could lead to a volume scattered path being terminated when passing through a transparent surface. This check was superfluous, as the volume shader evaluation already checks the number of volume bounces and once it passes the max, volume shaders will not return scatter events any more. Reviewers: #cycles, brecht Reviewed By: #cycles, brecht Subscribers: brecht, #cycles Tags: #cycles Maniphest Tasks: T53914 Differential Revision: https://developer.blender.org/D3024
Diffstat (limited to 'intern/cycles/kernel/kernel_path_state.h')
-rw-r--r--intern/cycles/kernel/kernel_path_state.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/intern/cycles/kernel/kernel_path_state.h b/intern/cycles/kernel/kernel_path_state.h
index 2ae866bb051..e5e915791cb 100644
--- a/intern/cycles/kernel/kernel_path_state.h
+++ b/intern/cycles/kernel/kernel_path_state.h
@@ -179,13 +179,13 @@ ccl_device_inline float path_state_continuation_probability(KernelGlobals *kg,
#endif
}
else {
- /* Test max bounces for various ray types. */
+ /* Test max bounces for various ray types.
+ The check for max_volume_bounce doesn't happen here but inside volume_shader_sample().
+ See T53914.
+ */
if((state->bounce >= kernel_data.integrator.max_bounce) ||
(state->diffuse_bounce >= kernel_data.integrator.max_diffuse_bounce) ||
(state->glossy_bounce >= kernel_data.integrator.max_glossy_bounce) ||
-#ifdef __VOLUME__
- (state->volume_bounce >= kernel_data.integrator.max_volume_bounce) ||
-#endif
(state->transmission_bounce >= kernel_data.integrator.max_transmission_bounce))
{
return 0.0f;