Closed jstone-lucasfilm closed 8 months ago
Here's a simple OpenPBR Carpaint material rendered using this latest reference implementation of the model:
How about we instead just make the coat_affect_color
value smaller than 1, say 0.5?
There were some great notes from @peterkutz in the related Slack thread that seem relevant here:
I have done these simulations in the past, although I haven't had a chance to do new tests in light of our recent discussions. I do know from the past that the magnitude of the effect depends on multiple factors, such as the roughness, IOR, color, viewing angle, etc. For example:
- in some cases the base color appears darker and more saturated (e.g., if the coat has a higher IOR than the base surface and the base color has a medium brightness)
- in some cases the base color is unaffected (e.g., if the base surface is black or white, or if the coat has the same IOR as the base surface)
- in some cases the base color actually appears brighter (e.g., if the coat has a lower roughness than the base surface resulting in less multiple scattering and less reflection from the coat, or if the coat has a lower IOR than the base surface resulting in less overall specular reflection from the combination of the coat and the base surface (in this case, the coat functions as a graded-index anti-reflective coating))
Given our expectation that an accurate implementation will have a highly variable effect, sometimes darkening and sometimes lightening the underlying base color, perhaps our best short-term approach is to "do no harm" and remove the uniform squaring effect that was used in Standard Surface?
I'm definitely open to other ideas here, but the current approximation seems too far from the ground truth to be a "rough draft" of our future implementation, and I'm concerned about this unintuitive behavior leaving artists with a negative first impression of OpenPBR.
This changelist removes the legacy Standard Surface approximation of the darkening and saturation of base colors under coatings.
In a future version of OpenPBR, our plan is to implement this coat darkening in a more subtle, physically based fashion, but the current approximation is too far from this ground truth to be useful.