summaryrefslogtreecommitdiff
path: root/shaders/sprite.wgsl
diff options
context:
space:
mode:
Diffstat (limited to 'shaders/sprite.wgsl')
-rw-r--r--shaders/sprite.wgsl13
1 files changed, 10 insertions, 3 deletions
diff --git a/shaders/sprite.wgsl b/shaders/sprite.wgsl
index f8b9e7e..22225f7 100644
--- a/shaders/sprite.wgsl
+++ b/shaders/sprite.wgsl
@@ -9,12 +9,17 @@ struct VertexInput {
struct InstanceInput {
@location(1) position: vec2<f32>,
@location(2) size: vec2<f32>,
- @location(3) rotation: f32,
- @location(4) z_layer: u32
+ @location(3) texture_coordinates: vec2<f32>,
+ @location(4) texture_size: vec2<f32>,
+ @location(5) texture_atlas_index: u32,
+ @location(6) rotation: f32,
+ @location(7) z_layer: u32
}
struct VertexOutput {
- @builtin(position) clip_position: vec4<f32>
+ @builtin(position) clip_position: vec4<f32>,
+ @location(0) texture_coordinates: vec2<f32>,
+ @location(1) texture_atlas_index: u32
}
@vertex
@@ -38,6 +43,8 @@ fn vs_main(model: VertexInput, instance: InstanceInput) -> VertexOutput {
let position = camera * position4d;
out.clip_position = position;
+ out.texture_atlas_index = instance.texture_atlas_index;
+ out.texture_coordinates = (model.position + 0.5) * instance.texture_size + instance.texture_coordinates;
return out;
}