Search Issue Tracker
By Design
Votes
0
Found in
2021.3.30f1
2022.3.10f1
2023.1.13f1
2023.2.0b9
2023.3.0a6
Issue ID
UUM-52921
Regression
No
[Android] Animations based on the _Time variable become choppy when using low-precision calculations
Reproduction steps:
1. Open the attached project "ReproProj" with Android Platform
2. Open the “/Assets/Test.unity” Scene
3. Build and Run
4. Let Player run for a couple of minutes
Expected result: Animation runs smoothly
Actual result: Animation shown in Player becomes choppy
Reproducible with: 2021.3.30f1, 2022.3.10f1, 2023.1.13f1, 2023.2.0b9, 2023.3.0a6
Testing environment: Windows 10 Enterprise 21H2
Reproducible on:
VLNQA00318, Oneplus OnePlus 7 Pro (GM1913), Android 11, CPU: Snapdragon 855 SM8150, GPU: Adreno (TM) 640
N/A, Hmd Global (Nokia G20), Android 13, CPU: Mediatek MT6765G Helio G35 (12 nm), GPU: PowerVR Rogue GE8320
Not reproducible on:
VLNQA00556 - Samsung Galaxy S8 (SM-G950U1), CPU: Snapdragon 835 MSM8998, GPU: Adreno 540, OS: 9
VLNQA00517 - OnePlus 10 Pro 5G (NE2213), CPU: Snapdragon 8 Gen 1 (SM8450), GPU: Adreno 730, OS: 12
VLNQA00231, Huawei HUAWEI Mate 20 Pro (LYA-L29), Android 9, CPU: HiSilicon Kirin 980, GPU: Mali-G76
VLNQA00332, Samsung Galaxy XCover4 (SM-G390F), Android 9, CPU: Exynos 7 Quad 7570, GPU: Mali-T720
VLNQA00325, Samsung Galaxy Note10 (SM-N970F), Android 12, CPU: Exynos 9 (9825), GPU: Mali-G76
N/A, Samsung Galaxy Note9 (SM-N9600), Android 9, CPU: Snapdragon 845 SDM845, GPU: Adreno (TM) 630
N/A, Xiaomi - (Redmi Note 8 Pro), Android 9, CPU: MediaTek Helios G90T MT6785T, GPU: Mali-G76 MC4
N/A, Samsung Galaxy S21 Ultra 5G (SM-G998B), Android 11, CPU: Exynos 2100, GPU: Mali-G78
N/A, Samsung Galaxy Z Flip3 5G (SM-F711B), Android 11, CPU: Snapdragon 888, GPU: Adreno (TM) 660
VLNQA00494 - iPhone 14 Pro Max, 16.3.1 iOS
VLNQA00358 - iPhone 12, 14.1 iOS
VLNQA00392 - iPad (9th generation), 15.0 iOS
VLNQA00310 - iPad Pro 12.9", 13.4.1 iOS
Windows Standalone Player
Notes:
- There are two blocks showing animation, one using high-precision variables (float) and one using lower-precision variables (half). Both animations match at first, but the bottom animation becomes choppier as time goes on. It becomes noticeable after about two minutes, and significantly problematic as time goes on
- The problem is resolved by using higher precision when doing calculations based on Time
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
- Unity CIL Linker fails on Player build when persistent listeners have "<" and ">" in their XML attribute names
- ”Lighting data asset ‘LightingData’ is incompatible with the current Unity version…” warnings are thrown when saving Indoors (URP) and Outdoors (URP) Scenes as Scene Templates
- [iOS] The screen blinks when transitioning from custom to Unity splash screen
- [macOS] ”Ignoring depth surface load action as it is memoryless” warnings are thrown when taking Game View Snapshot
- UI Builder Inspector scrolls back up when changes on an expanded but not fully displayed Inspector tab are saved
Resolution Note:
by design: even though _Time variable is full precision, the user's code casts the result down to half precision "half2 uv = IN.uv_MainTex + half2(0, _Time.y * _SideSpeed);" resulting in increasing loss of precision as the result value gets bigger.
The variables specified float/half precision is the minimal required precision, but device drivers can decide to provide higher precision than what was requested, that's why the result can differ among different devices when attempting to use half precision variables.