diff options
Diffstat (limited to 'shaders')
| -rw-r--r-- | shaders/sprite.wgsl | 13 |
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; } |
