Materials refresh too aggressively, causing lag
- Dominant language
- Wolfram Language
- Stars
- 905
- Forks
- 223
- Avg merge
- 2d 9h
- Merged PRs (30d)
- 17
Description
**Describe the bug**
When multiple viewports are visible - some with hardware textures on and some with textures off - we experience lagging after each tumble in the viewport.
I did some preliminary debugging. It seems like materials are being marked dirty and refreshed after tumbling. It thinks that we are switching to textured mode all the time:
https://github.com/Autodesk/maya-usd/blob/92aea58bd21570aeeb0435d12ff83c602cac98f2/lib/mayaUsd/render/vp2RenderDelegate/proxyRenderDelegate.cpp#L1183-L1197
It’s using `_combinedDisplayStyles` to determine whether textures are required. However, styles get erased if they haven’t been used for over 8 frames.
https://github.com/Autodesk/maya-usd/blob/92aea58bd21570aeeb0435d12ff83c602cac98f2/lib/mayaUsd/render/vp2RenderDelegate/proxyRenderDelegate.cpp#L1062
When I tumble in a non-textured viewport, it exceeds the 8 frame limit and removes “smoothHull” from `_combinedDisplayStyles`.
When it moves on to a textured viewport, it sees that “smoothHull” is not in `_combinedDisplayStyles` and believes textures are being turned on. It refreshes all materials - even though textures were on the entire time - and that takes several seconds.
I found a similar reported issue except I'm seeing a lag, not a crash: https://github.com/Autodesk/maya-usd/issues/3400
**Steps to reproduce**
1) Launch Maya and load the mayaUsd plugin
2) Click Create -> USD -> Create from File
3) Select the provided texture_lag.usda
4) Press the space bar in the viewport in order to enter 4 viewport view
5) Turn *on* hardware texturing for *all* 4 viewports
6) Turn *off* hardware texturing for the *persp* viewport
7) Tumble a few times in the persp viewport, one immediately after the other. Make sure to release the mouse after each tumble.
8) After each tumble, there is a pause/lag before it draws the next tumble.
**Attachments**
[texture_lag.zip](https://github.com/user-attachments/files/15893451/texture_lag.zip)
In the zip, there are two files:
- texture_lag.usda: USD file with 100 Mesh cubes and 100 Materials. The cubes are all identical and at origin. The materials are identical too. My goal here was to have 100 distinct Materials.
- green.png: The texture file for Materials.
Video of repro:
https://github.com/Autodesk/maya-usd/assets/8140553/7c8dec8f-d0bb-4ff9-9e10-5a5f7a7c02f8
**Specs (if applicable):**
- Rocky Linux 9.4
- Maya 2024.2
**Additional context**
I’ve noticed that turning off color management no longer lags, but we’d like to have color management on. Setting the preview_map’s source color space to “raw” also seems to alleviate it. But when it’s set to “sRGB” or “auto”, the lag happens.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.