2017-12-22 12 views
1

私はカスタムシェーダを持っていますが、私のモバイルデバイスでは動作しませんが、PCで動作します。モバイルデバイス上で動作するように変換するにはどうすればよいですか?カスタムシェーダが携帯電話で動作しない(Unity)

enter image description here

これは、それがどのように見えるかです:

これは、それが私の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" 
} 

スクリーンショット:

は私のコードです携帯の場合:

enter image description here

仕様

PC: OS:Windowsの10のPro 64ビット プロセッサ:3.40 GHzの(8CPUs)@インテル(R)Core(TM)i7-6700 CPU、〜3.4GHz以上 メモリ:16384 MB RAM グラフィックカード:NVIDIAのGeForce GTX 960

電話: サムスンギャラクシーS7が、今の私はエミュレータ(Bluestack)

+0

あなたは、そのデバイスに多少の誤差を与えるかどうかを確認するためのadb logcatに確認することができホープ: https://answers.unity.com/questions/492681/how-to-use-adb-logcat .html – mgear

答えて

0

ゴー設定を使用しています - >グラフィックスは、 と は日陰を追加しますあなたは "常に含まれているシェーダ"リストに必要です。

はそれが

関連する問題