Blender Git Commit Log

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)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021