64 lines
1.8 KiB
Plaintext
64 lines
1.8 KiB
Plaintext
|
sampler sampler0_ : register(s0);
|
||
|
|
||
|
//The following semantic-linked global variables are provided by the engine.
|
||
|
// WORLD (float4x4)
|
||
|
// The transformation matrix of the render object.
|
||
|
// VIEW (float4x4)
|
||
|
// The view matrix. Used to transform world coordinates to camera coordinates.
|
||
|
// PROJECTION (float4x4)
|
||
|
// The projection matrix. Used to transform camera coordinates to device coordinates.
|
||
|
// FOGENABLE (bool)
|
||
|
// A boolean indicating whether fog was enabled for the render object.
|
||
|
// FOGCOLOR (float4)
|
||
|
// The color of the fog set with SetFogParam. The packing format is (r, g, b, a).
|
||
|
// FOGDIST (float2)
|
||
|
// The ranges of the fog set with SetFogParam. The packing format is (fog start, fog end).
|
||
|
|
||
|
float4x4 g_mWorld : WORLD : register(c0);
|
||
|
float4x4 g_mView : VIEW : register(c4);
|
||
|
float4x4 g_mProj : PROJECTION : register(c8);
|
||
|
|
||
|
float4 g_vFogColor : FOGCOLOR : register(c12);
|
||
|
float2 g_vFogDist : FOGDIST : register(c13);
|
||
|
|
||
|
float frame_;
|
||
|
|
||
|
struct VS_INPUT {
|
||
|
float4 position : POSITION;
|
||
|
float4 diffuse : COLOR0;
|
||
|
float2 texCoord : TEXCOORD0;
|
||
|
};
|
||
|
struct VS_OUTPUT {
|
||
|
float4 position : POSITION;
|
||
|
float4 diffuse : COLOR0;
|
||
|
float2 texCoord : TEXCOORD0;
|
||
|
float fog : FOG;
|
||
|
};
|
||
|
|
||
|
VS_OUTPUT mainVS(VS_INPUT InVs) {
|
||
|
VS_OUTPUT OutVs;
|
||
|
|
||
|
OutVs.diffuse = InVs.diffuse;
|
||
|
OutVs.texCoord = InVs.texCoord - float2(frame_, 0);
|
||
|
OutVs.position = mul(InVs.position, g_mWorld);
|
||
|
OutVs.position = mul(OutVs.position, g_mView);
|
||
|
|
||
|
OutVs.fog = saturate((g_vFogDist.y - OutVs.position.z) / (g_vFogDist.y - g_vFogDist.x));
|
||
|
|
||
|
OutVs.position = mul(OutVs.position, g_mProj);
|
||
|
|
||
|
return OutVs;
|
||
|
}
|
||
|
|
||
|
float4 mainPS(VS_OUTPUT InPs) : COLOR0 {
|
||
|
float4 color = tex2D(sampler0_, InPs.texCoord);
|
||
|
color.rgb = lerp(g_vFogColor.rgb, color.rgb, InPs.fog);
|
||
|
return color * InPs.diffuse;
|
||
|
}
|
||
|
|
||
|
technique Render {
|
||
|
pass P0 {
|
||
|
VertexShader = compile vs_3_0 mainVS();
|
||
|
PixelShader = compile ps_3_0 mainPS();
|
||
|
}
|
||
|
}
|