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