Hallo Leute,
ich habe einen Shader geschrieben der leider nicht geht.
Tiefenbuffer anzeigen geht:
Code
float4 PS_PostProcess(VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR{ float4 Color = tex2D(SamplerDepth, IN.txcoord.xy).r; if(Color.r > 0.925)Color = tex2D(SamplerColor, IN.txcoord.xy); Color.a = 1.0; return Color;}
Blurring fixiert auf 0.5 geht auch:
Code
float4 PS_PostProcess(VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR{ float4 Color = tex2D(SamplerColor, IN.txcoord.xy); float i = 0.0; int count=1; float pDepth = tex2D(SamplerDepth, IN.txcoord.xy).r; pDepth = 0.5; if(pDepth > 0.925)pDepth = 0.0; for(i=0; i<=pDepth; i+=0.01){ Color += tex2D(SamplerColor, float2(IN.txcoord.x, IN.txcoord.y + (i/50))); Color += tex2D(SamplerColor, float2(IN.txcoord.x, IN.txcoord.y - (i/50))); count+=2; } Color = Color/count; Color.a = 1.0; return Color;}
Nur wenn ich jetzt statt 0.5 den Tiefenpuffer nehme, ist das Bild normal:
Code
float4 PS_PostProcess(VS_OUTPUT_POST IN, float2 vPos : VPOS) : COLOR{ float4 Color = tex2D(SamplerColor, IN.txcoord.xy); float i = 0.0; int count=1; float pDepth = tex2D(SamplerDepth, IN.txcoord.xy).r; if(pDepth > 0.925)pDepth = 0.0; for(i=0; i<=pDepth; i+=0.01){ Color += tex2D(SamplerColor, float2(IN.txcoord.x, IN.txcoord.y + (i/50))); Color += tex2D(SamplerColor, float2(IN.txcoord.x, IN.txcoord.y - (i/50))); count+=2; } Color = Color/count; Color.a = 1.0; return Color;}
Kann mir jemand weiterhelfen?
Gruß, Piet