HLSL Shaders + DirectX
 Shader Demo using ATI RenderMonkey

06 Moving texture and blinking colors

06 Moving texture and blinking colors
Vertex Shader 0
float4x4 view_proj_matrix;
float cos_time_0_X;

struct VS_OUTPUT
{
float4 Pos: POSITION;
float2 Txr1: TEXCOORD0;
};

VS_OUTPUT vs_main( float4 inPos: POSITION,
float2 Txr1: TEXCOORD0)
{
VS_OUTPUT Out;

Out.Pos = mul(view_proj_matrix, inPos);
Out.Txr1 = Txr1 * cos_time_0_X;

return Out;
}
Vertex Shader 1
float4x4 view_proj_matrix;
float4 teapot_position;
struct VS_OUTPUT
{
float4 Pos: POSITION;
};

VS_OUTPUT vs_main( float4 inPos: POSITION )
{
VS_OUTPUT Out;

//Output an offset and transformed vertex position
Out.Pos = mul(view_proj_matrix, inPos+teapot_position);

return Out;
}
Pixel Shader 0
sampler Texture0;
float4 ps_main( float4 inDiffuse: COLOR0,
float2 inTxr1: TEXCOORD0 ) : COLOR0
{
// Output color from texture, specify sampler (Texture0) with texture coordinate (inTxr1)
return tex2D(Texture0, inTxr1);
}
Pixel Shader 1
float cos_time_0_X;
float4 ps_main( float4 inDiffuse: COLOR0 ) : COLOR0
{
// Output constant color:
float4 color;
color[1] = 1.0 * cos_time_0_X;
color[2] = 1.0 * (1-cos_time_0_X);
color[0] = color[3] = 0.0;
return color;
}

05

05
Vertex Shader 0
float4x4 view_proj_matrix;

struct VS_OUTPUT
{
float4 Pos: POSITION;
float2 Txr1: TEXCOORD0;
};

VS_OUTPUT vs_main( float4 inPos: POSITION,
float2 Txr1: TEXCOORD0)
{
VS_OUTPUT Out;

Out.Pos = mul(view_proj_matrix, inPos);
Out.Txr1 = Txr1;

return Out;
}
Vertex Shader 1
float4x4 view_proj_matrix;
float4 teapot_position;
struct VS_OUTPUT
{
float4 Pos: POSITION;
};

VS_OUTPUT vs_main( float4 inPos: POSITION )
{
VS_OUTPUT Out;

//Output an offset and transformed vertex position
Out.Pos = mul(view_proj_matrix, inPos+teapot_position);

return Out;
}
Pixel Shader 0
sampler Texture0;
float4 ps_main( float4 inDiffuse: COLOR0,
float2 inTxr1: TEXCOORD0 ) : COLOR0
{
// Output color from texture, specify sampler (Texture0) with texture coordinate (inTxr1)
return tex2D(Texture0, inTxr1);
}
Pixel Shader 1
float4 ps_main( float4 inDiffuse: COLOR0 ) : COLOR0
{
// Output constant color:
float4 color;
color[1] = 1.0;
color[0] = color[2] = color[3] = 0.0;
return color;
}
04

04
Vertex Shader
float4x4 view_proj_matrix;

struct VS_OUTPUT
{
float4 Pos: POSITION;
float2 Txr1: TEXCOORD0;
};

VS_OUTPUT vs_main( float4 inPos: POSITION,
float2 Txr1: TEXCOORD0)
{
VS_OUTPUT Out;

Out.Pos = mul(view_proj_matrix, inPos);
Out.Txr1 = Txr1;

return Out;
}
Pixel Shader
sampler Texture0;
float4 ps_main( float4 inDiffuse: COLOR0,
float2 inTxr1: TEXCOORD0 ) : COLOR0
{
// Output color from texture, specify sampler (Texture0) with texture coordinate (inTxr1)
return tex2D(Texture0, inTxr1);


02-03


02-03
Vertex Shader
float4x4 view_proj_matrix;

struct VS_OUTPUT
{
float4 Pos: POSITION;
};

VS_OUTPUT vs_main( float4 inPos: POSITION )
{
VS_OUTPUT Out;

Out.Pos = mul(view_proj_matrix, inPos);

return Out;
}
Pixel Shader
float4 ps_main( ): COLOR0 //float4 inDiffuse: COLOR0 ) : COLOR0
{
// Output constant color:
float4 color = float4(0,0,0,0);
color.b = 1.0;
color.a = 1.0;
return color;
}

01

01
Vertex Shader
float4x4 view_proj_matrix;

struct VS_OUTPUT
{
float4 Pos: POSITION;
};

VS_OUTPUT vs_main( float4 inPos: POSITION )
{
VS_OUTPUT Out;

Out.Pos = mul(view_proj_matrix, inPos);

return Out;
}

Pixel Shader
float4 ps_main( float4 inDiffuse: COLOR0 ) : COLOR0
{
// Output constant color:
float4 color;
color[0] = color[3] = 1.0;
color[1] = color[2] = 0.0;
return color;
}

Referece: Shaders: For Game Programmers and Artist by Sebastien St-Laurent
20090204