// postfx_vert.msl.h - Metal Shading Language del vertex shader del postpro
// © 2026 JailDesigner
//
// IMPORTANT: mantenir sincronitzat a mà amb shaders/postfx.vert.glsl. SDL3 GPU
// compila aquest string MSL en runtime; no hi ha generador automàtic.
//
// Fullscreen triangle: 3 vèrtexs en (-1,-1), (3,-1), (-1,3) generats per
// [[vertex_id]]. UV.y invertida per compensar la diferència de convenció
// entre clip-space del line shader (Y-flip) i el mostreig SDL_gpu (origen
// top-left). Sense uniforms ni vertex buffers (DrawPrimitives vertex_count=3).

#pragma once
#ifdef __APPLE__

namespace Rendering::GPU::Msl {

inline constexpr const char* POSTFX_VERT_MSL = R"(
#include <metal_stdlib>
using namespace metal;

struct PostVOut {
    float4 pos [[position]];
    float2 uv;
};

vertex PostVOut postfx_vs(uint vid [[vertex_id]]) {
    const float2 positions[3] = { {-1.0, -1.0}, { 3.0, -1.0}, {-1.0,  3.0} };
    const float2 uvs[3]       = { { 0.0,  1.0}, { 2.0,  1.0}, { 0.0, -1.0} };
    PostVOut out;
    out.pos = float4(positions[vid], 0.0, 1.0);
    out.uv  = uvs[vid];
    return out;
}
)";

}  // namespace Rendering::GPU::Msl

#endif  // __APPLE__
