Search Issue Tracker
Fixed
Fixed in 1.4.X
Votes
11
Found in [Package]
1.2.3
Issue ID
AVPB-599
Regression
No
[VisionOS] VisionOS FPS drops from 60 to 30 every frame when certain properties are modified
Reproduction steps:
1. Open the attached “Repro“ project
2. Build the project on “visionOS” platform (File > Build Settings > visionOS > Build)
3. Run the project on an Apple Vision Pro device or visionOS Simulator
4. Open the Profiler (Window > Analysis > Profiler) and connect it to the visionOS
5. Observe the FPS in the profiler
6. Press the “Script Driven Example” in the build
7. Observe the FPS in the profiler
Expected result: FPS stays at 60
Actual result: FPS drops to 30
Reproducible with: 1.1.6, 1.2.3 (2022.3.32f1)
Reproducible on: MR on visionOS 1.1 Simulator - built using M1 Max MacOS 14.4.1
Not reproducible on: No other environment tested
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- "Unsupported texture format R16 for a swizzle" error and texture is not correctly rendered when using texture Swizzle and reimporting texture asset
- Tab order is incorrect after re-ordering
- [Ubuntu] Red squares instead of ticks in dropdown options
- Multiple simultaneous input with the touch screen sometimes leaves button in not default state
- Crash on ShowDelayedContextMenu(bool) when changing the Size options of a Visual Element in the UIToolkit Inspector
Resolution Note:
Ultimately, this is caused by an issue from Apple that we have reported to them as FB13566439: creating a new ShapeResource (as we do for UI images when their geometry changes, which it does when the affected properties like RectTransform.pivot and .sizeDelta change) every frame is expensive (creating one new ShapeResource per frame is enough to reproduce the reduction to 30fps in the simulator), and there's no way for us to cache/reuse ShapeResources that allows us to provide the same hover behavior (using a CollisionComponent in a transformed child doesn't allow hovering on the parent).
We changed the behavior (in 1.2.3) so that we at least don't create a new ShapeResource if the component bounds don't change, which means that animating the color/alpha no longer reproduces the issue. For other properties, the only workaround we know of (for UI images that don't need to be hoverable/clickable) is to disable "Raycast Target" on the image component (which will prevent us from creating ShapeResources for them).
Resolution Note (fix version 1.4):
Will be fixed in the next 1.X release.