Blur shader

From GameStudio Wiki

Jump to: navigation, search

Image:blur.JPG This is a simple blur shader.

Tweakables

  • For better performance -in case you need it- cut out some passes. This will make things faster but at the cost of beauty.
  • Play with the vertex compilation values for the offset to tweak the gradient of the blur.
  • Play with the pixel compilation values to adjust transparency.

Code

texture entSkin1;
float4x4 matWorldViewProj;

sampler basemap = sampler_state
{
Texture = <entSkin1>;
};

void blur1VS(
uniform float exten,
in float4 inNormal : NORMAL0,
in float4 inPosition : POSITION0,
in float4 inTexcoord : TEXCOORD0,

out float4 outPosition : POSITION0,
out float4 outTexcoord : TEXCOORD0)
{
inPosition.xyz += inNormal/exten;
outTexcoord = inTexcoord;
outPosition = mul(inPosition, matWorldViewProj);
}

void blur1PS (
uniform float alpha,
in float4 inTexcoord : TEXCOORD0,
out float4 outColor : COLOR0)
{

outColor = tex2D(basemap, inTexcoord.xy);
outColor.a=alpha;

}



void mainVS(
in float4 inNormal : NORMAL0,
in float4 inPosition : POSITION0,
in float4 inTexcoord : TEXCOORD0,

out float4 outPosition : POSITION0,
out float4 outTexcoord : TEXCOORD0)
{
outTexcoord = inTexcoord;
outPosition = mul(inPosition, matWorldViewProj);
}

void mainPS(in float4 inTexcoord : TEXCOORD0, out float4 outColor : COLOR0) {
outColor = tex2D(basemap, inTexcoord.xy);
outColor.a=1;
}

technique t1 {
pass p0 {
ZENABLE = TRUE;
zwriteenable=true;

AlphaBlendEnable = true;
VertexShader = compile vs_1_1 mainVS();
PixelShader = compile ps_2_0 mainPS();
}
pass p1 {
ZENABLE = TRUE;
zwriteenable=true;

AlphaBlendEnable = true;
VertexShader = compile vs_1_1 blur1VS(10);
PixelShader = compile ps_2_0 blur1PS(0.9);
}
pass p2 {
zwriteenable=true;

ZENABLE = TRUE;
AlphaBlendEnable = true;
VertexShader = compile vs_1_1 blur1VS(8);
PixelShader = compile ps_2_0 blur1PS(0.9);
}
pass p3 {
zwriteenable=true;

ZENABLE = TRUE;
AlphaBlendEnable = true;
VertexShader = compile vs_1_1 blur1VS(7);
PixelShader = compile ps_2_0 blur1PS(0.7);
}
pass p4 {
zwriteenable=true;

AlphaBlendEnable = true;
VertexShader = compile vs_1_1 blur1VS(6);
PixelShader = compile ps_2_0 blur1PS(0.7);
}
pass p5 {
zwriteenable=true;

ZENABLE = TRUE;
AlphaBlendEnable = true;
VertexShader = compile vs_1_1 blur1VS(5);
PixelShader = compile ps_2_0 blur1PS(0.5);
}
pass p6 {
zwriteenable=true;

ZENABLE = TRUE;
AlphaBlendEnable = true;
VertexShader = compile vs_1_1 blur1VS(4);
PixelShader = compile ps_2_0 blur1PS(0.5);
}
pass p7 {
zwriteenable=true;

ZENABLE = TRUE;
AlphaBlendEnable = true;
VertexShader = compile vs_1_1 blur1VS(3);
PixelShader = compile ps_2_0 blur1PS(0.3);
}
pass p8 {
zwriteenable=true;
zwriteenable=true;

ZENABLE = TRUE;
AlphaBlendEnable = true;
VertexShader = compile vs_1_1 blur1VS(2);
PixelShader = compile ps_2_0 blur1PS(0.3);
}
pass p9 {
zwriteenable=true;
ZENABLE = TRUE;
AlphaBlendEnable = true;
VertexShader = compile vs_1_1 blur1VS(1);
PixelShader = compile ps_2_0 blur1PS(0.1);
}



}
Personal tools