port from perforce
This commit is contained in:
59
evoke-64k/ev10/cfg/psblur.txt
Normal file
59
evoke-64k/ev10/cfg/psblur.txt
Normal file
@@ -0,0 +1,59 @@
|
||||
float4 res : register(c0);
|
||||
float4 glow : register(c31);
|
||||
|
||||
sampler2D colorSampler : register(s0);
|
||||
sampler2D guideSampler : register(s4);
|
||||
|
||||
static float2 fGaussianWeights[] = {
|
||||
float2(-3.0f, 0.015625f),
|
||||
float2(-2.0f, 0.09375f),
|
||||
float2(-1.0f, 0.234375f),
|
||||
float2(0.0f, 0.3125f),
|
||||
float2(1.0f, 0.234375f),
|
||||
float2(2.0f, 0.09375f),
|
||||
float2(3.0f, 0.015625f)
|
||||
};
|
||||
|
||||
float4 ps_blur(float2 t : TEXCOORD0, uniform float2 vDir) : COLOR0
|
||||
{
|
||||
float2 vDelta = vDir * res.zw;
|
||||
float4 fColor = 0.f;
|
||||
|
||||
for(int i = 0; i < 7; i++)
|
||||
fColor += fGaussianWeights[i].y
|
||||
* tex2D(colorSampler, t + fGaussianWeights[i].x * vDelta);
|
||||
|
||||
return fColor;
|
||||
}
|
||||
float4 ps_blur_hor(float2 t : TEXCOORD0) : COLOR0 { return ps_blur(t, float2(1.f, 0.f)); }
|
||||
float4 ps_blur_ver(float2 t : TEXCOORD0) : COLOR0 { return ps_blur(t, float2(0.f, 1.f)); }
|
||||
|
||||
float4 ps_blur_bil(float2 t : TEXCOORD0, uniform float2 vDir) : COLOR0
|
||||
{
|
||||
float2 vDelta = vDir * res.zw;
|
||||
float4 fGuide = tex2D(guideSampler, t);
|
||||
|
||||
float4 fColor = 0.f;
|
||||
float fWeight = 0.f;
|
||||
|
||||
for(int i = 0; i < 7; i++)
|
||||
{
|
||||
float2 to = t + vDelta * fGaussianWeights[i].x;
|
||||
float4 fSample = tex2D(colorSampler, to);
|
||||
float fSampleWeight = (1.f - saturate(4.f * (fGuide.w - fSample.w))) * fGaussianWeights[i].y;
|
||||
fColor += fSample * fSampleWeight;
|
||||
fWeight += fSampleWeight;
|
||||
}
|
||||
|
||||
return lerp(fGuide, fColor / fWeight, fWeight);
|
||||
}
|
||||
float4 ps_blur_bil_hor(float2 t : TEXCOORD0) : COLOR0 { return ps_blur_bil(t, float2(1.f, 0.f)); }
|
||||
float4 ps_blur_bil_ver(float2 t : TEXCOORD0) : COLOR0 { return ps_blur_bil(t, float2(0.f, 1.f)); }
|
||||
|
||||
float4 ps_extract_inv_alpha(float2 t : TEXCOORD0) : COLOR0
|
||||
{
|
||||
float4 c = tex2D(colorSampler, t);
|
||||
c.a = 1.f - c.a;
|
||||
c.xyz *= c.a;
|
||||
return c * glow;
|
||||
}
|
||||
Reference in New Issue
Block a user