2017-10-19 89 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)

相關問題