Page MenuHome

Shader to RGB node is ignoring shading and just using color socket data directly
Confirmed, NormalPublicKNOWN ISSUE

Description

System Information
Operating system: Windows-7-6.1.7601-SP1 64 Bits
Graphics card: GeForce GTX TITAN X/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 446.14

Blender Version
Broken: version: 2.83.4, branch: master, commit date: 2020-08-05 06:00, hash: rBc113af82881a

Short description of error
If you have a Shader that is converted with the Shader to RGB node, and then the resulting Color is plugged into another shader node and rendered, the output of Eevee's Color pass for that shader shows color plugged to socket of shader that is converted to RGB. In example file it is pure white, when you would expect to see the converted shader to RGB.

Problem exists with Diffuse, Glossy, and Emission shaders and passes with the exception that an Emission converted to RGB going into another Emission will show up properly in the emission pass.

Exact steps for others to reproduce the error
See Node graph in attached image, or attached file.


Event Timeline

Richard Antalik (ISS) changed the task status from Needs Triage to Needs Information from User.Aug 18 2020, 3:45 AM

I am not sure if there is any bug.
First thing I did was to plug shader directly into material output and checked if there is any difference - there wasn't.

I would guess that reason why you get pure white image is because you are using monochromatic shading. If I connect texture with glossy BSDF shader node, I get expected colors in Specular Color pass. I have looked at manual https://docs.blender.org/manual/en/latest/render/layers/passes.html#lighting-passes that seems to tell me that I should expect what I see as well.

I have modified the file to demonstrate the case a bit better, I hope. Do you see same image in compositor as in combined pass of render? Or does this even solve your problem?

The first Glossy shader on its own looks like this:


Since that is then converted to RGB and plugged into the second Glossy shader, I'd expect to see that shading come out of the GlossCol pass. This is how it works in Cycles. Instead, whatever is plugged into the color of the first glossy shader is coming out of the GlossCol pass, with the combined shading of both Gloss's being in the GlossDir pass.

In other words, its not really converting it to RGB, as it continues to keep the Shading info from the first gloss in the GlossDir pass, when it should now be in the color pass.

I think I see the problem now. In my words it would be: Shader to RGB node is ignoring shading and just using color socket data directly. I thought the report is rather about color passes.

Richard Antalik (ISS) renamed this task from Shader to RGB does not work with Eevee color passes to Shader to RGB node is ignoring shading and just using color socket data directly.Aug 19 2020, 12:33 AM
Richard Antalik (ISS) changed the task status from Needs Information from User to Confirmed.
Richard Antalik (ISS) updated the task description. (Show Details)
Jeroen Bakker (jbakker) changed the subtype of this task from "Report" to "Known Issue".Mon, Aug 31, 8:39 AM

This seems to be a limitation of EEVEE render passes.

For render passes EEVEE hides part of the BSDF equation based on the selected pass; it does this for all BSDF's of the material.
When setting the GlossCol the first GlossBSDF will only output the glosscol (outputs pure white).
This is converted to rgb (outputs pure white) and will be feed to the second GlossBSDF (outputs pure white).

There is no easy way to do this only to some of the shaders in the material. I will update the manual to add this limitation.

This seems to be a limitation of EEVEE render passes.

For render passes EEVEE hides part of the BSDF equation based on the selected pass; it does this for all BSDF's of the material.
When setting the GlossCol the first GlossBSDF will only output the glosscol (outputs pure white).
This is converted to rgb (outputs pure white) and will be feed to the second GlossBSDF (outputs pure white).

There is no easy way to do this only to some of the shaders in the material. I will update the manual to add this limitation.

Do we know if this limitation would also apply to the upcoming Eevee AOVs? Being able to Convert Shader to RGB and output it via AOV would be a potential work around of the issue.

rBM7008: EEVEE: Limitation Shader to RGB + Renderpasses Documents the limitation.

The current patch uses the full BSDF's so that should be supported.

so eevee aov are still on the way ?

I know you are very busy,
but whenever you can get that patch finished I would be very grateful !