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
- URP Realtime reflection probes do not update when RenderProbe() is being called once per second
- Addressable terrain shader variants are stripped from the Player
- [iOS] Debug.Log() appears as <private> in Console app
- UI stays in the background when it is disabled in simulator
- A wrong log file is attached when project is launched with a "-logFile" command line argument
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.