48 lines
902 B
Plaintext
48 lines
902 B
Plaintext
// Simple blur filter
|
|
|
|
const float2 samples[8] = {
|
|
{-1, 1},
|
|
{-1, 0},
|
|
{-1, -1},
|
|
{0, -1},
|
|
{1, -1},
|
|
{1, 0},
|
|
{1, 1},
|
|
{0, 1}
|
|
};
|
|
|
|
float4 blur(
|
|
|
|
in float2 texCoord: TEXCOORD0,
|
|
uniform float sampleDistance: register(c0),
|
|
uniform sampler Blur0: register(s0)
|
|
|
|
) : COLOR
|
|
{
|
|
float4 sum = tex2D(Blur0, texCoord);
|
|
for (int i = 0; i < 8; ++i){
|
|
sum += tex2D(Blur0, texCoord + sampleDistance * samples[i]);
|
|
}
|
|
return sum / 9;
|
|
}
|
|
|
|
|
|
|
|
float4 blend
|
|
(
|
|
in float2 texCoord: TEXCOORD0,
|
|
|
|
uniform sampler Blur0 : register(s0),
|
|
uniform sampler Blur1 : register(s1),
|
|
|
|
uniform float focus: register(c0),
|
|
uniform float range: register(c1)
|
|
) : COLOR
|
|
{
|
|
float4 sharp = tex2D(Blur0, texCoord);
|
|
float4 blur = tex2D(Blur1, texCoord);
|
|
|
|
// alpha channel of sharp RT has depth info
|
|
return lerp(sharp, blur, saturate(range * abs(focus - sharp.a)));
|
|
}
|