- Edited
Graphics API setting cause some critical bugs
Symptom
- Minimizing app make spine(skeletonGraphic) disappeared
- Spine(skeletonGraphic) visually broken running on certain device
Symptom Condition
1) Use URP and add Renderfeature.
2) Setting Graphics API 'GLES'
3) Setting Canvas to ScreenSpace-Overlay (Not appeared in ScreenSpace-Camera)
4) Use SkeletonGraphics
All Symptom is related with Graphics API.
when i set target graphic api as GLES (3.0 / 2.0), Symptom1) and Symptom2) appear.
You can only reproduce this Symptom on mobile device using Android.
Testing Devices
Galaxy Tab A (8.0, 2019) (Android 9)
Galaxy S9+ (Android 9)
Galaxy A90 (5G) (Android 10)
Testing Enviroment
Unity version 2019.4.3f1
Core RP Library 7.3.1
Universal RP 7.3.1
Spine Runtime 3.8 (2020-06-08)
Spine Universal RP Shaders 3.8.0 (2020-08-07)
Here's my Testing video
Pink Box : Unity's Image Component.
Others : Spine SkeletonGraphic (under ScreenSpace-Overlay Canvas)
Graphic API : GLES
Graphic API : Vulkan
Why am i report?
Vulkan cannot be supported by low level Android API (As far as i know. maybe i am wrong!!)
But I 'must' make application supporting Android API level under 7.0. Please help me..!!
We are sorry for the trouble. Could you please send us a minimal Unity project that still shows the issue, as a zip package to contact@esotericsoftware.com. Then we can have a look at it.
Harald wroteWe are sorry for the trouble. Could you please send us a minimal Unity project that still shows the issue, as a zip package to contact@esotericsoftware.com. Then we can have a look at it.
I send email. I will waiting your reply sir. Thank you.
Thanks for sending the reproduction package, we received everything. We will get back to you as soon as we've figured out what is going wrong.
The problem is that you are using SkeletonGraphic
with a material using shader Universal Render Pipeline/Spine/Skeleton
. This yields undefined behaviour. You were just lucky that using the Vulkan
API it displayed correctly, it is rendering incorrectly on my Android test device with both GL ES3
and Vulkan
.
Please always use one of the Spine/SkeletonGraphic
shaders with SkeletonGraphic
, never any non-SkeletonGraphic shaders. This also applies when using URP. You can assign the SkeletonGraphicDefault
material that comes with the spine-unity package, which is assigned by default when instantiating a Skeleton as SkeletonGraphic
. It will use the textures of the skeleton atlas and can therefore be shared by all SkeletonGraphic
objects.
Harald wroteThanks for sending the reproduction package, we received everything. We will get back to you as soon as we've figured out what is going wrong.
The problem is that you are using
SkeletonGraphic
with a material using shaderUniversal Render Pipeline/Spine/Skeleton
. This yields undefined behaviour. You were just lucky that using theVulkan
API it displayed correctly, it is rendering incorrectly on my Android test device with bothGL ES3
andVulkan
.Please always use one of the
Spine/SkeletonGraphic
shaders withSkeletonGraphic
, never any non-SkeletonGraphic shaders. This also applies when using URP. You can assign theSkeletonGraphicDefault
material that comes with the spine-unity package, which is assigned by default when instantiating a Skeleton asSkeletonGraphic
. It will use the textures of the skeleton atlas and can therefore be shared by allSkeletonGraphic
objects.
Thank you!! I understand that URP enviroment also should use Spine/SkeletonGraphic.
You're welcome. Glad we could resolve the problem.