Blender Git Commit Log
Git Commits -> Revision d14e396
Revision d14e396 by Sergey Sharybin (master) March 27, 2017, 08:46 (GMT) |
Cycles: First implementation of shadow catcher It uses an idea of accumulating all possible light reachable across the light path (without taking shadow blocked into account) and accumulating total shaded light across the path. Dividing second figure by first one seems to be giving good estimate of the shadow. In fact, to my knowledge, it's something really similar to what is happening in the denoising branch, so we are aligned here which is good. The workflow is following: - Create an object which matches real-life object on which shadow is to be catched. - Create approximate similar material on that object. This is needed to make indirect light properly affecting CG objects in the scene. - Mark object as Shadow Catcher in the Object properties. Ideally, after doing that it will be possible to render the image and simply alpha-over it on top of real footage. |
Commit Details:
Full Hash: d14e39622ae627c1a4329e630715c5197c762493
Parent Commit: 5aaa643
Lines Changed: +411, -47
18 Modified Paths:
/intern/cycles/blender/addon/properties.py (+6, -0) (Diff)
/intern/cycles/blender/addon/ui.py (+3, -0) (Diff)
/intern/cycles/blender/blender_object.cpp (+7, -0) (Diff)
/intern/cycles/kernel/bvh/bvh.h (+42, -9) (Diff)
/intern/cycles/kernel/bvh/bvh_shadow_all.h (+14, -0) (Diff)
/intern/cycles/kernel/bvh/qbvh_shadow_all.h (+11, -0) (Diff)
/intern/cycles/kernel/kernel_accumulate.h (+116, -8) (Diff)
/intern/cycles/kernel/kernel_emission.h (+6, -1) (Diff)
/intern/cycles/kernel/kernel_path.h (+39, -5) (Diff)
/intern/cycles/kernel/kernel_path_branched.h (+35, -5) (Diff)
/intern/cycles/kernel/kernel_path_state.h (+4, -0) (Diff)
/intern/cycles/kernel/kernel_path_surface.h (+28, -2) (Diff)
/intern/cycles/kernel/kernel_shader.h (+5, -4) (Diff)
/intern/cycles/kernel/kernel_shadow.h (+54, -11) (Diff)
/intern/cycles/kernel/kernel_types.h (+31, -1) (Diff)
/intern/cycles/kernel/split/kernel_indirect_background.h (+1, -1) (Diff)
/intern/cycles/render/object.cpp (+8, -0) (Diff)
/intern/cycles/render/object.h (+1, -0) (Diff)
/intern/cycles/blender/addon/ui.py (+3, -0) (Diff)
/intern/cycles/blender/blender_object.cpp (+7, -0) (Diff)
/intern/cycles/kernel/bvh/bvh.h (+42, -9) (Diff)
/intern/cycles/kernel/bvh/bvh_shadow_all.h (+14, -0) (Diff)
/intern/cycles/kernel/bvh/qbvh_shadow_all.h (+11, -0) (Diff)
/intern/cycles/kernel/kernel_accumulate.h (+116, -8) (Diff)
/intern/cycles/kernel/kernel_emission.h (+6, -1) (Diff)
/intern/cycles/kernel/kernel_path.h (+39, -5) (Diff)
/intern/cycles/kernel/kernel_path_branched.h (+35, -5) (Diff)
/intern/cycles/kernel/kernel_path_state.h (+4, -0) (Diff)
/intern/cycles/kernel/kernel_path_surface.h (+28, -2) (Diff)
/intern/cycles/kernel/kernel_shader.h (+5, -4) (Diff)
/intern/cycles/kernel/kernel_shadow.h (+54, -11) (Diff)
/intern/cycles/kernel/kernel_types.h (+31, -1) (Diff)
/intern/cycles/kernel/split/kernel_indirect_background.h (+1, -1) (Diff)
/intern/cycles/render/object.cpp (+8, -0) (Diff)
/intern/cycles/render/object.h (+1, -0) (Diff)