Help me understand Cycles diffuse lighting passes

I’ve been scratching my head about what the diffuse lighting passes in Cycles are supposed to render.

image

I created a scene with a velvet BSDF red cube and a glossy BSDF yellow monkey, so I could experiment with a predominantly diffuse object and a predominantly glossy object:

When I choose the direct/indirect/color glossy render passes, I get pretty much what I expect – a pass that shows where the direct light is hitting the glossy areas…

…a pass that shows where indirect light is hitting the glossy areas…

…and a pass that contains only colors:

However, I get only completely black images for the diffuse passes.

The manual says that the diffuse direct/indirect/color passes is for lighting from diffuse BSDFs. Does that mean that it’s not from lighting from regular Blender lights? (I’m using only a single point light in my scene.)

So, just for giggles, I added a plane with a pink-ish emission shader, to see if it might get picked up via the diffuse lighting passes:

And to my surprise, yes, the plane itself is kind of picked up, like in the diffuse direct pass…

…but none of the light it gives off appears to have been picked up.

The diffuse indirect pass appears to be completely black, and the diffuse color pass appears to be nearly the same as the diffuse direct pass, except it’s not showing any color (I assumed I would at least see color there).

Here is my blend file: Specularity test 03.blend (749.4 KB)

Basically, I have a two part question:

  1. Could someone please explain what the diffuse lighting passes are supposed to show?
  2. If I wanted to manipulate the level of diffuse and specular material in an animated sequence in post, what is the recommended way to go about that? I assume I would want to render out all of the passes here and then combine them in the compositor as they are described in the documentation…and then manipulate them somehow, before they get to the “combined” node. I just assumed that the diffuse parts of the image would be found in the diffuse render layers. :woozy_face:

Hi @simplecarnival,

The reason you are seeing only black passes in the Diffuse channels is because you are specifically using the non-diffuse BSDF shaders. Switching the Monkeyhead to the Principled Shader and turning up it’s metallic setting gives this result:

NOTE - you cannot turn the metallic setting up to 1.0 ( that’s why it’s at 0.99 in this image) or it will again not show anything. There must be some Diffuse available , in this case 0.01 … the 0.01 part the metallic doesn’t ‘get’

If a material does not contain any Diffuse information then it will render black in that pass. The BSDF Velvet and Glossy shaders obviously don’t have a diffuse component - result is black.

The ‘pink’ floating square is the PrincipledShader with no metallic - so it has a diffuse value, and therefore shows up.

If you want to use the BSDF shaders, then add a tiny diffuse amount with a mix shader . . .

Hope that helps,
Cheers,
Dj.

Thanks for the detailed explanation, @DamianJ. I had assumed that anything glossy or metallic would show up under the “Glossy” light layers. (Glossy shows up, but not metallic.) I had also assumed that anything flat that doesn’t reflect much light – like the Velvet BSDF shader – would show up under the “Diffuse” light layers. Obviously, these assumptions were wrong.

So if something like the Velvet BSDF shader has no diffuse properties…under what render layer can I find something that has this material?

Also, how can you tell which shaders will show up under the Diffuse light layers? Is it any shader that has a metallic property?

I think Velvet gets assigned to Glossy because it is view dependent; diffuse is view independent. So after testing:
Diffuse, Oren-Nayar, Toon-Diffuse, PrincipledDiffuse, and its Sheen component goes into Diffuse.
Glossy, Metallic, Velvet, Toon-Glossy goes into Glossy.

My metallic shows up in glossy as I would expect.

2 Likes

Thanks for the follow-up @CarlG.
Dj.

Thanks for the response, @CarlG.

So after testing:
Diffuse, Oren-Nayar, Toon-Diffuse, PrincipledDiffuse, and its Sheen component goes into Diffuse.
Glossy, Metallic, Velvet, Toon-Glossy goes into Glossy.

Are you describing Blender Internal shaders? I’m not sure how to get Oren-Nayar in Cycles. When I try to insert a shader, I get these options:

You get Oren-Nayar for standard Diffuse if it’s diffuse roughness > 0.
Note that this behaves differently than what I expect is DisneyDiffuse in Principled.