Unity app crashes on iOS due to shader not compiled

I am trying to create a Unity 5.4.2f2 app for iOS. This is done without compilation errors. But when I try to run the application using Xcode 8.0, it immediately crashes and the debugger reports the following error.

Initialize engine version: 5.4.2f2 (b7e030c65c9b) -------- Shader compilation failed #version 100 #extension GL_EXT_frag_depth : enable precision highp float; uniform highp vec4 _ProjectionParams; uniform highp vec4 _ZBufferParams; uniform highp mat4 unity_CameraToWorld; uniform highp mat4 _NonJitteredVP; uniform highp mat4 _PreviousVP; uniform highp sampler2D _CameraDepthTexture; varying highp vec2 xlv_TEXCOORD0; varying highp vec3 xlv_TEXCOORD1; void main () { highp vec4 tmpvar_1; tmpvar_1 = texture2D (_CameraDepthTexture, xlv_TEXCOORD0); mediump vec2 tmpvar_2; highp vec4 tmpvar_3; tmpvar_3.w = 1.0; tmpvar_3.xyz = ((xlv_TEXCOORD1 * (_ProjectionParams.z / xlv_TEXCOORD1.z)) * (1.0/(( (_ZBufferParams.x * tmpvar_1.x) + _ZBufferParams.y)))); highp vec4 tmpvar_4; tmpvar_4 = (unity_CameraToWorld * tmpvar_3); highp vec4 tmpvar_5; tmpvar_5 = (_PreviousVP * tmpvar_4); highp vec4 tmpvar_6; tmpvar_6 = (_NonJitteredVP * tmpvar_4); highp vec2 tmpvar_7; tmpvar_7 = (((tmpvar_5.xy / tmpvar_5.w) + 1.0) / 2.0); highp vec2 tmpvar_8; tmpvar_8 = (((tmpvar_6.xy / tmpvar_6.w) + 1.0) / 2.0); tmpvar_2 = (tmpvar_8 - tmpvar_7); mediump vec4 tmpvar_9; tmpvar_9.zw = vec2(0.0, 1.0); tmpvar_9.xy = tmpvar_2; gl_FragDepthEXT = tmpvar_1.x; gl_FragData[0] = tmpvar_9; } 

Compilation failed: fragment evaluation shader WARNING: 0: 4: extension "GL_EXT_frag_depth" is not supported ERROR: 0:38: use of undeclared identifier 'gl_FragDepthEXT'

Note. Failed to create an internal version of the Hidden / Internal MotionVectors shader. WARNING: Shader Unsupported: "Hidden / Internal-MotionVectors" does not have a vertex shader WARNING: Shader Unsupported: "Hidden / Internal-MotionVectors" - default shader setting.

Xcode 8.0 contains OPenGL 2.0 .

On the Unity forum, people tell us that this should be good for Unity 5.4. But this does not work for me. On Android devices, my application works fine.

+6
source share
2 answers

Open Unity β†’ Modify β†’ Project Settings β†’ Graphics

Then see Normal Depths when setting up the built-in shader and select the no option. Support

Here is Screenshot telling where to do above stuff

+5
source

From Edit / Project Settings / Graphics you can see that shaders are always on, see if there are any

Or, if you have 3D objects in the scene, disable [] Motion Vectors from all mesh renders. You can search in the hierarchy to see all of them: t: meshrendere

For me, it was the "Motion Vectors" setting (also in the "Edit / Project Settings / Graphics" section).

Link: https://forum.unity3d.com/threads/hidden-shader-motionvectors.431470/

+3
source

Source: https://habr.com/ru/post/1011762/


All Articles