Blender Git Commit Log
Git Commits -> Revision 632a774
Revision 632a774 by Sergey Sharybin (cycles-x) July 21, 2021, 09:31 (GMT) |
Cycles X: Support approximate shadow catcher with background On a user-level this change behaves as if the approximate shadow catcher matte pass is alpha-overed on top of background pass. This makes it easier to combine artificial objects onto a HDRI footage. General idea is to "de-tour" a shadow catcher matte path to the shade background kernel when needed. There is some not-so-nice looking scheduling logic after the intersect closest kernel, which seems to be the best so far from the performance point of view. While the shadow catcher performance case might be improved by avoiding some redundant atomic operations, there is no performance impact for "regular" case (numbers are on RTX 5000): ``` new cycles-x bmw27.blend 12.2091 12.2334 classroom.blend 24.2948 24.2565 pabellon.blend 11.1832 11.1941 monster.blend 13.2831 13.1683 barbershop_interior.blend 18.8203 18.904 junkshop.blend 26.5066 26.4452 pvt_flat.blend 22.6359 22.5914 ``` There seems to be 2% deviation, sometimes new code is 2% slower, sometimes it is old code which is 2% slower. Differential Revision: https://developer.blender.org/D11971 |
Commit Details:
Full Hash: 632a7747cf5aba1ddb7a352a4564eff53ccdc5a6
Parent Commit: 49f5a0e
Lines Changed: +160, -58
15 Modified Paths:
/intern/cycles/device/optix/device_impl.cpp (+1, -0) (Diff)
/intern/cycles/integrator/denoiser_oidn.cpp (+1, -0) (Diff)
/intern/cycles/integrator/pass_accessor.cpp (+11, -1) (Diff)
/intern/cycles/integrator/pass_accessor.h (+8, -1) (Diff)
/intern/cycles/integrator/path_trace_work.cpp (+3, -0) (Diff)
/intern/cycles/kernel/bvh/bvh_util.h (+10, -4) (Diff)
/intern/cycles/kernel/integrator/integrator_intersect_closest.h (+43, -4) (Diff)
/intern/cycles/kernel/integrator/integrator_shade_background.h (+23, -2) (Diff)
/intern/cycles/kernel/integrator/integrator_state_util.h (+14, -36) (Diff)
/intern/cycles/kernel/kernel_accumulate.h (+4, -0) (Diff)
/intern/cycles/kernel/kernel_film.h (+15, -4) (Diff)
/intern/cycles/kernel/kernel_shadow_catcher.h (+9, -3) (Diff)
/intern/cycles/kernel/kernel_types.h (+7, -1) (Diff)
/intern/cycles/render/scene.cpp (+7, -0) (Diff)
/intern/cycles/render/session.cpp (+4, -2) (Diff)
/intern/cycles/integrator/denoiser_oidn.cpp (+1, -0) (Diff)
/intern/cycles/integrator/pass_accessor.cpp (+11, -1) (Diff)
/intern/cycles/integrator/pass_accessor.h (+8, -1) (Diff)
/intern/cycles/integrator/path_trace_work.cpp (+3, -0) (Diff)
/intern/cycles/kernel/bvh/bvh_util.h (+10, -4) (Diff)
/intern/cycles/kernel/integrator/integrator_intersect_closest.h (+43, -4) (Diff)
/intern/cycles/kernel/integrator/integrator_shade_background.h (+23, -2) (Diff)
/intern/cycles/kernel/integrator/integrator_state_util.h (+14, -36) (Diff)
/intern/cycles/kernel/kernel_accumulate.h (+4, -0) (Diff)
/intern/cycles/kernel/kernel_film.h (+15, -4) (Diff)
/intern/cycles/kernel/kernel_shadow_catcher.h (+9, -3) (Diff)
/intern/cycles/kernel/kernel_types.h (+7, -1) (Diff)
/intern/cycles/render/scene.cpp (+7, -0) (Diff)
/intern/cycles/render/session.cpp (+4, -2) (Diff)