0
$\begingroup$

In cycles we put enable shadow catcher for a geometry. Is there a possibility to enable the shadow catcher for the entire layer which has 50 components.

$\endgroup$
6
1
$\begingroup$

There's a weird setup which can make it work. We stumbled across that by accident here in the studio and initially wanted to report it as a bug, but it came in useful at times.

How the weirdo thing has to be set up

The thing is that when you put a plane between the camera, assign a transparent shader to it, and enable the Shadow Catcher option at the same time, any ray that passes through that plane seems to be altered somehow, resulting in the stuff behind the plane to be treated as a shadow catcher object. In this screenshot, I have put a small rectangle in front of the camera. Where it covers the scene behind it, objects become shadow catchers, in all other areas they remain unchanged:

Shadow Catcher glitch

The shader on the plane is really simple:

Shader

You can mix it with a diffuse shader if you want. The Mix Factor will then act as a strength slider. This way you can control the strength of the shadows!

Now, put that plane on the render layer where you need the override. Scale it so it covers the entire camera view area. If you have animated the camera, also parent the plane to the camera:

enter image description here

You can set the Max Display mode of the plane to Wire, so you can see through while working in the viewport.

This is how that layer looks rendered:

result

And here is that very .blend file to play with:

$\endgroup$
2
  • $\begingroup$ Nice and peculiar solution. I'd love to understand why that is the case. $\endgroup$ – user1853 Apr 11 '18 at 4:03
  • 1
    $\begingroup$ @cegaton Can only make assumptions, but I would guess that in the code of cycles, the check for the is_shadow_catcher property is done on the camera ray. The transparent shader then allows to let that camera ray continue to travel across the scene, as if it has not hit yet an object. The next object which is hit then receives that first camera ray still, and the check for shadow catching has already happened for that ray and is not repeated. $\endgroup$ – aliasguru Apr 11 '18 at 4:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.