-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Changing purpose doesn't mark the render tags on a prim dirty #1243
Comments
See also #801 If the display purposes (renderTags in hd) are changed, this fact is not sent to the RenderDelegate until RenderPass:::_Prepare is called. This is after Sync() is callled, so even if the dirty flags are correct it will not have the current set of display purposes to compare against. However it only calls Sync() of prims that match the intended display purposes, so if you don't bother testing this in Sync() and make RenderPass hide any prims that have removed display purposes, the update is correct. |
Filed as internal issue #USD-6123. |
This should be fixed by 0a20c8e which is in the upcoming 20.08 release. |
Awesome, I will test it in the next few days. |
Closing, this should be fixed in the 20.08 release. Thanks! |
Description of Issue
I'm working on getting the Vp2RenderDelegate to respect render tags (also known as purpose) correctly in MayaUSD.
We've got things working reasonably well when we include the changes in Autodesk/maya-usd#558. But while I was working on this I discovered that changing purpose marks a prim's visibility dirty rather than its render tags.
I found the code in https://github.com/PixarAnimationStudios/USD/blob/master/pxr/usdImaging/usdImaging/gprimAdapter.cpp#L437, where when the purpose property changes the visibility is dirtied rather than DirtyRenderTag. Maybe both should be dirtied, or just render tags?
I think this may also be a part of the reason for HdChangeTracker::MarkRenderTagsDirty() exists. HdChangeTracker::MarkRprimDirty() is not called with DirtyRenderTag, so the code there never bumps the render tag version, so the extra call to MarkRenderTagsDirty() is needed. I didn't dive into it but maybe MarkRenderTagsDirty() can be removed if UsdImagingGprimAdapter::ProcessPropertyChange returned DirtyRenderTag.
I'm able to work around the issue by checking & clearing the visibility flag instead of render tags so this issue isn't blocking for me, but I think it is worth understanding anyway.
usd-interest link:
https://groups.google.com/forum/#!topic/usd-interest/9pzFbtCEY-Y
Steps to Reproduce
System Information (OS, Hardware)
Package Versions
USD v20.05
Build Flags
The text was updated successfully, but these errors were encountered: