Skip to content

MaterialX: metal edge tint should not be multiplied by specular_weight#240

Merged
jstone-lucasfilm merged 4 commits intoAcademySoftwareFoundation:dev_1.2from
portsmouth:metal_edgecolor_fix
Jun 5, 2025
Merged

MaterialX: metal edge tint should not be multiplied by specular_weight#240
jstone-lucasfilm merged 4 commits intoAcademySoftwareFoundation:dev_1.2from
portsmouth:metal_edgecolor_fix

Conversation

@portsmouth
Copy link
Copy Markdown
Contributor

@portsmouth portsmouth commented Oct 22, 2024

Fixes a bug in the MtlX graph. 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.

(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 so specular_weight > 1 does nothing to the metal).

Copy link
Copy Markdown
Member

@jstone-lucasfilm jstone-lucasfilm left a comment

Choose a reason for hiding this comment

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

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?

@portsmouth
Copy link
Copy Markdown
Contributor Author

portsmouth commented May 30, 2025

It seems harmless to include it in dev_1.1.1, assuming that means a bug-fix release. It would be look breaking, but presumably in a good way.

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

@jstone-lucasfilm jstone-lucasfilm merged commit 34b2b22 into AcademySoftwareFoundation:dev_1.2 Jun 5, 2025
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.
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.

2 participants