[PBR] Materials in cache used long after object has changed
tracked
Qie Niangao
- Create some PBR content in one viewer (say the Linden viewer)
- Adjust some Materials properties (scales, offsets, metallic-roughness maps) of that content using another viewer with a different cache (I used Firestorm's PBR beta but could have been a Linden viewer using a different cache location), then go do other stuff at a different location and eventually logout for a few hours
- Switch back to the creating viewer, fly and teleport around, edit other stuff for hours, then return to the content created in Step 1.
- Behold that all the changes made in Step 2 have reverted, including in the editor.
- Logout and switch back to the viewer used to make the Step 2 changes, noting they're restored.
- Clear cache in the original viewer, login, and find the changes restored in this viewer, too.
If this is expected behavior, it surely wasn't expected by me!
Knowing nothing about how the viewer cache is actually implemented, I'd naively hypothesize that something about how PBR Material override properties are stored on the region or in cache make them invisible when determining whether cached instances are valid.
Log In
Dan Linden
tracked
Dan Linden
Thank you for the report, Qie!
I've linked this to an internal issue of the same bug. I don't believe it has been fixed yet, but it will be tested.
Qie Niangao
Well heck. I can't replicate this now. There's no question that it happened as reported, but trying to do the simplest repro now doesn't trigger the mistaken reliance on the old cached settings of the Material as applied to the build.
The one big change in my testing is that the Linden viewer updated to Second Life Release 7.1.3.7821226606 (64bit) so maybe that "fixed" it somehow? Nothing relevant stands out in the Release Notes "Resolved Issues" (but those are jira links so I can only judge by titles).
Henri Beauchamp
Qie Niangao
This might be due to a race condition: up to date PBR materials data is transmitted to the viewer by the simulator, often (but not always) even before the object has rezzed, while the said object will be rezzed by the viewer using the cached data before an update (PBR materials data excluded) is sent by the simulator if the said data is "too old", and depending on the interest list (which itself depends on the FOV or the camera): since the two types of data use different messages which are not sent synchronously, the likeliness of a race condition is very high...