HLSL Shader
The shader used in the SlideShow for the Shader object is written in high-level shading language (HLSL). HLSL was developed by Microsoft for DirectX 9.
Shaders suitable for Shader object are populated with some default values.
Default values
If a Shader defines the following parameters (as uniform external <Typ> <Name> ) they are assigned according to the SlideShow.
gTime: float- elapsed time in secondsgProgress: float- A numerical value from 0 to 1 that runs over the total duration of the ShaderObject. In the beginning it is 0.0, 1.0 at the end.gOpacity: float- Opacity (0.0 = fully transparent (invisible), 1.0 = fully visible, inbetween = "semi"-transparent)
Additional parameters
Any additional parameters can be defined in the shader (according to the HLSL standard). These parameters can be loaded via the script functions (SetParamXXX) of the shader object.
Textures in Shader
The Shader object provides its own texture for each track or for the background. These are provided in Shader under gTexture0 to gTexture<N>. It depends on the graphics card or the ShaderModels used, how many textures can be used simultaneously in a shader.
gTexture0: texture- first texturegTexture1: texture- second texture- etc.
RenderTargets in Shader
Multipass Shader
Minimal Shader: minimal.fx
This minimum shader does nothing more than to present the image as it is.
uniform extern float4x4 gWVP : WorldViewProjection; // Transformation matrix, which needs to be applied
uniform extern texture gTexture0; // first texture
sampler Texture0Sampler = sampler_state
{
Texture = <gTexture0>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = LINEAR;
AddressU = MIRROR;
AddressV = MIRROR;
};
struct OutputVS
{
float4 posH: POSITION0;
float2 tex0: TEXCOORD0;
};
// Vertex shader transforms the points in the 3D geometry
OutputVS mainVS(float3 pos : POSITION, float2 tex0: TEXCOORD0) {
OutputVS outVS;
outVS.tex0 = tex0.xy; // pass texture coordinates
outVS.posH = mul(float4(pos.xyz, 1.0), gWVP); // transform vertex coordinates. This is important!
return outVS;
}
// Pixel shader calculates the actual color values for a pixel
float4 mainPS(float2 tex0: TEXCOORD0) : COLOR {
return tex2D(Texture0Sampler, tex0);
}
technique technique0 {
pass p0 {
VertexShader = compile vs_2_0 mainVS();
PixelShader = compile ps_2_0 mainPS();
CullMode = None;
FillMode = Solid;
}
}