7
$\begingroup$

I am looking to create a stylized material that receives shadows from other materials, but has no self-shadow / shading. I created this image to communicate what I mean by self-shadow, the image on the right is a photoshopped concept to show it without self-shadow.

enter image description here

I managed to get rid of self-shadow by just connecting the RGB color directly into the surface, but I lost the shadows cast from the other object. Ran into the same problem using emission shader.

Since I was struggling, I tried looking up solutions. One of the first options said to mix a translucent and diffuse shader using the light path node's "Is Shadow Ray" output as the factor. I found out this only got rid of the cast shadow, which I already achieved by setting Shadow Node to "None" in Eevee (Or setting Shadow Ray Visibility off in Cycles).

The second solution I found was REALLY close to my desired effect; It said in Eevee to take a regular Principled BSDF shader, create a geometry node, and plug the output of incoming into the normal of the shader. This creates the intended effect ONLY when the camera is positioned similarly to the light, otherwise the entire material would go into self-shadow. I tried fixing that by making a simple alteration and plugging in a value of 1.0 to the normal instead of the geometry node. This was so close to perfect but I noticed something strange, the cast shadow from the other objects passed right through like the shader was transparent. This is what it looks like now, notice how the shadow from the cube appears on top of and underneath the sphere. (I only want it to appear on top, as if the sphere was opaque)

enter image description here

I'm almost to my desired result I just need help preventing the cast shadow from other objects oddly phasing through my special material. Though I feel like I'm a bit out of my depth as I have no idea what to do next. My render idea depends on this effect, so I could use Cycles or Eevee for it, I'm currently using Eevee but if your solution works in Cycles I will switch to Cycles.

Edit: Forgot one important detail. A lot of the models I'm using this material on will actually have flat planes with textures that have transparent alpha. So it has to work with that too.

$\endgroup$

1 Answer 1

1
$\begingroup$

In cycles, under the Visibility section of the Object Properties tab, you can enable "Shadow Catcher".

Shadow catcher object

Depending on what you're trying to accomplish, you may be able to use view layers to composite this over an emissive material to get the effect:

View layer shadow catcher pass composite

$\endgroup$

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.