• Unity
  • Graphics API setting cause some critical bugs

Related Discussions
...

Symptom

  1. Minimizing app make spine(skeletonGraphic) disappeared
  2. 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 wrote

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.

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 wrote

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.

Thank you!! I understand that URP enviroment also should use Spine/SkeletonGraphic.

You're welcome. Glad we could resolve the problem.