【问题标题】:Unity application crashes on iOS due to shader not compiled由于着色器未编译,Unity 应用程序在 iOS 上崩溃
【发布时间】:2016-10-27 11:35:28
【问题描述】:

我正在尝试为 iOS 构建我的 Unity 5.4.2f2 应用程序。它没有编译错误。但是当我尝试使用 Xcode 8.0 运行应用程序时,它立即崩溃并且调试器报告以下错误。

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;
}

编译失败: 片段评估着色器 警告:0:4:不支持扩展“GL_EXT_frag_depth” 错误:0:38:使用未声明的标识符“gl_FragDepthEXT”

注意:创建着色器“Hidden/Internal-MotionVectors”的内部变体失败。 WARNING: Shader Unsupported: 'Hidden/Internal-MotionVectors' - Pass '' 没有顶点着色器 警告:不支持着色器:'Hidden/Internal-MotionVectors' - 设置为默认着色器。

Xcode 8.0 包含OPenGL 2.0

Unity forum,人们告诉我们,Unity 5.4 应该没问题。但这对我不起作用。在 Android 设备上,我的应用程序运行良好。

【问题讨论】:

  • 你解决了吗?
  • @JérômeBoé。明天我会添加答案
  • 如果你能发布你的解决方案就好了,这很紧急^^

标签: ios xcode unity3d shader


【解决方案1】:

打开 Unity -> 编辑 -> 项目设置 -> 图形

然后在内置着色器设置下查看深度法线并选择不支持选项

【讨论】:

    【解决方案2】:

    从编辑/项目设置/图形可以看到总是包含的着色器,看看它是否存在

    或者,如果您在场景中有 3D 对象,请从所有网格渲染器中禁用 [ ] 运动矢量。 您可以在层次结构中搜索以查看所有这些:t:meshendere

    对我来说是“运动矢量”设置(也在编辑/项目设置/图形下)。

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

    【讨论】:

      【解决方案3】:

      这个 Blit 着色器崩溃主要是因为纹理编译,IO 不支持 dds 格式纹理,如果您使用的是 dds 纹理,请将它们替换为 jpeg 或任何其他支持的扩展,它将安全地构建在 IOS 上。为我工作:) 经过长时间的研究。

      【讨论】:

        猜你喜欢
        • 2019-06-25
        • 1970-01-01
        • 2011-12-11
        • 1970-01-01
        • 1970-01-01
        • 2011-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多