Why here? In the real world, if there is a black object, it is because the light is completely absorbed and the black is seen. Then why does the PBR set the reflection color to black and the SSR does not directly judge it as non-reflection? Just like the standard material.
This is a widely used approximation in PBR, where the reflectivity for all non-metallic materials is (0.04, 0.04, 0.04) to simplify things (see The PBR Guide - Part 1 on Substance 3D Tutorials for example).
In Babylon.js you have the possibility to scale the F0 value (here 0.04) with metallicF0Factor
. So by setting matPBR.metallicF0Factor = 0;
(meaning F0=0) your material will remain black even in a very bright environment.
Do you mean that the PBR material specular cannot actually be set to (0, 0, 0), but the minimum value is (0.04, 0.04, 0.04)?
In the metallic/roughness model, you don’t provide a specular color, it is calculated. So, yes, with the default value (1.0) for metallicF0Factor
, it can’t be less than (0.04, 0.04, 0.04). In the specular/glossiness model, you provide a specular color, so you can provide a (0.0, 0.0) color.
Note that pure black does not exist in nature, see for example optics - Is true black possible? - Physics Stack Exchange.