如何修复黑色播放模式屏幕?

How I can fix black play mode screen?

我在 Unity3d 中对立方体或平面使用模糊 material,当我 运行 游戏处于播放模式时它变成黑色。摄像头在立方体里面。

我发现这不是着色器的问题。但是 google 纸板相机。有什么办法可以解决这个问题吗?当我 运行 没有启用 VR 时一切正常。

这是我正在使用的着色器:

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

    Cull off
    // 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 
#pragma target 3.0

        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 = mul(UNITY_MATRIX_MVP, 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 = 1-(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
}   

这个问题的解决方法是禁用直接渲染。

这就是 google 纸板相机使着色器看起来黑色的原因。