Page MenuHome

Subsurface Scattering Radius issue with low values or zero in RGB channels
Open, Confirmed, LowPublic


System Information
Operating system: Darwin-15.6.0-x86_64-i386-64bit 64 Bits
Graphics card: Intel Iris Pro OpenGL Engine Intel Inc. 4.1 INTEL-10.14.74

Blender Version
Broken: version: 2.81 (sub 9), branch: master, commit date: 2019-09-09 17:22, hash: rB6be3348505ce
Worked: (optional)

Short description of error
When using Scattering Radius, we can adjust the scattering effect per RGB channel. The problem is when one of these values is very low, near to zero. We see a reflection on the surface of that channel.

Exact steps for others to reproduce the error
01 object with principle shader and set Scatter Radius to R=.6, G=.35, B=0, basic gray color diffuse, soft roughness
02 Add HDR with strong lighting from 1 side and add perhaps sunlight (power 1, angle 5deg)
03 You see a blueish highlight apear on this material

See attached scene and example shots
left bl 2.79 - right bl2.81 > alterered material darker for better highlight

left bl 2.81 - right bl2.79

left bl 2.81 with Scatter Radius Blue 0.02 - right bl2.80 with Scatter Radius Blue 0.00

Here's another example, simplified material to show the scatter effect. Left is bl280 right is bl279

Is it perhaps due to the number 0 that blue light shows at the surface of a model? This cause weird reflections. I bumped into this from a scene from Rico Cilliers. I believe it was made in an Beta bl 2.80 in december 2018

After some talk with him, he noted that there an issue with Scatter Radius in the beginning. Number of zero or near zero would cause this weird haze/reflection.



Event Timeline

Ive tried making simple scene with the material from scratch. It didnt show the effect that strong, so i imported the material and made it as plain as possible.

See below with and without textures for diffuse, specular, roughness and normal mapping.
Ive also added the simple sphere scene with lights and hdr

Perhaps its could also be due to the normals. I noticed that normal maps are shown pretty weird in bl 2.80 They look jagged and wrong, but not sure if that is connected. Left is blender 2.80 and right is blender 2.79 I tried replicating this image, but i cant remember what i did here. I was testing all the maps to find the issue with the blue scatter or reflections. Somehow i got this image and tested it both in bl 2.79 and a couple of 2.80 versions. Now i dont know anymore what setup i used. But i dont think this matters to this subject

Here's another interesting comparing shot. Ive used a cylinder which tapers on the inside from thin to thick. Than i used the same mat, but each time had 2 of the Scatter Radius settings to 1 but leave on at 0. Notice how the one with green at zero shows a lot of green on the surface. While the other dont show that, the blue does show it a bit, but red does, not.

For this one i used neutral greys for color and for scatter color.

Ive added an updated file with the Cylinders ready to render. My knowledge of all these physics laws are not developed
well enough to know if this is correct.

Sergey Sharybin (sergey) lowered the priority of this task from Needs Triage by Developer to Waiting for Developer to Reproduce.Mon, Oct 28, 10:25 AM

This needs a deeper look.

Brecht Van Lommel (brecht) lowered the priority of this task from Waiting for Developer to Reproduce to Confirmed, Low.Thu, Nov 7, 11:30 PM

The problem here is that the use of Glossy Depth in the world shader nodes, which disables the world lighting for glossy shaders.

The way Cycles does BSDF sampling with MIS, a soft glossy ray can still contribute to diffuse shaders. This helps reduce noise, but breaks some of these shader tricks. The solution would be to remove that optimization for regular cases, or to evaluate the world shader twice, both of which are bad for performance. This is a known limitation currently.

For this specific case, the zero radius affects how we sample since the zero radius is handles as a diffuse BSDF instead of SSS. It may be possible to find some solution for that, though generally I would not recommend a world shader that is completely different for diffuse and glossy.