Blender Git Loki
Git Commits -> Revision c775290
Revision c775290 by Sergey Sharybin (cycles-x) May 7, 2021, 14:43 (GMT) |
Cycles X: Initial implementation of shadow catcher It is re-implemented in a way which does differential rendering: the path is split at a first non-transparent bounce when shadow catcher object is hit. One path will track state of the shadow catcher object without other objects affecting it. The other path is rendering scene as usual. Upon user access of the shadow catcher pass the result is calculated as combined pass divided by the pass with shadow catcher object. This gives a pass which is to be multiplied with a backdrop to transport light and shadows caught. For the artificial objects which are to be added to the backdrop there is an internal matte pass. This pass is presented as combined to artists, so they alpha-over it onto the footage as usual. In the future we might implement shadow approximation to gain old-style shadow catcher behavior (maybe for compatibility reasons, maybe for some artistic reasons). This process is a bit more involved that the old single pass approach, but it allows to deal with indirect light, caustics. Example file: {F10059890} Example result: {F10055172} The footage is the Old_Factory MVI_4005.mov from https://cloud.blender.org/training/track-match-blend/56040f9b044a2a00ad6c660d Differential Revision: https://developer.blender.org/D11172 |
Commit Details:
Full Hash: c77529091f8d658f7bf5590d136a2c19c3c02559
Parent Commit: be785ef
Lines Changed: +668, -83
1 Added Path:
/intern/cycles/kernel/kernel_shadow_catcher.h (+111, -0) (View)
27 Modified Paths:
/intern/cycles/blender/addon/engine.py (+1, -0) (Diff)
/intern/cycles/blender/addon/properties.py (+7, -0) (Diff)
/intern/cycles/blender/addon/ui.py (+1, -0) (Diff)
/intern/cycles/blender/blender_sync.cpp (+7, -0) (Diff)
/intern/cycles/integrator/path_trace_work_cpu.cpp (+11, -2) (Diff)
/intern/cycles/integrator/path_trace_work_gpu.cpp (+60, -13) (Diff)
/intern/cycles/integrator/path_trace_work_gpu.h (+10, -1) (Diff)
/intern/cycles/kernel/bvh/bvh_util.h (+19, -1) (Diff)
/intern/cycles/kernel/CMakeLists.txt (+1, -0) (Diff)
/intern/cycles/kernel/device/cuda/kernel.cu (+10, -0) (Diff)
/intern/cycles/kernel/integrator/integrator_init_from_camera.h (+5, -0) (Diff)
/intern/cycles/kernel/integrator/integrator_intersect_closest.h (+4, -0) (Diff)
/intern/cycles/kernel/integrator/integrator_shade_surface.h (+4, -25) (Diff)
/intern/cycles/kernel/integrator/integrator_state.h (+35, -1) (Diff)
/intern/cycles/kernel/integrator/integrator_state_flow.h (+30, -0) (Diff)
/intern/cycles/kernel/integrator/integrator_state_util.h (+41, -0) (Diff)
/intern/cycles/kernel/kernel_accumulate.h (+113, -17) (Diff)
/intern/cycles/kernel/kernel_emission.h (+1, -8) (Diff)
/intern/cycles/kernel/kernel_passes.h (+25, -0) (Diff)
/intern/cycles/kernel/kernel_path_state.h (+10, -2) (Diff)
/intern/cycles/kernel/kernel_types.h (+18, -1) (Diff)
/intern/cycles/render/film.cpp (+29, -1) (Diff)
/intern/cycles/render/integrator.cpp (+2, -0) (Diff)
/intern/cycles/render/pass_accessor.cpp (+87, -10) (Diff)
/intern/cycles/render/pass_accessor.h (+4, -0) (Diff)
/intern/cycles/render/scene.cpp (+20, -1) (Diff)
/intern/cycles/render/scene.h (+2, -0) (Diff)
/intern/cycles/blender/addon/properties.py (+7, -0) (Diff)
/intern/cycles/blender/addon/ui.py (+1, -0) (Diff)
/intern/cycles/blender/blender_sync.cpp (+7, -0) (Diff)
/intern/cycles/integrator/path_trace_work_cpu.cpp (+11, -2) (Diff)
/intern/cycles/integrator/path_trace_work_gpu.cpp (+60, -13) (Diff)
/intern/cycles/integrator/path_trace_work_gpu.h (+10, -1) (Diff)
/intern/cycles/kernel/bvh/bvh_util.h (+19, -1) (Diff)
/intern/cycles/kernel/CMakeLists.txt (+1, -0) (Diff)
/intern/cycles/kernel/device/cuda/kernel.cu (+10, -0) (Diff)
/intern/cycles/kernel/integrator/integrator_init_from_camera.h (+5, -0) (Diff)
/intern/cycles/kernel/integrator/integrator_intersect_closest.h (+4, -0) (Diff)
/intern/cycles/kernel/integrator/integrator_shade_surface.h (+4, -25) (Diff)
/intern/cycles/kernel/integrator/integrator_state.h (+35, -1) (Diff)
/intern/cycles/kernel/integrator/integrator_state_flow.h (+30, -0) (Diff)
/intern/cycles/kernel/integrator/integrator_state_util.h (+41, -0) (Diff)
/intern/cycles/kernel/kernel_accumulate.h (+113, -17) (Diff)
/intern/cycles/kernel/kernel_emission.h (+1, -8) (Diff)
/intern/cycles/kernel/kernel_passes.h (+25, -0) (Diff)
/intern/cycles/kernel/kernel_path_state.h (+10, -2) (Diff)
/intern/cycles/kernel/kernel_types.h (+18, -1) (Diff)
/intern/cycles/render/film.cpp (+29, -1) (Diff)
/intern/cycles/render/integrator.cpp (+2, -0) (Diff)
/intern/cycles/render/pass_accessor.cpp (+87, -10) (Diff)
/intern/cycles/render/pass_accessor.h (+4, -0) (Diff)
/intern/cycles/render/scene.cpp (+20, -1) (Diff)
/intern/cycles/render/scene.h (+2, -0) (Diff)