52 lines
1.1 KiB
HLSL
52 lines
1.1 KiB
HLSL
|
|
static const float3 Quad[] =
|
|
{
|
|
float3(-1, -1, 0),
|
|
float3( 1, -1, 0),
|
|
float3( 1, 1, 0),
|
|
float3( 1, 1, 0),
|
|
float3(-1, 1, 0),
|
|
float3(-1, -1, 0),
|
|
};
|
|
|
|
|
|
cbuffer Transforms : register(b0)
|
|
{
|
|
float4x4 CameraToClipSpace;
|
|
float4x4 ClipSpaceToCamera;
|
|
float4x4 WorldToCamera;
|
|
float4x4 CameraToWorld;
|
|
float4x4 WorldToClipSpace;
|
|
float4x4 ClipSpaceToWorld;
|
|
float4x4 ObjectToWorld;
|
|
float4x4 WorldToObject;
|
|
float4x4 ObjectToCamera;
|
|
float4x4 ObjectToClipSpace;
|
|
};
|
|
|
|
cbuffer Params : register(b1)
|
|
{
|
|
float4 Color;
|
|
float Width;
|
|
float Height;
|
|
};
|
|
|
|
struct vsOutput
|
|
{
|
|
float4 position : SV_POSITION;
|
|
float4 posInWorld : POSITION;
|
|
float2 texCoord : TEXCOORD;
|
|
};
|
|
|
|
vsOutput vsMain(uint vertexId: SV_VertexID)
|
|
{
|
|
vsOutput output;
|
|
float2 quadVertex = Quad[vertexId].xy;
|
|
float2 quadVertexInObject = quadVertex * float2(Width, Height);
|
|
output.posInWorld = mul(float4(quadVertexInObject, 0, 1), ObjectToWorld);
|
|
output.position = mul(output.posInWorld, WorldToClipSpace);
|
|
output.texCoord = quadVertex*float2(0.5, -0.5) + 0.5;
|
|
|
|
return output;
|
|
}
|