#include "shared.h"
#include "renderer_types.h"
struct VsIn {
[[vk::location(0)]]
vec2 pos;
[[vk::location(1)]]
vec2 uv;
[[vk::location(2)]]
vec4 col;
};
struct VsOut {
vec4 clip_pos : SV_Position;
vec4 col : TEXCOORD0;
vec2 uv : TEXCOORD1;
};
[[vk::push_constant]]
ImGuiPushConstants pc;
[shader("vertex")]
VsOut vsMain(VsIn input) {
VsOut o;
vec2 fb = input.pos * pc.scale + pc.translate;
o.clip_pos = vec4(2.0f * fb.x / pc.display_size.x - 1.0f, 1.0f - 2.0f * fb.y / pc.display_size.y, 0.0f, 1.0f);
o.col = input.col;
o.uv = input.uv;
return o;
}
[shader("fragment")]
vec4 fsMain(VsOut input) : SV_Target {
return pc.tex.Sample(pc.samp, input.uv) * input.col;
}