DYT/Tool/TritonSDK/Resources/Quad.hlsl
2024-12-25 22:48:51 +08:00

65 lines
1.4 KiB
HLSL

Texture2D g_TextureDiffuse;
SamplerState g_SamplerLinear
{
Filter = MIN_MAG_MIP_LINEAR;
AddressU = Clamp;
AddressV = Clamp;
};
//--------------------------------------------------------------------------------------
// Constant Buffers
//--------------------------------------------------------------------------------------
cbuffer cbPerFrame : register( b0 )
{
float viewport_width;
float viewport_height;
float window_xpos;
float window_ypos;
float window_width;
float window_height;
float pad[2];
};
struct VS_INPUT
{
float3 vPosition : POSITION;
float2 vTexCoord0 : TEXCOORD0;
};
struct VS_OUTPUT
{
float2 vTexCoord0 : TEXCOORD0;
float4 vPosition : SV_POSITION;
};
struct PS_INPUT
{
float2 vTexCoord0 : TEXCOORD0;
};
VS_OUTPUT QuadVS( VS_INPUT Input )
{
VS_OUTPUT Output;
float2 coords = Input.vPosition.xy;
coords = coords*0.5 + 0.5;
coords = coords*float2(window_width/viewport_width, window_height/viewport_height);
coords = coords*2 - 1;
coords += float2(window_xpos/viewport_width,window_ypos/viewport_height);
Output.vPosition = float4(coords,0,1);
Output.vTexCoord0 = Input.vTexCoord0;
return Output;
}
float4 QuadPS( PS_INPUT Input) : SV_TARGET
{
float2 vTexCoord0Mod = Input.vTexCoord0;
vTexCoord0Mod.y = 1.0f - vTexCoord0Mod.y;
return g_TextureDiffuse.Sample( g_SamplerLinear, vTexCoord0Mod );
}