Clarify vector2 roughness inputs of BSDF nodes - #3065
Open
jabrailkhalil wants to merge 1 commit into
Open
Conversation
…tion#3031) Document that vector2 roughness inputs of the microfacet BSDF nodes supply the anisotropic pair (alpha_x, alpha_y) along the surface tangent and bitangent directly, with no internal remapping, and cross-link the GGX formulation section of the PBR specification. Adds matching input docs in the pbrlib data library and clarifies the roughness utility node tables, including the conductor_bsdf port table which still described the input as a scalar-style 'Surface roughness'.
|
|
Member
|
Thanks for this proposal, @jabrailkhalil, and before we review it in detail, take a look at the instructions at #3065 (comment) for resolving the CLA authorization warnings. |
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.
Closes #3031.
The
vector2roughnessinputs of the microfacet BSDF nodes (dielectric_bsdf,conductor_bsdf,generalized_schlick_bsdf) have no documentation in the data library, and the PBR specification only states the pair semantics once, in the GGX section, with no link from the node sections. This makes it easy for both users and implementers to mistake them for the scalar roughness used elsewhere, and to apply an internal remap that the spec explicitly forbids ("supplied directly ... with no internal remapping").Changes
libraries/pbrlib/pbrlib_defs.mtlx:docstrings to thevector2roughnessinputs ofdielectric_bsdf,conductor_bsdf, andgeneralized_schlick_bsdf, stating that the pair supplies the anisotropic roughness along the surface tangent and bitangent directly to the microfacet distribution, with no internal remapping.docstrings to thevector2roughness inputs ofchiang_hair_bsdf(roughness_R,roughness_TT,roughness_TRT) describing them as the longitudinal variance / azimuthal logistic scale pair.docstrings to the inputs of theroughness_anisotropy,roughness_dual, andglossiness_anisotropyutility nodes that produce these pairs.documents/Specification/MaterialX.PBRSpec.md:roughnessinput supplies(alpha_x, alpha_y)directly, with no remapping.conductor_bsdfport table, which still describedroughnessas scalar-style "Surface roughness", to matchdielectric_bsdf/generalized_schlick_bsdf.roughness_anisotropy,roughness_dual, andglossiness_anisotropysections; correct the reportedglossinessdefault to1.0, matching the data library.No API, port type, default value, or behavior changes.
Verification performed
stdlib+pbrlibfrom the working copy through the MaterialX Python bindings: all documents load and resolve; all 11 changed inputdocstrings are present; full-document write/read round-trip succeeds; all 56 library.mtlxfiles parse.python Scripts/mxspec.py compare --spec ../documents/Specification/MaterialX.PBRSpec.md --mtlx ../libraries/pbrlib/pbrlib_defs.mtlx --defaults(same command family as repo CI): no new differences; only the two pre-existingartistic_iordefault mismatches and pre-existingdisplacementnode are reported.python Scripts/mxspec.py compareforMaterialX.StandardNodes.mdandMaterialX.NPRSpec.md: unchanged, no new differences.python Scripts/mxdoc.py --docType md ../libraries/pbrlib/pbrlib_defs.mtlxand--docType html ../libraries/bxdf/standard_surface.mtlx(as run by repo CI): succeed and render the new doc strings.python Scripts/mxvalidate.py ../resources/Materials/Examples/StandardSurface/standard_surface_marble_solid.mtlx: valid document.Note: this machine has no C++ toolchain installed, so MaterialXTest could not be built locally; the change is documentation-only in library/spec data. The EasyCLA check will need to be signed before merge; I can sign as an individual contributor if required.