From c29555bddac1c0027bf6e15d91e219adaa088065 Mon Sep 17 00:00:00 2001 From: Micha White Date: Sat, 24 Sep 2022 18:20:46 -0400 Subject: Implemented a camera --- shaders/sprite.wgsl | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'shaders/sprite.wgsl') diff --git a/shaders/sprite.wgsl b/shaders/sprite.wgsl index b8ce42b..2358f43 100644 --- a/shaders/sprite.wgsl +++ b/shaders/sprite.wgsl @@ -1,4 +1,7 @@ +@group(0) @binding(0) +var camera: mat4x4; + struct VertexInput { @location(0) position: vec2 } @@ -7,7 +10,7 @@ struct InstanceInput { @location(1) position: vec2, @location(2) size: vec2, @location(3) rotation: f32, - @location(4) z_layer: i32 + @location(4) z_layer: u32 } struct VertexOutput { @@ -25,13 +28,16 @@ fn vs_main(model: VertexInput, instance: InstanceInput) -> VertexOutput { let rotated = rotation * model.position; // scale the sprite - let x = rotated[0] * instance.size[0]; - let y = rotated[1] * instance.size[1]; + let scaled = rotated * instance.size; // move the sprite - let position = vec2(x, y) + instance.position; + let position2d = scaled + instance.position; + + // camera stuff + let position4d = vec4(position2d, f32(instance.z_layer), 1.0); + out.clip_position = camera * position4d; + //out.clip_position = position4d; - out.clip_position = vec4(position, f32(instance.z_layer), 1.0); return out; } -- cgit v1.2.3