Fix IECOREUSD_WRITE_CONFORMANT_RENDERMAN_ATTRIBUTES bugs#1544
Merged
murraystevenson merged 3 commits intoJul 20, 2026
Conversation
We're already in an anonymous namespace, so we don't need these.
We don't need to add the `ri:attributes` prefix for these, as they're not written as primvars.
Don't let it dictate what attribute names we use for _reading_. Otherwise we can't read attributes unless the env-var matches the value used to write them.
murraystevenson
approved these changes
Jul 20, 2026
murraystevenson
left a comment
Collaborator
There was a problem hiding this comment.
Thanks John, the fixes and improved test coverage look good to me. I agree we're overdue an overhaul here...
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.
I messed up in 5e2f322, because I didn't realise the full effects of changing
AttributeAlgo::nameToUSD(). Despite the function name, this was used when reading attributes too, and was also used when determining the names to use for UsdShadeShader outputs. This lead to several bugs :All this stuff is well overdue for a complete simplification where we only write attributes as primvars, but since we need this for 1.6.
x, I've made the most minimal change I can that I think is logical and fixes the problems. The fundamental issue is that because we want to support legacy attributes too, and
nameToUSD()is used for reading, there is not a 1-to-1 mapping of Cortex names to USD names. This is reflected in the new internalusdNames()function which lists the relevant attribute names in the order we'd prefer to use them.