Unity application crashes on iOS due to shader not

2020-03-19 06:20发布

I am trying to build my Unity 5.4.2f2 application for iOS. It is done with no compile 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;
}

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

Note: Creation of internal variant of shader 'Hidden/Internal-MotionVectors' failed. WARNING: Shader Unsupported: 'Hidden/Internal-MotionVectors' - Pass '' has no vertex shader WARNING: Shader Unsupported: 'Hidden/Internal-MotionVectors' - Setting to default shader.

Xcode 8.0 contains OPenGL 2.0.

At the Unity forum people tell us that it should be fine for Unity 5.4. But it's not working for me. On Android devices my application runs quite OK.

3条回答
▲ chillily
2楼-- · 2020-03-19 07:00

From Edit/Project Settings/Graphics can see always included shaders, see if its there

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

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

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

查看更多
成全新的幸福
3楼-- · 2020-03-19 07:00

this Blit shader crash is mostly because of texture compilation, IOs doesnot support dds format textures, if you are using dds textures, replace them with jpeg or any other supported extensions and it will build on IOS safely. worked for me:) after long research.

查看更多
SAY GOODBYE
4楼-- · 2020-03-19 07:02

Open Unity -> Edit -> Project settings -> Graphics

Then see Depth Normals under built-in shader setting and Choose option no Support

Here is Screenshot telling where to do above stuff

查看更多
登录 后发表回答