mob-sakai / SoftMaskForUGUI

Enhance Unity UI (uGUI) with advanced soft-masking features to create more visually appealing effects!
https://github.com/mob-sakai/SoftMaskForUGUI
MIT License
2k stars 262 forks source link

Shader breaks on Asus Nexus 7 (2013) tablet #57

Closed strawlink closed 5 years ago

strawlink commented 5 years ago

Describe the bug When using the soft mask on an Asus Nexus 7 (2013) tablet, the shader gives a GLSL Link Error and doesn't render properly.

The error output (logcat) unfortunately doesn't help much:

 -------- GLSL link error: --From Vertex Shader:
 --From Fragment Shader:

 (Filename: /Users/builduser/buildslave/unity/build/Runtime/GfxDevice/opengles/ApiGLES.cpp Line: 685)

I tested it on many other devices where it worked just fine, it's just the single device that refuses to cooperate:

To Reproduce Steps to reproduce the behavior:

  1. Make a build of the github project with the scene 'SoftMask_Demo'.
  2. Install it on an Asus Nexus 7 (2013).
  3. Notice that the shader doesn't render correctly.

Environment (please complete the following information):

Additional context screen_Automatic_2019 06 12_11 11 44 screen_Automatic_2019 06 12_11 13 42 screen_Automatic_2019 06 12_11 14 04

Full (PID-filtered) log:

06-12 11:11:08.177: D/dalvikvm(3787): Trying to load lib /data/app-lib/com.coffee.softmaskforugui-1/libmain.so 0x41e84ff0
06-12 11:11:08.177: D/dalvikvm(3787): Added shared lib /data/app-lib/com.coffee.softmaskforugui-1/libmain.so 0x41e84ff0
06-12 11:11:08.317: E/dalvikvm(3787): Could not find class 'java.lang.invoke.MethodHandles$Lookup', referenced from method bitter.jnibridge.JNIBridge$a.<init>
06-12 11:11:08.317: W/dalvikvm(3787): VFY: unable to resolve const-class 270 (Ljava/lang/invoke/MethodHandles$Lookup;) in Lbitter/jnibridge/JNIBridge$a;
06-12 11:11:08.317: D/dalvikvm(3787): VFY: replacing opcode 0x1c at 0x000b
06-12 11:11:08.317: E/dalvikvm(3787): Could not find class 'java.lang.invoke.MethodHandles$Lookup', referenced from method bitter.jnibridge.JNIBridge$a.a
06-12 11:11:08.317: W/dalvikvm(3787): VFY: unable to resolve check-cast 270 (Ljava/lang/invoke/MethodHandles$Lookup;) in Lbitter/jnibridge/JNIBridge$a;
06-12 11:11:08.317: D/dalvikvm(3787): VFY: replacing opcode 0x1f at 0x001b
06-12 11:11:08.357: I/Unity(3787): SystemInfo CPU = ARMv7 VFPv3 NEON, Cores = 4, Memory = 1805mb
06-12 11:11:08.357: I/Unity(3787): SystemInfo ARM big.LITTLE configuration: 4 big (mask: 0xf), 0 little (mask: 0x0)
06-12 11:11:08.357: I/Unity(3787): ApplicationInfo com.coffee.softmaskforugui version 1.0 build 2faf8f53-5458-4fad-b879-08ff8182d53d
06-12 11:11:08.357: I/Unity(3787): Built from '2019.1/staging' branch, Version '2019.1.1f1 (fef62e97e63b)', Build type 'Release', Scripting Backend 'mono', CPU 'armeabi-v7a', Stripping 'Disabled'
06-12 11:11:08.607: I/Adreno-EGL(3787): <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13
06-12 11:11:08.607: W/Adreno-EGL(3787): <qeglDrvAPI_eglGetConfigAttrib:542>: EGL_BAD_ATTRIBUTE
06-12 11:11:08.607: W/Adreno-EGL(3787): <qeglDrvAPI_eglGetConfigAttrib:542>: EGL_BAD_ATTRIBUTE
06-12 11:11:08.607: W/Adreno-EGL(3787): <qeglDrvAPI_eglGetConfigAttrib:542>: EGL_BAD_ATTRIBUTE
06-12 11:11:08.667: D/Unity(3787):  GL_EXT_disjoint_timer_query
06-12 11:11:10.029: W/Adreno-ES20(3787): <core_glCompressedTexImage2D:470>: GL_INVALID_VALUE
06-12 11:11:10.509: E/Unity(3787): -------- GLSL link error: --From Vertex Shader:
06-12 11:11:10.509: E/Unity(3787): --From Fragment Shader:
06-12 11:11:10.509: E/Unity(3787):  
06-12 11:11:10.509: E/Unity(3787): (Filename: /Users/builduser/buildslave/unity/build/Runtime/GfxDevice/opengles/ApiGLES.cpp Line: 685)
06-12 11:11:10.679: W/Unity(3787): The referenced script on this Behaviour (Game Object 'TMP SubMeshUI [TextMeshPro/Sprite (SoftMaskable) (Instance)]') is missing!
06-12 11:11:10.679: W/Unity(3787):  
06-12 11:11:10.679: W/Unity(3787): (Filename: ./Runtime/Mono/ManagedMonoBehaviourRef.cpp Line: 333)
06-12 11:11:10.739: W/Unity(3787): The referenced script on this Behaviour (Game Object 'TextMeshPro Text') is missing!
06-12 11:11:10.739: W/Unity(3787):  
06-12 11:11:10.739: W/Unity(3787): (Filename: ./Runtime/Mono/ManagedMonoBehaviourRef.cpp Line: 333)
06-12 11:11:12.701: D/dalvikvm(3787): GC_CONCURRENT freed 270K, 4% free 9100K/9404K, paused 2ms+3ms, total 22ms
06-12 11:11:12.801: D/dalvikvm(3787): GC_FOR_ALLOC freed 155K, 3% free 9303K/9524K, paused 10ms, total 10ms
06-12 11:11:12.932: D/dalvikvm(3787): GC_CONCURRENT freed 379K, 5% free 9429K/9844K, paused 1ms+2ms, total 15ms
06-12 11:11:12.932: D/dalvikvm(3787): WAIT_FOR_CONCURRENT_GC blocked 4ms
06-12 11:11:13.122: D/dalvikvm(3787): GC_FOR_ALLOC freed 202K, 6% free 9437K/9976K, paused 10ms, total 10ms
06-12 11:11:14.073: E/Unity(3787): -------- GLSL link error: --From Vertex Shader:
06-12 11:11:14.073: E/Unity(3787): --From Fragment Shader:
06-12 11:11:14.073: E/Unity(3787):  
06-12 11:11:14.073: E/Unity(3787): (Filename: /Users/builduser/buildslave/unity/build/Runtime/GfxDevice/opengles/ApiGLES.cpp Line: 685)
06-12 11:11:14.083: E/Unity(3787): -------- GLSL link error: --From Vertex Shader:
06-12 11:11:14.083: E/Unity(3787): --From Fragment Shader:
06-12 11:11:14.083: E/Unity(3787):  
06-12 11:11:14.083: E/Unity(3787): (Filename: /Users/builduser/buildslave/unity/build/Runtime/GfxDevice/opengles/ApiGLES.cpp Line: 685)
06-12 11:11:14.103: E/Unity(3787): -------- GLSL link error: --From Vertex Shader:
06-12 11:11:14.103: E/Unity(3787): --From Fragment Shader:
06-12 11:11:14.103: E/Unity(3787):  
06-12 11:11:14.103: E/Unity(3787): (Filename: /Users/builduser/buildslave/unity/build/Runtime/GfxDevice/opengles/ApiGLES.cpp Line: 685)
06-12 11:11:14.253: D/dalvikvm(3787): GC_FOR_ALLOC freed 282K, 7% free 9310K/9976K, paused 16ms, total 16ms
06-12 11:11:14.403: D/dalvikvm(3787): GC_CONCURRENT freed 285K, 6% free 9455K/9976K, paused 3ms+1ms, total 14ms
06-12 11:11:14.553: D/dalvikvm(3787): GC_FOR_ALLOC freed 283K, 7% free 9315K/9976K, paused 12ms, total 12ms
06-12 11:11:23.582: D/dalvikvm(3787): GC_CONCURRENT freed 387K, 7% free 9311K/9964K, paused 1ms+2ms, total 14ms
06-12 11:11:54.702: D/dalvikvm(3787): GC_CONCURRENT freed 384K, 6% free 9311K/9836K, paused 1ms+1ms, total 12ms
06-12 11:12:25.973: D/dalvikvm(3787): GC_CONCURRENT freed 385K, 6% free 9311K/9836K, paused 1ms+1ms, total 14ms
06-12 11:12:57.754: D/dalvikvm(3787): GC_CONCURRENT freed 385K, 6% free 9311K/9836K, paused 1ms+1ms, total 13ms
mob-sakai commented 5 years ago

Hi @strawlink Thank you for your reporting! Unfortunately I do not have that device... X(

Can you test under different conditions?

strawlink commented 5 years ago

Thanks for the speedy reply @mob-sakai !

  • Graphics api priority: Turn off Auto Graphics API for Android and reordering the list in player settings
  • OpenGL ES 2.0
  • OpenGL ES 3.0
  • Vulkan

When using these settings, it works properly on the same Unity version (2019.1.1f1).

It still gives the same link error, but only 2 times compared to the 4 times before.

Full log:

06-12 14:45:23.182: D/dalvikvm(12885): Late-enabling CheckJNI
06-12 14:45:23.262: D/dalvikvm(12885): Trying to load lib /data/app-lib/com.coffee.softmaskforugui-2/libmain.so 0x41e813c0
06-12 14:45:23.262: D/dalvikvm(12885): Added shared lib /data/app-lib/com.coffee.softmaskforugui-2/libmain.so 0x41e813c0
06-12 14:45:23.702: E/dalvikvm(12885): Could not find class 'java.lang.invoke.MethodHandles$Lookup', referenced from method bitter.jnibridge.JNIBridge$a.<init>
06-12 14:45:23.702: W/dalvikvm(12885): VFY: unable to resolve const-class 270 (Ljava/lang/invoke/MethodHandles$Lookup;) in Lbitter/jnibridge/JNIBridge$a;
06-12 14:45:23.702: D/dalvikvm(12885): VFY: replacing opcode 0x1c at 0x000b
06-12 14:45:23.702: E/dalvikvm(12885): Could not find class 'java.lang.invoke.MethodHandles$Lookup', referenced from method bitter.jnibridge.JNIBridge$a.a
06-12 14:45:23.702: W/dalvikvm(12885): VFY: unable to resolve check-cast 270 (Ljava/lang/invoke/MethodHandles$Lookup;) in Lbitter/jnibridge/JNIBridge$a;
06-12 14:45:23.702: D/dalvikvm(12885): VFY: replacing opcode 0x1f at 0x001b
06-12 14:45:23.732: I/Unity(12885): SystemInfo CPU = ARMv7 VFPv3 NEON, Cores = 4, Memory = 1805mb
06-12 14:45:23.732: I/Unity(12885): SystemInfo ARM big.LITTLE configuration: 4 big (mask: 0xf), 0 little (mask: 0x0)
06-12 14:45:23.732: I/Unity(12885): ApplicationInfo com.coffee.softmaskforugui version 1.0 build 4f55f3ce-6702-4b34-94a6-61b2a7d7be12
06-12 14:45:23.732: I/Unity(12885): Built from '2019.1/staging' branch, Version '2019.1.1f1 (fef62e97e63b)', Build type 'Release', Scripting Backend 'mono', CPU 'armeabi-v7a', Stripping 'Disabled'
06-12 14:45:23.972: I/Adreno-EGL(12885): <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13
06-12 14:45:23.972: W/Adreno-EGL(12885): <qeglDrvAPI_eglGetConfigAttrib:542>: EGL_BAD_ATTRIBUTE
06-12 14:45:23.972: W/Adreno-EGL(12885): <qeglDrvAPI_eglGetConfigAttrib:542>: EGL_BAD_ATTRIBUTE
06-12 14:45:23.972: W/Adreno-EGL(12885): <qeglDrvAPI_eglGetConfigAttrib:542>: EGL_BAD_ATTRIBUTE
06-12 14:45:24.012: D/Unity(12885):  GL_AMD_compressed_ATC_texture GL_AMD_performance_monitor GL_AMD_program_binary_Z400 GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_robustness GL_EXT_texture_format_BGRA8888 GL_EXT_texture_type_2_10_10_10_REV GL_NV_fence GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth_texture GL_OES_depth24 GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_depth_texture_cube_map GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_vertex_type_10_10_10_2 GL_OES_vertex_array_object GL_QCOM_alpha_test GL_QCOM_binning_control GL_QCOM_driver_control GL_QCOM_perfmon_global_mode GL_QCOM_extended_get GL_QCOM_extended_get2 GL_QCOM_tiled_rendering GL_QCOM_writeonly_rendering GL_EXT_sRGB GL_EXT_texture_filter_anisotropic GL_EXT_color_b
06-12 14:45:24.012: D/Unity(12885): uffer_float GL_EXT_color_buffer_half_float GL_EXT_disjoint_timer_query
06-12 14:45:25.514: E/Unity(12885): -------- GLSL link error: --From Vertex Shader:
06-12 14:45:25.514: E/Unity(12885): --From Fragment Shader:
06-12 14:45:25.514: E/Unity(12885):  
06-12 14:45:25.514: E/Unity(12885): (Filename: /Users/builduser/buildslave/unity/build/Runtime/GfxDevice/opengles/ApiGLES.cpp Line: 685)
06-12 14:45:25.724: W/Unity(12885): The referenced script on this Behaviour (Game Object 'TMP SubMeshUI [TextMeshPro/Sprite (SoftMaskable) (Instance)]') is missing!
06-12 14:45:25.724: W/Unity(12885):  
06-12 14:45:25.724: W/Unity(12885): (Filename: ./Runtime/Mono/ManagedMonoBehaviourRef.cpp Line: 333)
06-12 14:45:25.774: W/Unity(12885): The referenced script on this Behaviour (Game Object 'TextMeshPro Text') is missing!
06-12 14:45:25.774: W/Unity(12885):  
06-12 14:45:25.774: W/Unity(12885): (Filename: ./Runtime/Mono/ManagedMonoBehaviourRef.cpp Line: 333)
06-12 14:45:27.826: D/dalvikvm(12885): GC_CONCURRENT freed 253K, 4% free 9133K/9420K, paused 3ms+2ms, total 22ms
06-12 14:45:27.886: D/dalvikvm(12885): GC_CONCURRENT freed 124K, 3% free 9436K/9672K, paused 2ms+1ms, total 13ms
06-12 14:45:28.026: D/dalvikvm(12885): GC_CONCURRENT freed 428K, 5% free 9433K/9896K, paused 1ms+1ms, total 12ms
06-12 14:45:28.206: D/dalvikvm(12885): GC_FOR_ALLOC freed 20K, 5% free 9432K/9896K, paused 10ms, total 10ms
06-12 14:45:28.206: I/dalvikvm-heap(12885): Grow heap (frag case) to 9.367MB for 131088-byte allocation
06-12 14:45:28.226: D/dalvikvm(12885): GC_FOR_ALLOC freed 0K, 5% free 9560K/10028K, paused 14ms, total 14ms
06-12 14:45:28.246: D/dalvikvm(12885): GC_FOR_ALLOC freed 128K, 6% free 9436K/10028K, paused 15ms, total 16ms
06-12 14:45:28.977: W/Adreno-ES20(12885): <core_glClear:37>: Error: Unknown: 0x506
06-12 14:45:29.157: E/Unity(12885): -------- GLSL link error: --From Vertex Shader:
06-12 14:45:29.157: E/Unity(12885): --From Fragment Shader:
06-12 14:45:29.157: E/Unity(12885):  
06-12 14:45:29.157: E/Unity(12885): (Filename: /Users/builduser/buildslave/unity/build/Runtime/GfxDevice/opengles/ApiGLES.cpp Line: 685)
06-12 14:45:29.247: D/dalvikvm(12885): GC_FOR_ALLOC freed 278K, 8% free 9309K/10028K, paused 11ms, total 11ms
06-12 14:45:29.378: D/dalvikvm(12885): GC_CONCURRENT freed 286K, 6% free 9453K/10028K, paused 2ms+1ms, total 18ms

I'll investigate if changing these settings have any side effects for my project. Thanks a lot!

strawlink commented 5 years ago

I have not encountered any issues after changing the graphics API.

Closing.