And you left out several optimized subcases for substrate single slab mode.
Search if(OptimisedLegacyMode == SINGLE_OPTLEGACYMODE_CLEARCOAT)
in SubstrateExport.ush, to see these subcases. Though they are named with legacy
, but actually they are special optimized modes that just happen to corespond to those separate legacy shading models.
For example, if fuzz is enabled and fuzz-roughness is the same as slab roughness, and sub-surface scattering is disabled, then SINGLE_OPTLEGACYMODE_CLOTH is activated. Code as below
if (BSDF_GETHASFUZZ(BSDF) && SLAB_ROUGHNESS(BSDF) == SLAB_FUZZ_ROUGHNESS(BSDF))
{
OptimisedModeMask |= SingleHasCloth;
}
...
else if ((OptimisedModeMask & SingleHasCloth) == SingleHasCloth && BSDF_GETSSSTYPE(BSDF) == SSS_TYPE_INVALID)
{
OptimisedLegacyMode = SINGLE_OPTLEGACYMODE_CLOTH;
}