Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

vector OffsetDirection : register(c0);

sampler Albedo : register(s0);

vector BlurSettings : register(c4);

// -------------------------------------------------------------------------
// Datatypes
// -------------------------------------------------------------------------

struct VS_INPUT1
{
vector Position : POSITION;
float2 TexPosition : TEXCOORD0;
};

struct PS_INPUT1
{
vector Position : POSITION;
float2 TexPosition : TEXCOORD0;
};

struct PS_OUTPUT1
{
vector Diffuse : COLOR0;
};

// -------------------------------------------------------------------------
// Vertexshader
// -------------------------------------------------------------------------

PS_INPUT1 VertexShader1(VS_INPUT1 input)


{
PS_INPUT1 output = (PS_INPUT1)0;

output.Position = input.Position;
output.TexPosition = input.TexPosition.xy;
return output;
}

// -------------------------------------------------------------------------
// Pixelshader
// -------------------------------------------------------------------------

PS_OUTPUT1 PixelShader1(PS_INPUT1 input)


{
PS_OUTPUT1 output = (PS_OUTPUT1)0;

output.Diffuse = tex2D(Albedo, input.TexPosition);

output.Diffuse *= BlurSettings.x;
output.Diffuse -= BlurSettings.y;
output.Diffuse *= BlurSettings.z;

return output;
}

// -------------------------------------------------------------------------
// Datatypes
// -------------------------------------------------------------------------

struct VS_INPUTTwo
{
vector Position : POSITION;
float2 TexPositionA : TEXCOORD0;
float2 TexPositionB : TEXCOORD1;
float2 TexPositionC : TEXCOORD2;
float2 TexPositionD : TEXCOORD3;
float2 TexPositionE : TEXCOORD4;
float2 TexPositionF : TEXCOORD5;
float2 TexPositionG : TEXCOORD6;
float2 TexPositionH : TEXCOORD7;
};

struct PS_INPUT2
{
vector Position : POSITION;
float2 TexPosition : TEXCOORD0;
};

// -------------------------------------------------------------------------
// Vertexshader
// -------------------------------------------------------------------------

VS_INPUTTwo VertexShader2(VS_INPUT1 input)


{
VS_INPUTTwo output = (VS_INPUTTwo)0;

float4 Offset;
Offset.xy = OffsetDirection.xy;
// Offset.x = -0.01f;
Offset.z = 0.0f;
Offset.w = 0.0f;

output.Position = input.Position;
input.TexPosition -= Offset;
output.TexPositionA = input.TexPosition.xy;
input.TexPosition -= Offset;
output.TexPositionB = input.TexPosition.xy;
input.TexPosition -= Offset;
output.TexPositionC = input.TexPosition.xy;
input.TexPosition -= Offset;
output.TexPositionD = input.TexPosition.xy;
input.TexPosition -= Offset;
output.TexPositionE = input.TexPosition.xy;
input.TexPosition -= Offset;
output.TexPositionF = input.TexPosition.xy;
input.TexPosition -= Offset;
output.TexPositionG = input.TexPosition.xy;
input.TexPosition -= Offset;
output.TexPositionH = input.TexPosition.xy;
return output;
}

// -------------------------------------------------------------------------
// Pixelshader
// -------------------------------------------------------------------------
PS_OUTPUT1 PixelShader2(VS_INPUTTwo input)
{
PS_OUTPUT1 output = (PS_OUTPUT1)0;

output.Diffuse = tex2D(Albedo, input.TexPositionA) * 1.000f;


output.Diffuse += tex2D(Albedo, input.TexPositionB) * 0.875f;
output.Diffuse += tex2D(Albedo, input.TexPositionC) * 0.750f;
output.Diffuse += tex2D(Albedo, input.TexPositionD) * 0.625f;
output.Diffuse += tex2D(Albedo, input.TexPositionE) * 0.500f;
output.Diffuse += tex2D(Albedo, input.TexPositionF) * 0.375f;
output.Diffuse += tex2D(Albedo, input.TexPositionG) * 0.250f;
output.Diffuse += tex2D(Albedo, input.TexPositionH) * 0.125f;
output.Diffuse /= 10.0f;

return output;
}

You might also like