MaterialX: metal edge tint should not be multiplied by specular_weight#240
Merged
jstone-lucasfilm merged 4 commits intoAcademySoftwareFoundation:dev_1.2from Jun 5, 2025
Conversation
jstone-lucasfilm
approved these changes
May 27, 2025
Member
jstone-lucasfilm
left a comment
There was a problem hiding this comment.
This looks good to me, thanks @portsmouth!
Just to double-check, do we want to include this in dev_1.2 or in dev_1.1.1?
Contributor
Author
|
It seems harmless to include it in |
Member
|
For now, let's merge this to its targeted 1.2 branch, and we can integrate it back to 1.1.1 if needed. |
34b2b22
into
AcademySoftwareFoundation:dev_1.2
1 check passed
jstone-lucasfilm
added a commit
to jstone-lucasfilm/MaterialX
that referenced
this pull request
Apr 14, 2026
This changelist removes `specular_weight` from the computation of metal edge tint in OpenPBR Surface, aligning the behavior of this shading model with a [proposed fix](AcademySoftwareFoundation/OpenPBR#240) for OpenPBR 1.2. As described in the proposed fix, the edge-tint color for the `generalized_schlick_bsdf` should not be multiplied by `specular_weight`, as the whole lobe is multiplied by `specular_weight` as well.
jstone-lucasfilm
pushed a commit
that referenced
this pull request
Apr 15, 2026
Two bug fixes for the 1.1.1 point release: - Metal edge tint incorrectly multiplied by specular_weight (cherry-picked from #240): the color82 (edge tint) input on metal_bsdf and metal_bsdf_tf was routed through a multiply node that applied specular_weight. Since the whole lobe is already weighted by specular_weight, the edge tint was being double-weighted. Now connects directly to the specular_color interface input. - Connect geometry_thin_walled flag to <surface> (borrowed from AcademySoftwareFoundation/MaterialX#2759): the thin-walled geometry flag was not being passed through to the surface node in the MaterialX graph.
jstone-lucasfilm
added a commit
to AcademySoftwareFoundation/MaterialX
that referenced
this pull request
Apr 15, 2026
This changelist removes `specular_weight` from the computation of metal edge tint in OpenPBR Surface, aligning the behavior of this shading model with a [proposed fix](AcademySoftwareFoundation/OpenPBR#240) for OpenPBR 1.2. As described in the proposed fix, the edge-tint color for the `generalized_schlick_bsdf` should not be multiplied by `specular_weight`, as the whole lobe is multiplied by `specular_weight` as well.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes a bug in the MtlX graph. The edge-tint color for the
generalized_schlick_bsdfshould not be multiplied byspecular_weight, as the whole lobe is multiplied byspecular_weightas well.(Note that MtlX still does the wrong thing if
specular_weight> 1, but that's not fixable on the OpenPBR side, unless we just clamp the weight sospecular_weight> 1 does nothing to the metal).