58 lines
1.1 KiB
Plaintext
58 lines
1.1 KiB
Plaintext
import bindless;
|
|
|
|
struct VertexData
|
|
{
|
|
float4 position;
|
|
float2 texCoord0;
|
|
float2 _pad0;
|
|
};
|
|
|
|
struct CameraData
|
|
{
|
|
float4x4 model;
|
|
float4x4 view;
|
|
float4x4 projection;
|
|
};
|
|
|
|
struct PCB {
|
|
DescriptorHandle<StructuredBuffer<VertexData>> vertexBuffer;
|
|
DescriptorHandle<StructuredBuffer<CameraData>> cameraBuffer;
|
|
DescriptorHandle<Sampler2D> texture;
|
|
};
|
|
|
|
[vk::push_constant]
|
|
uniform PCB pcb;
|
|
|
|
struct VSIn {
|
|
uint vertexIndex : SV_VertexID;
|
|
};
|
|
|
|
struct VSOut
|
|
{
|
|
float4 position : SV_POSITION;
|
|
float2 texCoord0 : TEXCOORD0;
|
|
};
|
|
|
|
struct FSOut {
|
|
float4 Color;
|
|
};
|
|
|
|
[shader("vertex")]
|
|
func vsmain(VSIn input) -> VSOut {
|
|
VSOut output;
|
|
|
|
VertexData vd = pcb.vertexBuffer[input.vertexIndex];
|
|
|
|
output.position = mul(mul(mul(float4(vd.position.xyz, 1.0f), pcb.cameraBuffer[0].model), pcb.cameraBuffer[0].view), pcb.cameraBuffer[0].projection);
|
|
output.texCoord0 = vd.texCoord0;
|
|
|
|
return output;
|
|
}
|
|
|
|
[shader("fragment")]
|
|
func fsmain(VSOut input) -> FSOut {
|
|
FSOut outp;
|
|
outp.Color = pcb.vertexBuffer[0].position.rgba;
|
|
outp.Color = float4(pcb.texture.Sample(input.texCoord0).rgb, 1.0);
|
|
return outp;
|
|
} |