Autodesk / Autodesk/maya-usd

Materials refresh too aggressively, causing lag

Open
#3,832 3 comments 0 reactions 1 assignee Assigned to @santosd View on GitHub
bug
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.