Blender Git Commit Log
Git Commits -> Revision d1a9425
Revision d1a9425 by Brecht Van Lommel (master) November 5, 2021, 19:50 (GMT) |
Fix T91733, T92486: Cycles wrong shadow catcher with volumes Changes: * After hitting a shadow catcher, re-initialize the volume stack taking into account shadow catcher ray visibility. This ensures that volume objects are included in the stack only if they are shadow catchers. * If there is a volume to be shaded in front of the shadow catcher, the split is now performed in the shade_volume kernel after volume shading is done. * Previously the background pass behind a shadow catcher was done as part of the regular path, now it is done as part of the shadow catcher path. For a shadow catcher path with volumes and visible background, operations are done in this order now: * intersect_closest * shade_volume * shadow catcher split * intersect_volume_stack * shade_background * shade_surface The world volume is currently assumed to be CG, that is it does not exist in the footage. We may consider adding an option to control this, or change the default. With a volume object this control is already possible. This includes refactoring to centralize the logic for next kernel scheduling in intersect_closest.h. Differential Revision: https://developer.blender.org/D13093 |
Commit Details:
Full Hash: d1a9425a2fde32b6786b333ab55661da507e818b
Parent Commit: 4b56eed
Lines Changed: +232, -165
7 Modified Paths:
/intern/cycles/kernel/integrator/intersect_closest.h (+185, -85) (Diff)
/intern/cycles/kernel/integrator/intersect_volume_stack.h (+32, -10) (Diff)
/intern/cycles/kernel/integrator/shade_background.h (+4, -16) (Diff)
/intern/cycles/kernel/integrator/shade_volume.h (+3, -19) (Diff)
/intern/cycles/kernel/integrator/shadow_catcher.h (+0, -27) (Diff)
/intern/cycles/kernel/integrator/state.h (+4, -4) (Diff)
/intern/cycles/kernel/integrator/state_util.h (+4, -4) (Diff)
/intern/cycles/kernel/integrator/intersect_volume_stack.h (+32, -10) (Diff)
/intern/cycles/kernel/integrator/shade_background.h (+4, -16) (Diff)
/intern/cycles/kernel/integrator/shade_volume.h (+3, -19) (Diff)
/intern/cycles/kernel/integrator/shadow_catcher.h (+0, -27) (Diff)
/intern/cycles/kernel/integrator/state.h (+4, -4) (Diff)
/intern/cycles/kernel/integrator/state_util.h (+4, -4) (Diff)