Cirno2022/script/sample/SampleVS03_HLSL.txt

64 lines
1.8 KiB
Plaintext
Raw Normal View History

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();
}
}