Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 自定义着色器不适用于手机(Unity)_Android_Unity3d_Shader - Fatal编程技术网

Android 自定义着色器不适用于手机(Unity)

Android 自定义着色器不适用于手机(Unity),android,unity3d,shader,Android,Unity3d,Shader,我有一个自定义着色器,它在我的移动设备上不工作,但在PC上工作。如何转换它,使其在移动设备上工作 以下是我的代码: Shader "vertexPainter/DiffuseNormalSpec_2tex_mask" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex1 ("Base 1 (RGBA)", 2D) = "whi

我有一个自定义着色器,它在我的移动设备上不工作,但在PC上工作。如何转换它,使其在移动设备上工作

以下是我的代码:

Shader "vertexPainter/DiffuseNormalSpec_2tex_mask" {
    Properties {
    _Color ("Main Color", Color) = (1,1,1,1)
    _MainTex1 ("Base 1 (RGBA)", 2D) = "white" {}
    _BumpMap1 ("Bumpmap 1 (RGB)", 2D) = "bump" {}

    _MainTex2 ("Base 2 (RGB)", 2D) ="black" {}
    _BumpMap2 ("Bumpmap 2 (RGB)", 2D) = "bump" {}
    _BlendMask ("Blend Mask", 2D) = "white" {}

    _Shininess("shininess", Range(0,0.8)) = 0.1
    _SpecColor("spec color", Color) = (0,0,0,0)
    _BlendSoft("Blend Softness", Range(0,0.8)) = 0.1
    _B_Normal("B Normal", Range(0,0.8)) = 0.1
    }
    SubShader {
    Tags { "RenderType"="Opaque" }
    LOD 600

    CGPROGRAM
    #pragma surface surf BlinnPhong vertex:vert
    #pragma target 3.0
    struct Input {
    float2 uv_MainTex1 : TEXCOORD0;
    float2 uv2_BlendMask : TEXCOORD1;
    float4 color : COLOR;
    };
    void vert (inout appdata_full v, out Input o) {
    UNITY_INITIALIZE_OUTPUT(Input,o); 
    o.color = (v.color);
    }
    uniform sampler2D _MainTex1, _MainTex2, _BlendMask;
    uniform sampler2D _BumpMap1, _BumpMap2;
    half3 _SelfIllum;
    half _BlendSoft, _B_Normal;
    fixed _Shininess;
    void surf (Input IN, inout SurfaceOutput o) {

    half4 base = tex2D(_MainTex1, IN.uv_MainTex1);
    half4 blend1 = tex2D(_MainTex2, IN.uv_MainTex1);

    half4 blendmask = tex2D(_BlendMask, IN.uv2_BlendMask);
    half transformed = ((1 - IN.color.g) - blendmask.r)/_BlendSoft;

    half mask = saturate(transformed); 
    half4 finresult = lerp(blend1, base, mask); 
    half specresultg = lerp(blend1.a, base.a, mask); 

    half3 g_normal = UnpackNormal(tex2D(_BumpMap2, IN.uv_MainTex1));
    g_normal *= 1-(blendmask.b * _B_Normal);
    half3 r_normal = UnpackNormal(tex2D(_BumpMap1, IN.uv_MainTex1));
    half3 norresultg = lerp(g_normal, r_normal, mask); 

    o.Albedo = finresult.rgb;
    o.Normal = norresultg;
    o.Alpha = 1;
    o.Specular = _Shininess;
    o.Gloss = specresultg * _SpecColor;
    }
    ENDCG
    }

    FallBack "Diffuse"
}
着色器的屏幕截图:

这是我的电脑上的外观:

这就是我手机上的样子:

规格 个人电脑: 操作系统:Windows 10 Pro 64位 处理器:英特尔(r)Core(TM)i7-6700CPU@3.40GHz(8CPU),~3.4Ghz 内存:16384MB RAM 图形卡:NVIDIA GeForce GTX 960

电话: 三星Galaxy s7,但现在我使用的是模拟器(Bluestack)

Go Settings->Graphics, 及 将所需的着色器添加到“始终包含着色器”列表中


希望它有帮助

你能和adb logcat核实一下它是否在设备中出现了一些错误吗:嘿,你知道问题出在哪里了吗?我有一个类似的地形混合器着色器,我有同样的问题。