fwd_cpu.slang

cross platform rendering playground

src/passes/fwd_cpu/fwd_cpu.slang

911 B
#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);
}