Migrate GLSL to Slang, text shader

This commit is contained in:
2026-09-12 23:48:30 +02:00
parent 8d5a2db342
commit f7576a941d
30 changed files with 868 additions and 632 deletions

View File

@@ -0,0 +1,53 @@
import "includes/structs";
struct Varyings {
float4 positionCS : SV_Position;
nointerpolation uint instance;
float2 texCoord;
}
struct GuiImage {
float4 tint;
float2 positionSSPX;
float2 sizePX;
float2 uvMin;
float2 uvMax;
uint16_t texture;
}
[[vk::binding(0, 0)]] ConstantBuffer<GlobalUniforms> _Global;
[[vk::binding(1, 0)]] StructuredBuffer<GuiImage> _Images;
[[vk::binding(2, 0)]] SamplerState _Sampler;
[[vk::binding(3, 0)]] Texture2D _Textures[];
static const float2 VERTICES[4] = {
float2(0, 1),
float2(1, 1),
float2(0, 0),
float2(1, 0),
};
[shader("vertex")]
Varyings vertexMain(uint vertexID : SV_VulkanVertexID, uint instanceID : SV_VulkanInstanceID) {
Varyings out;
let vertex = VERTICES[vertexID];
let image = _Images[instanceID];
let positionSSPX = vertex * image.sizePX + image.positionSSPX;
let positionCS = float4(mul(_Global.matrixSSPXtoCS, float3(positionSSPX, 1.0)), 0.0, 1.0);
let texCoord = vertex * (image.uvMax - image.uvMin) + image.uvMin;
out.positionCS = positionCS;
out.instance = instanceID;
out.texCoord = texCoord;
return out;
}
[shader("fragment")]
float4 fragmentMain(Varyings frag) : SV_Target {
let image = _Images[frag.instance];
let texel = _Textures[image.texture].Sample(_Sampler, frag.texCoord);
return texel * image.tint;
}