I was about to post this to the bug tracker, but it’s such a glaring bug, I though I’d float it here first to see if anyone has input related to it. This is a super-important feature for my visual effects process, as I use Blender to generate mattes as often as I’m generating the renders themselves.
Blend: IndirectHoldoutBug_23Nov2018_version280_ONLY.blend (807.9 KB) (Tested on the 23 November BlendBot build (2.80.32), OS X version 2.80.32.)
What I expected to get:
3 Collections:
3 View Layers:
- “View Layer” – everything enabled (default)
- “L_Suzanne” – MAIN and SUZANNE at default; GROUND set to “Indirect Only” and "Holdout"
- “L_Ground” – MAIN and GROUND at default; SUZANNE set to “Indirect Only”
Here is a look at the settings for the GROUND Collection while in the “L_Suzanne” View:
As you can see, the “Indirect Only” and “Holdout” are enabled (as the only option is to Clear them)
In the Compositor, I used an Alpha Over to place the SUZANNE render over the GROUND render. The Ground does not act as Holdout on Suzanne, resulting in an unexpected result.
Possibly, Brecht included the “only” in “Indirect Only” precisely because this is the current behavior. To correct for this, I’d need to add a third View Layer using GROUND as Holdout but not Indirect, then use the resulting Alpha for compositing. But it seems to me that this can be done in a single pass, with Holdout acting correctly. Bug or feature?