Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice
  3. Join us on November 16th, 2023, between 1 pm and 9 pm CET for Ask the Experts Online on Discord and on Unity Discussions.
    Dismiss Notice

GpuProgram creation error: shader program type is unrecognised. on Unity 5.3.1f1

Discussion in 'Shaders' started by diamond2004, Jan 20, 2016.

  1. diamond2004

    diamond2004

    Joined:
    Jan 24, 2014
    Posts:
    8
    Hi, I am using the following shader on an Android.
    This shader works on Unity 5.2.x but after moving to unity 5.3 it stops working

    Code (CSharp):
    1. Shader "VideoShaderImageExternal" {
    2.    Properties {
    3.       _MainTex ("Texture Image", 2D) = "white" {}
    4.       _Color ("Color", Color) = (1.0, 1.0, 1.0, 1.0)
    5.       _Scale ("Scale", Range (0, 1) ) = 1.0
    6.    }
    7.    SubShader {
    8.       Pass {
    9.          GLSLPROGRAM
    10.           #extension GL_OES_EGL_image_external : require
    11.           precision highp float;
    12.          uniform samplerExternalOES _MainTex;
    13.          varying highp vec4 texCoords;
    14.          uniform lowp vec4 _Color;
    15.          uniform float _Scale;
    16.      
    17.          #ifdef VERTEX
    18.          
    19.              void main()
    20.              {
    21.                 texCoords = gl_MultiTexCoord0; // Unity has predefined constants for vertex attributes
    22.                 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
    23.              }
    24.          #endif
    25.          #ifdef FRAGMENT
    26.              void main()
    27.              {
    28.                 vec2 a_texCoords = vec2(texCoords);      
    29.                 float newT = 1.0 - a_texCoords.t;
    30.                 newT = _Scale * newT;
    31.                  vec4 texture = texture2D(_MainTex, vec2(a_texCoords.s, newT));
    32.                 gl_FragColor = vec4(texture.rgb * (_Color.rgb * texture.a + (1. - texture.a)), 1);
    33.              }
    34.          #endif
    35.          ENDGLSL
    36.       }
    37.    }
    38. }
    39.  
    and I see in debug logs the following error:
    GpuProgram creation error: shader program type is unrecognised. You might have a precompiled shader asset from an old Unity version.


    Any ideas?
     
  2. diamond2004

    diamond2004

    Joined:
    Jan 24, 2014
    Posts:
    8
    Seems like unity is adding "precision highp float;" to the top of the compiled shader and it's causing the compile error because I have #extension GL_OES_EGL_image_external : require in my shader...

    This is the logs
    Code (CSharp):
    1. D/        (26623): MALI GL_COMPILE_STATUS is not GL_TRUE, 0
    2. D/Unity   (26623): -------- Shader compilation failed
    3. D/Unity   (26623): #version 100
    4. D/Unity   (26623): precision highp float;
    5. D/Unity   (26623): #define UNITY_NO_DXT5nm 1
    6. D/Unity   (26623): #define UNITY_NO_RGBM 1
    7. D/Unity   (26623): #define UNITY_NO_SCREENSPACE_SHADOWS 1
    8. D/Unity   (26623): #define UNITY_NO_LINEAR_COLORSPACE 1
    9. D/Unity   (26623): #define UNITY_ENABLE_REFLECTION_BUFFERS 1
    10. D/Unity   (26623): #define UNITY_FRAMEBUFFER_FETCH_AVAILABLE 1
    11. D/Unity   (26623): #define UNITY_NO_FULL_STANDARD_SHADER 1
    12. D/Unity   (26623): #define UNITY_PBS_USE_BRDF2 1
    13. D/Unity   (26623): #define SHADER_API_MOBILE 1
    14. D/Unity   (26623): #ifndef SHADER_TARGET
    15. D/Unity   (26623):     #define SHADER_TARGET 30
    16. D/Unity   (26623): #endif
    17. D/Unity   (26623): #ifndef SHADER_API_GLES
    18. D/Unity   (26623):     #define SHADER_API_GLES 1
    19. D/Unity   (26623): #endif
    20. D/Unity   (26623): #line 7
    21. D/Unity   (26623): #ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
    22. D/Unity   (26623): #endif
    23. D/Unity   (26623): #line 7
    24. D/Unity   (26623): #ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
    25. D/Unity   (26623): #endif
    26. D/Unity   (26623):
    27. D/Unity   (26623):           #extension GL_OES_EGL_image_external : require
    28. D/Unity   (26623):           precision highp float;
    29. D/Unity   (26623):          uniform samplerExternalOES _MainTex;  
    30. D/Unity   (26623):          varying highp vec4 texCoords;
    31. D/Unity   (26623):          uniform lowp vec4 _Color;
    32. D/Unity   (26623):          uniform float _Scale;
    33. D/Unity   (26623):      
    34. D/Unity   (26623):        
    35. D/Unity   (26623):        
    36. D/Unity   (26623):        
    37. D/Unity   (26623): #define gl_ModelViewProjectionMatrix glstate_matrix_mvp
    38. D/Unity   (26623): uniform highp mat4 glstate_matrix_mvp;
    39. D/Unity   (26623): #define gl_Vertex _glesVertex
    40. D/Unity   (26623): attribute vec4 _glesVertex;
    41. D/Unity   (26623): #define gl_MultiTexCoord0 _glesMultiTexCoord0
    42. D/Unity   (26623): attribute vec4 _glesMultiTexCoord0;
    43. D/Unity   (26623):        
    44. D/Unity   (26623):           void main()
    45. D/Unity   (26623):           {
    46. D/Unity   (26623):              texCoords = gl_MultiTexCoord0; // Unity has predefined constants for vertex attributes
    47. D/Unity   (26623):              gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
    48. D/Unity   (26623):           }
    49. D/Unity   (26623): -------- failed compiling:
    50. D/Unity   (26623): vertex shader
    51. D/        (26623): MALI GL_COMPILE_STATUS is not GL_TRUE, 0
    52. D/Unity   (26623): -------- Shader compilation failed
    53. D/Unity   (26623): #version 100
    54. D/Unity   (26623): precision highp float;
    55. D/Unity   (26623): #define UNITY_NO_DXT5nm 1
    56. D/Unity   (26623): #define UNITY_NO_RGBM 1
    57. D/Unity   (26623): #define UNITY_NO_SCREENSPACE_SHADOWS 1
    58. D/Unity   (26623): #define UNITY_NO_LINEAR_COLORSPACE 1
    59. D/Unity   (26623): #define UNITY_ENABLE_REFLECTION_BUFFERS 1
    60. D/Unity   (26623): #define UNITY_FRAMEBUFFER_FETCH_AVAILABLE 1
    61. D/Unity   (26623): #define UNITY_NO_FULL_STANDARD_SHADER 1
    62. D/Unity   (26623): #define UNITY_PBS_USE_BRDF2 1
    63. D/Unity   (26623): #define SHADER_API_MOBILE 1
    64. D/Unity   (26623): #ifndef SHADER_TARGET
    65. D/Unity   (26623):     #define SHADER_TARGET 30
    66. D/Unity   (26623): #endif
    67. D/Unity   (26623): #ifndef SHADER_API_GLES
    68. D/Unity   (26623):     #define SHADER_API_GLES 1
    69. D/Unity   (26623): #endif
    70. D/Unity   (26623): #line 7
    71. D/Unity   (26623): #ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
    72. D/Unity   (26623): #endif
    73. D/Unity   (26623): #line 7
    74. D/Unity   (26623): #ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
    75. D/Unity   (26623): #endif
    76. D/Unity   (26623):
    77. D/Unity   (26623):           #extension GL_OES_EGL_image_external : require
    78. D/Unity   (26623):           precision highp float;
    79. D/Unity   (26623):          uniform samplerExternalOES _MainTex;  
    80. D/Unity   (26623):          varying highp vec4 texCoords;
    81. D/Unity   (26623):          uniform lowp vec4 _Color;
    82. D/Unity   (26623):          uniform float _Scale;
    83. D/Unity   (26623):      
    84. D/Unity   (26623):        
    85. D/Unity   (26623):        
    86. D/Unity   (26623):        
    87. D/Unity   (26623):              void main()
    88. D/Unity   (26623):              {
    89. D/Unity   (26623):                 vec2 a_texCoords = vec2(texCoords);      
    90. D/Unity   (26623):                 float newT = 1.0 - a_texCoords.t;
    91. D/Unity   (26623):                 newT = _Scale * newT;
    92. D/Unity   (26623):                  vec4 texture = texture2D(_MainTex, vec2(a_texCoords.s, newT));
    93. D/Unity   (26623):                 gl_FragColor = vec4(texture.rgb * (_Color.rgb * texture.a + (1. - texture.a)), 1);
    94. D/Unity   (26623): //                gl_FragColor = texture2D(_MainTex, vec2(texCoords));
    95. D/Unity   (26623):              }
    96. D/Unity   (26623): -------- failed compiling:
    97. D/Unity   (26623): fragment evaluation shader
    98. D/Unity   (26623): Note: Creation of internal variant of shader 'VideoShaderImageExternal' failed.
    99. D/        (26623): MALI GL_COMPILE_STATUS is not GL_TRUE, 0
    100. D/Unity   (26623): -------- Shader compilation failed
    101. D/Unity   (26623): #version 100
    102. D/Unity   (26623): precision highp float;
    103. D/Unity   (26623): #define UNITY_NO_DXT5nm 1
    104. D/Unity   (26623): #define UNITY_NO_RGBM 1
    105. D/Unity   (26623): #define UNITY_NO_SCREENSPACE_SHADOWS 1
    106. D/Unity   (26623): #define UNITY_NO_LINEAR_COLORSPACE 1
    107. D/Unity   (26623): #define UNITY_ENABLE_REFLECTION_BUFFERS 1
    108. D/Unity   (26623): #define UNITY_FRAMEBUFFER_FETCH_AVAILABLE 1
    109. D/Unity   (26623): #define UNITY_NO_FULL_STANDARD_SHADER 1
    110. D/Unity   (26623): #define UNITY_PBS_USE_BRDF2 1
    111. D/Unity   (26623): #define SHADER_API_MOBILE 1
    112. D/Unity   (26623): #ifndef SHADER_TARGET
    113. D/Unity   (26623):     #define SHADER_TARGET 30
    114. D/Unity   (26623): #endif
    115. D/Unity   (26623): #ifndef SHADER_API_GLES
    116. D/Unity   (26623):     #define SHADER_API_GLES 1
    117. D/Unity   (26623): #endif
    118. D/Unity   (26623): #line 7
    119. D/Unity   (26623): #ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
    120. D/Unity   (26623): #endif
    121. D/Unity   (26623): #line 7
    122. D/Unity   (26623): #ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
    123. D/Unity   (26623): #endif
    124. D/Unity   (26623):
    125. D/Unity   (26623):           #extension GL_OES_EGL_image_external : require
    126. D/Unity   (26623):           precision highp float;
    127. D/Unity   (26623):          uniform samplerExternalOES _MainTex;  
    128. D/Unity   (26623):          varying highp vec4 texCoords;
    129. D/Unity   (26623):          uniform lowp vec4 _Color;
    130. D/Unity   (26623):          uniform float _Scale;
    131. D/Unity   (26623):      
    132. D/Unity   (26623):        
    133. D/Unity   (26623):        
    134. D/Unity   (26623):        
    135. D/Unity   (26623): #define gl_ModelViewProjectionMatrix glstate_matrix_mvp
    136. D/Unity   (26623): uniform highp mat4 glstate_matrix_mvp;
    137. D/Unity   (26623): #define gl_Vertex _glesVertex
    138. D/Unity   (26623): attribute vec4 _glesVertex;
    139. D/Unity   (26623): #define gl_MultiTexCoord0 _glesMultiTexCoord0
    140. D/Unity   (26623): attribute vec4 _glesMultiTexCoord0;
    141. D/Unity   (26623):        
    142. D/Unity   (26623):           void main()
    143. D/Unity   (26623):           {
    144. D/Unity   (26623):              texCoords = gl_MultiTexCoord0; // Unity has predefined constants for vertex attributes
    145. D/Unity   (26623):              gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
    146. D/Unity   (26623):           }
    147. D/Unity   (26623): -------- failed compiling:
    148. D/Unity   (26623): vertex shader
    149. D/        (26623): MALI GL_COMPILE_STATUS is not GL_TRUE, 0
    150. D/Unity   (26623): -------- Shader compilation failed
    151. D/Unity   (26623): #version 100
    152. D/Unity   (26623): precision highp float;
    153. D/Unity   (26623): #define UNITY_NO_DXT5nm 1
    154. D/Unity   (26623): #define UNITY_NO_RGBM 1
    155. D/Unity   (26623): #define UNITY_NO_SCREENSPACE_SHADOWS 1
    156. D/Unity   (26623): #define UNITY_NO_LINEAR_COLORSPACE 1
    157. D/Unity   (26623): #define UNITY_ENABLE_REFLECTION_BUFFERS 1
    158. D/Unity   (26623): #define UNITY_FRAMEBUFFER_FETCH_AVAILABLE 1
    159. D/Unity   (26623): #define UNITY_NO_FULL_STANDARD_SHADER 1
    160. D/Unity   (26623): #define UNITY_PBS_USE_BRDF2 1
    161. D/Unity   (26623): #define SHADER_API_MOBILE 1
    162. D/Unity   (26623): #ifndef SHADER_TARGET
    163. D/Unity   (26623):     #define SHADER_TARGET 30
    164. D/Unity   (26623): #endif
    165. D/Unity   (26623): #ifndef SHADER_API_GLES
    166. D/Unity   (26623):     #define SHADER_API_GLES 1
    167. D/Unity   (26623): #endif
    168. D/Unity   (26623): #line 7
    169. D/Unity   (26623): #ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
    170. D/Unity   (26623): #endif
    171. D/Unity   (26623): #line 7
    172. D/Unity   (26623): #ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
    173. D/Unity   (26623): #endif
    174. D/Unity   (26623):
    175. D/Unity   (26623):           #extension GL_OES_EGL_image_external : require
    176. D/Unity   (26623):           precision highp float;
    177. D/Unity   (26623):          uniform samplerExternalOES _MainTex;  
    178. D/Unity   (26623):          varying highp vec4 texCoords;
    179. D/Unity   (26623):          uniform lowp vec4 _Color;
    180. D/Unity   (26623):          uniform float _Scale;
    181. D/Unity   (26623):      
    182. D/Unity   (26623):        
    183. D/Unity   (26623):        
    184. D/Unity   (26623):        
    185. D/Unity   (26623):              void main()
    186. D/Unity   (26623):              {
    187. D/Unity   (26623):                 vec2 a_texCoords = vec2(texCoords);      
    188. D/Unity   (26623):                 float newT = 1.0 - a_texCoords.t;
    189. D/Unity   (26623):                 newT = _Scale * newT;
    190. D/Unity   (26623):                  vec4 texture = texture2D(_MainTex, vec2(a_texCoords.s, newT));
    191. D/Unity   (26623):                 gl_FragColor = vec4(texture.rgb * (_Color.rgb * texture.a + (1. - texture.a)), 1);
    192. D/Unity   (26623): //                gl_FragColor = texture2D(_MainTex, vec2(texCoords));
    193. D/Unity   (26623):              }
    194. D/Unity   (26623): -------- failed compiling:
    195. D/Unity   (26623): fragment evaluation shader
    196. D/Unity   (26623): Note: Creation of internal variant of shader 'VideoShaderImageExternal' failed.
    197. D/Unity   (26623): WARNING: Shader
    198. D/Unity   (26623): Unsupported: 'VideoShaderImageExternal' - Pass '' has no vertex shader
    199. D/Unity   (26623): WARNING: Shader
    200. D/Unity   (26623): Unsupported: 'VideoShaderImageExternal' - Setting to default shader.
    201. D/Unity   (26623): UnloadTime: 0.911000 ms
     
  3. Aras

    Aras

    Unity Technologies

    Joined:
    Nov 7, 2005
    Posts:
    4,770
    Sounds like a regression. Can you file a bug for us to investigate?