50 lines
1.3 KiB
HLSL
50 lines
1.3 KiB
HLSL
#define RADIUS 7
|
|
#define KERNEL_SIZE (RADIUS * 2 + 1)
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Globals.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
float weights[KERNEL_SIZE];
|
|
float2 offsets[KERNEL_SIZE];
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Textures.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
texture colorMapTexture;
|
|
|
|
sampler2D colorMap = sampler_state
|
|
{
|
|
Texture = <colorMapTexture>;
|
|
MipFilter = Linear;
|
|
MinFilter = Linear;
|
|
MagFilter = Linear;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Pixel Shaders.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
float4 PS_GaussianBlur(float2 texCoord : TEXCOORD) : COLOR0
|
|
{
|
|
float4 color = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
|
|
|
for (int i = 0; i < KERNEL_SIZE; ++i)
|
|
color += tex2D(colorMap, texCoord + offsets[i]) * weights[i];
|
|
|
|
return color;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Techniques.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
technique GaussianBlur
|
|
{
|
|
pass
|
|
{
|
|
PixelShader = compile ps_2_0 PS_GaussianBlur();
|
|
}
|
|
}
|