2017-10-19 3 views
0

이 셰이더는 모바일에서 작동하지만 편집기에서는 분홍색으로 나타납니다. 이전에는 정상적으로 작동했지만 모바일에 구현 한 후에는 분홍색으로 표시되기 시작합니다. 오류는 없지만 경고합니다. Unity 2017.2를 사용하고 있습니다.블러 셰이더 (Grab pass)는 에디터에서 분홍색으로 보이지만 모바일에서 작동합니다.

또한 프로젝트를 다시 열어 봅니다. 그러나 여전히 동일합니다.

enter image description here

때문에 그것의

enter image description here

Shader "TFTM/Blur" { 
    Properties { 
    _blurSizeXY("BlurSizeXY", Range(0,10)) = 0 
} 
SubShader { 

    // Draw ourselves after all opaque geometry 
    Tags { "Queue" = "Transparent" } 

    // Grab the screen behind the object into _GrabTexture 
    GrabPass { } 

    // Render the object with the texture generated above 
    Pass { 
     CGPROGRAM 
     #pragma debug 
     #pragma vertex vert 
     #pragma fragment frag 
     #ifndef SHADER_API_D3D11 

      #pragma target 3.0 

     #else 

      #pragma target 4.0 

     #endif 

     sampler2D _GrabTexture : register(s0); 
     float _blurSizeXY; 

     struct data { 
      float4 vertex : POSITION; 
      float3 normal : NORMAL; 
     }; 

     struct v2f { 
      float4 position : POSITION; 
      float4 screenPos : TEXCOORD0; 
     }; 

     v2f vert(data i){ 
      v2f o; 
      o.position = UnityObjectToClipPos(i.vertex); 
      o.screenPos = o.position; 
      return o; 
     } 

     half4 frag(v2f i) : COLOR 
     { 

      float2 screenPos = i.screenPos.xy/i.screenPos.w; 
      float depth= _blurSizeXY*0.0005; 

      screenPos.x = (screenPos.x + 1) * 0.5; 

      screenPos.y = (screenPos.y + 1) * 0.5; 

      half4 sum = half4(0.0h,0.0h,0.0h,0.0h); 
      sum += tex2D(_GrabTexture, float2(screenPos.x-5.0 * depth, screenPos.y+5.0 * depth)) * 0.025;  
      sum += tex2D(_GrabTexture, float2(screenPos.x+5.0 * depth, screenPos.y-5.0 * depth)) * 0.025; 

      sum += tex2D(_GrabTexture, float2(screenPos.x-4.0 * depth, screenPos.y+4.0 * depth)) * 0.05; 
      sum += tex2D(_GrabTexture, float2(screenPos.x+4.0 * depth, screenPos.y-4.0 * depth)) * 0.05; 


      sum += tex2D(_GrabTexture, float2(screenPos.x-3.0 * depth, screenPos.y+3.0 * depth)) * 0.09; 
      sum += tex2D(_GrabTexture, float2(screenPos.x+3.0 * depth, screenPos.y-3.0 * depth)) * 0.09; 

      sum += tex2D(_GrabTexture, float2(screenPos.x-2.0 * depth, screenPos.y+2.0 * depth)) * 0.12; 
      sum += tex2D(_GrabTexture, float2(screenPos.x+2.0 * depth, screenPos.y-2.0 * depth)) * 0.12; 

      sum += tex2D(_GrabTexture, float2(screenPos.x-1.0 * depth, screenPos.y+1.0 * depth)) * 0.15; 
      sum += tex2D(_GrabTexture, float2(screenPos.x+1.0 * depth, screenPos.y-1.0 * depth)) * 0.15; 

      sum += tex2D(_GrabTexture, screenPos-5.0 * depth) * 0.025;  
      sum += tex2D(_GrabTexture, screenPos-4.0 * depth) * 0.05; 
      sum += tex2D(_GrabTexture, screenPos-3.0 * depth) * 0.09; 
      sum += tex2D(_GrabTexture, screenPos-2.0 * depth) * 0.12; 
      sum += tex2D(_GrabTexture, screenPos-1.0 * depth) * 0.15;  
      sum += tex2D(_GrabTexture, screenPos) * 0.16; 
      sum += tex2D(_GrabTexture, screenPos+5.0 * depth) * 0.15; 
      sum += tex2D(_GrabTexture, screenPos+4.0 * depth) * 0.12; 
      sum += tex2D(_GrabTexture, screenPos+3.0 * depth) * 0.09; 
      sum += tex2D(_GrabTexture, screenPos+2.0 * depth) * 0.05; 
      sum += tex2D(_GrabTexture, screenPos+1.0 * depth) * 0.025; 

      return sum/2; 
     } 
     ENDCG 
    } 
} 

Fallback Off 
} 
는, 재료는 재설정 계속 나는 유니티 편집기에서보고 테스트 할 수 없습니다.

답변

0

#pragma target 4.0 만 제거하면 정상적으로 작동합니다. 그래서

,

#ifndef SHADER_API_D3D11 
     #pragma target 3.0 
#endif 

프라 그마 목표 4.0은 맥에서 작동하지. (IMac을 사용 중입니다)

관련 문제