2017-10-19 90 views
0

此着色器适用于移动设备,但在编辑器中显示为粉红色。以前它工作正常,但不知何故,我建立移动后,然后开始显示为粉红色。没有错误,但它给我警告。我正在使用Unity 2017.2。模糊着色器(Grab pass)在编辑器中显示为粉红色,但在移动设备上工作

我也尝试重新打开项目。但仍然相同。

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 
} 

enter image description here

enter image description here

因为它的,该材料不断复位和在Unity编辑我不能查看和测试。

回答

0

只要删除#pragma target 4.0,它会正常工作。

所以,

#ifndef SHADER_API_D3D11 
     #pragma target 3.0 
#endif 

编译目标4.0与Mac不工作。 (我正在使用IMac)

相关问题