Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove Standard Surface approximation of coat darkening #135

Merged
merged 1 commit into from
Nov 16, 2023
Merged

Conversation

jstone-lucasfilm
Copy link
Member

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.

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.
@jstone-lucasfilm
Copy link
Member Author

Here's a simple OpenPBR Carpaint material rendered using this latest reference implementation of the model:

OpenPBR_Carpaint_Latest

@portsmouth
Copy link
Contributor

How about we instead just make the coat_affect_color value smaller than 1, say 0.5?

@jstone-lucasfilm
Copy link
Member Author

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.

Copy link
Contributor

@AdrienHerubel AdrienHerubel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The consensus when discussing this PR with @portsmouth and @virtualzavie was that the current approximation is too simple and should be replaced by a better view dependant and possibly roughness dependant version which being discussed in #136.

In the meantime instead of using the Standard Surface approximation without a way for artists to disable it, we should remove it from the implementation.

@jstone-lucasfilm jstone-lucasfilm merged commit d228756 into AcademySoftwareFoundation:main Nov 16, 2023
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants