From 2c104d7936193bb19eb52b3e4d47657ffb18a9d7 Mon Sep 17 00:00:00 2001 From: Tengu712 Date: Thu, 1 Oct 2026 01:53:23 +0900 Subject: render text --- src/shader.wgsl | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'src/shader.wgsl') diff --git a/src/shader.wgsl b/src/shader.wgsl index c154cc4..e0b34f4 100644 --- a/src/shader.wgsl +++ b/src/shader.wgsl @@ -1,18 +1,30 @@ -@group(0) @binding(0) var tex_sampler: sampler; -@group(0) @binding(1) var font_tex: texture_2d; +struct Instance { + position: vec2, + scale: vec2, + uv: vec4, +} struct VertexOutput { @builtin(position) position: vec4, @location(0) uv: vec2, } +@group(0) @binding(0) var instances: array; + +@group(1) @binding(0) var tex_sampler: sampler; +@group(1) @binding(1) var font_tex: texture_2d; + @vertex -fn vs_main(@builtin(vertex_index) in_vertex_index: u32) -> VertexOutput { +fn vs_main( + @builtin(vertex_index) in_vertex_index: u32, + @builtin(instance_index) in_instance_index: u32, +) -> VertexOutput { let uv = vec2(f32((in_vertex_index << 1) & 2), f32(in_vertex_index & 2)) / 2.0; + let instance = instances[in_instance_index]; var out: VertexOutput; - out.position = vec4(uv.x - 0.5, uv.y - 0.5, 0.0, 1.0); - out.uv = uv; + out.position = vec4(instance.position + (uv - 0.5) * instance.scale * 2.0, 0.0, 1.0); + out.uv = instance.uv.xy + vec2(uv.x, 1.0 - uv.y) * instance.uv.zw; return out; } -- cgit v1.3.1