diff options
| author | Tengu712 <genreihoutengu@gmail.com> | 2026-10-01 01:53:23 +0900 |
|---|---|---|
| committer | Tengu712 <genreihoutengu@gmail.com> | 2026-10-01 01:53:23 +0900 |
| commit | 2c104d7936193bb19eb52b3e4d47657ffb18a9d7 (patch) | |
| tree | 6f90ea406a1506bbb37ee3aea52a29278524074a /src/shader.wgsl | |
| parent | e3835c956011c217e498b272490005dca457d402 (diff) | |
render text
Diffstat (limited to 'src/shader.wgsl')
| -rw-r--r-- | src/shader.wgsl | 22 |
1 files changed, 17 insertions, 5 deletions
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<f32>; +struct Instance { + position: vec2<f32>, + scale: vec2<f32>, + uv: vec4<f32>, +} struct VertexOutput { @builtin(position) position: vec4<f32>, @location(0) uv: vec2<f32>, } +@group(0) @binding(0) var<storage, read> instances: array<Instance>; + +@group(1) @binding(0) var tex_sampler: sampler; +@group(1) @binding(1) var font_tex: texture_2d<f32>; + @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>(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<f32>(uv.x - 0.5, uv.y - 0.5, 0.0, 1.0); - out.uv = uv; + out.position = vec4<f32>(instance.position + (uv - 0.5) * instance.scale * 2.0, 0.0, 1.0); + out.uv = instance.uv.xy + vec2<f32>(uv.x, 1.0 - uv.y) * instance.uv.zw; return out; } |
