Dieser Shader funktioniert auf Handy, aber im Editor zeigte es als rosa. Früher funktioniert es gut, aber irgendwie, nachdem ich auf Handy gebaut habe, Dann fing es an, als rosa zu zeigen. Kein Fehler, aber es gibt mir eine Warnung. Ich verwende Unity 2017.2.Blur Shader (Grab-Pass) zeigte rosa im Editor, aber arbeiten in mobilen
Ich versuche auch, das Projekt wieder zu öffnen. aber immer noch gleich.
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
}
Wegen es, das Material immer wieder zurückzusetzen, und ich kann in Unity Editor nicht sehen und zu testen.