#include "shared.h"
#include "renderer_types.h"
[vk::push_constant]
FwdPC pc;
struct VSIn {
[[vk::location(0)]]
float3 pos : POSITION;
[[vk::location(1)]]
float3 normal : NORMAL;
[[vk::location(2)]]
float2 uv : TEXCOORD0;
[[vk::location(3)]]
float4 tangent : TANGENT;
};
struct VSOut {
float4 position : SV_Position;
float3 normal : NORMAL;
float2 uv : TEXCOORD0;
float4 tangent : TANGENT;
};
[shader("vertex")]
VSOut vsMain(VSIn input, u32 instanceID: SV_InstanceID) {
VSOut o;
FrameUBO frame = *pc.frame;
mat4 transform = frame.transforms[0].world;
vec4 world_pos = vec4(input.pos, 1.0) * transform;
o.position = world_pos * frame.view * frame.proj;
o.normal = input.normal;
o.uv = input.uv;
o.tangent = input.tangent;
return o;
}
[shader("fragment")]
vec4 fsMain(VSOut input) {
return vec4(input.normal, 1.0);
}