Blender Git Commit Log
Git Commits -> Revision feb4822
Revision feb4822 by Lukas Stockner (blender-v2.78b-release, blender-v2.78c-release, fracture_modifier, fracture_modifier-master, temp-fracture-modifier-2.8) January 20, 2017, 10:25 (GMT) |
Cycles: Add optional probabilistic termination of light samples based on their expected contribution In scenes with many lights, some of them might have a very small contribution to some pixels, but the shadow rays are traced anyways. To avoid that, this patch adds probabilistic termination to light samples - if the contribution before checking for shadowing is below a user-defined threshold, the sample will be discarded with probability (1 - (contribution / threshold)) and otherwise kept, but weighted more to remain unbiased. This is the same approach that's also used in path termination based on length. Note that the rendering remains unbiased with this option, it just adds a bit of noise - but if the setting is used moderately, the speedup gained easily outweighs the additional noise. Reviewers: #cycles Subscribers: sergey, brecht Differential Revision: https://developer.blender.org/D2217 |
Commit Details:
Full Hash: feb48223466a0accb9a1220c820f9f4cdd76c130
Parent Commit: 199d7dc
Committed By: Sergey Sharybin
Lines Changed: +109, -20
15 Modified Paths:
/intern/cycles/blender/addon/properties.py (+7, -0) (Diff)
/intern/cycles/blender/addon/ui.py (+1, -0) (Diff)
/intern/cycles/blender/blender_sync.cpp (+1, -0) (Diff)
/intern/cycles/kernel/kernel_accumulate.h (+33, -5) (Diff)
/intern/cycles/kernel/kernel_emission.h (+13, -2) (Diff)
/intern/cycles/kernel/kernel_path.h (+0, -1) (Diff)
/intern/cycles/kernel/kernel_path_surface.h (+8, -4) (Diff)
/intern/cycles/kernel/kernel_path_volume.h (+8, -4) (Diff)
/intern/cycles/kernel/kernel_random.h (+17, -0) (Diff)
/intern/cycles/kernel/kernel_shader.h (+1, -1) (Diff)
/intern/cycles/kernel/kernel_types.h (+3, -2) (Diff)
/intern/cycles/kernel/split/kernel_direct_lighting.h (+2, -1) (Diff)
/intern/cycles/render/integrator.cpp (+8, -0) (Diff)
/intern/cycles/render/integrator.h (+2, -0) (Diff)
/intern/cycles/util/util_math.h (+5, -0) (Diff)
/intern/cycles/blender/addon/ui.py (+1, -0) (Diff)
/intern/cycles/blender/blender_sync.cpp (+1, -0) (Diff)
/intern/cycles/kernel/kernel_accumulate.h (+33, -5) (Diff)
/intern/cycles/kernel/kernel_emission.h (+13, -2) (Diff)
/intern/cycles/kernel/kernel_path.h (+0, -1) (Diff)
/intern/cycles/kernel/kernel_path_surface.h (+8, -4) (Diff)
/intern/cycles/kernel/kernel_path_volume.h (+8, -4) (Diff)
/intern/cycles/kernel/kernel_random.h (+17, -0) (Diff)
/intern/cycles/kernel/kernel_shader.h (+1, -1) (Diff)
/intern/cycles/kernel/kernel_types.h (+3, -2) (Diff)
/intern/cycles/kernel/split/kernel_direct_lighting.h (+2, -1) (Diff)
/intern/cycles/render/integrator.cpp (+8, -0) (Diff)
/intern/cycles/render/integrator.h (+2, -0) (Diff)
/intern/cycles/util/util_math.h (+5, -0) (Diff)