vulkan/shader/ui/solid.hlsl

39 lines
840 B
HLSL

struct VSInput
{
float2 Position : POSITION0;
float2 Texture : TEXCOORD0;
// per-instance
int2 InstancePosition : InstancePosition;
int2 InstanceSize : InstanceSize;
float4 Color : Color;
};
struct VSOutput
{
float4 Position : SV_POSITION;
float2 Texture : Texture;
float4 Color : Color;
};
[shader("vertex")]
VSOutput VSMain(VSInput input)
{
float2 inversePixel = float2(1.0 / 1280.0, 1.0 / 720.0);
float2 position = (input.Texture * input.InstanceSize + input.InstancePosition) * inversePixel;
VSOutput output = (VSOutput)0;
output.Position = float4(position * 2.0 - 1.0, 0, 1);
output.Texture = input.Texture;
output.Color = input.Color.zyxw;
return output;
}
[shader("pixel")]
float4 PSMain(VSOutput input) : SV_TARGET
{
//return float4(input.Texture, 0, 1);
return float4(input.Color.xyzw);
}