2016-03-13 28 views
0

我在Unity3d中使用模糊材質製作立方體或飛機,當我在遊戲模式下運行遊戲時,它變成黑色。相機在一個立方體內。我如何修復黑色播放模式屏幕?

我發現這不是着色器的問題。但谷歌紙板相機。有什麼方法可以解決這個問題嗎?當我運行它沒有vr啓用是一切都好。

Screen shot of the black play mode Screenshot without play mode that blurry effect is fine

這裏是我使用的着色器:

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 
} 

回答

0

這個問題的解決辦法是禁用的直接呈現。

這就是爲什麼谷歌紙板相機使着色器看起來黑。