Nitpick, but for some weird corner cases, clamping the product instead of the individual factors might be nicer?
I'd rather make sure the weight doesn't become zero in the first place - I'll update you once I got that fix done.
Might as well do it explicitly here I guess.
Thanks for the extensive testing (and for implementing the result), this is extremely helpful.
All suggestions sound good to me. Negative values are always questionable (emission being the…
Coat Thickness is one of the many options that could theoretically be added, but in practice it's always a balancing act between supporting more use cases vs. keeping the node manageable.
In…
Makes sense and is actually more consistent with the OpenPBR interpretation of weights (there, the weight of layer represents the probability of hitting it on a sub-pixel level, so the mixing should always be linear).
Yeah, using mix(Normal, CoatNormal, saturate(CoatWeight))
as the Sheen normal seems reasonable to me. I'll add it for now, we can align with OpenPBR later if they go a different route.
A…
Hello, thank you for your answers. I don't know what to think: on the one hand, it's a clever optimization, but on the other, it implies that the object doesn't vary too much in thickness and…
I just checked and surprisingly, it does indeed seem like the Fresnel peak region gets narrower at high IORs.
Of course, typically the higher F0 would mean that the overall reflectivity still…
Again, code style nitpicking: Personally, for file-local classes like this, I'd prefer to have the function inline here, not separately below. I don't think there's an official style recommendation for this though, so feel free to keep it like this if you prefer it.