2
$\begingroup$

I am new to Blender and I cannot wrap my head around this:

The issue: I have a planet (icosphere) with a noise texture and a small noise bump map. Above it is a slightly larger icosphere with a mix shader consisting of a transparent shader and a Principled BSDF, the factor being defined by another noise texture (to create clouds). Rendered in Cycles with the clouds invisible, I get a nice and crisp division between light and shadow. This line is also exactly where it is supposed to be when I render only the cloud material. However, when I render both in Cycles together, there is a small perimeter within the shadow region where specks of the planet are lit and visible instead of being in the shadow as one would expect. I have created an image for this, the individual renders are also linked below.

Planet rendered with clouds and planet texture

The effect is much more apparent in the picture with the full planet rendered with both clouds and planet: Image of planet

For comparison:

What I have found out:

  • The effect is not visible in Eevee.
  • The effect is visible in both viewport render and final render. It is not changed when looking at the object from different angles.
  • The width of the perimeter in which the effect occurs is related to the distance between the two icospheres. Scaling the cloud icosphere to exactly the size of the planet icosphere makes it vanish. The greater the scaling difference however, the wider the perimeter in which the effect occurs is.
  • The spots of unwanted light coincide with the position of dense clouds, i.e. with those spots where the factor of the mix shader is rather high and therefore the resulting shader is dominated by the Principled BSDF.
  • On a related note, making the noise texture more black, i.e. reducing the factor of the mix shader, does remedy the effect, but of course it also makes the clouds less visible.
  • The effect does not seem to be simple reflection off the bottom of the clouds onto the planet. Changing the roughness, specular or sheen changes nothing.
  • Changing the color of the clouds (i.e. the base color of the Principled BSDF) changes the color of the spots (see image below). The planet texture beneath only shines through when the base color of the clouds is white. So I suspect is has something to do with the mix shader doing something unexpected.
  • I have tampered with the light path settings to no avail, the effect remains.

Below are pictures of my node setup for both materials as well as an image showing the effect of changing the base color of the Principled BSDF.

Planet node setup: Planet node setup

Cloud node setup: Cloud node setup

Changed base color of cloud Principled BSDF: Changed base color

Any pointer as to what is causing this and what I can do to fix it would be appreciated!

$\endgroup$
2
  • $\begingroup$ Can you edit your question to include some images of the node graph(s)? $\endgroup$ Commented Aug 10, 2021 at 18:44
  • 1
    $\begingroup$ @AllenSimpson Yes, just edited it! I hope this helps. $\endgroup$ Commented Aug 11, 2021 at 22:29

1 Answer 1

1
$\begingroup$

Here's a similar setup with only a Transparent BSDF and you can see the effect isn't present.

enter image description here

I suspect this is some type of indirect lighting that happens when a ray gets trapped between the layers, like this.

enter image description here

If I add noise to the outer shell it supports this conclusion.

enter image description here

In some sense it may not be an unrealistic effect if you could get the clouds positioned just so.

In any case, one solution could be to just eliminate rays that hit the back faces of the outer shell. Geometry -> Backfacing gives us the proper mask, and we can just use another Mix Shader and Transparent BSDF to send those rays off into space.

enter image description here

This has the unfortunate side effect of eliminating shadows generated by the clouds on the lit side. We can solve for this by using Math -> Subtract to take away the Light Path -> Is Shadow Ray mask.

enter image description here

$\endgroup$
2
  • $\begingroup$ Thank you! Not only does this work, I have also learned something new about Blender this way. Only thing I don't understand is why subtracting the Shadow rays does not re-introduce the problem. Is this because the ray is still a reflection ray when it comes from one of the regions where the light spots are undesired instead of a shadow ray? $\endgroup$ Commented Aug 12, 2021 at 18:01
  • $\begingroup$ I think the keys to understanding are that the technical definition of a shadow ray differs slightly from one's intuition, and that rays are traced from the camera back to the light. see blender.stackexchange.com/questions/23500/what-is-a-shadow-ray $\endgroup$ Commented Aug 13, 2021 at 0:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .