diff options
Diffstat (limited to 'shaders')
| -rw-r--r-- | shaders/sprite.wgsl | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/shaders/sprite.wgsl b/shaders/sprite.wgsl deleted file mode 100644 index 60b5773..0000000 --- a/shaders/sprite.wgsl +++ /dev/null @@ -1,62 +0,0 @@ - -@group(0) @binding(0) -var<uniform> camera: mat4x4<f32>; - -struct VertexInput { - @location(0) position: vec2<f32> -} - -struct InstanceInput { - @location(1) position: vec2<f32>, - @location(2) size: vec2<f32>, - @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_index: f32, -} - -struct VertexOutput { - @builtin(position) clip_position: vec4<f32>, - @location(0) texture_coordinates: vec2<f32>, - @location(1) texture_atlas_index: u32 -} - -@vertex -fn vs_main(model: VertexInput, instance: InstanceInput) -> VertexOutput { - var out: VertexOutput; - - // rotate the sprite - let rotation = -instance.rotation; - let a = vec2<f32>(cos(rotation), sin(rotation)); - let b = vec2<f32>(-a[1], a[0]); - let rotation = mat2x2<f32>(a, b); - let rotated = rotation * model.position; - - // scale the sprite - let scaled = rotated * instance.size; - - // move the sprite - let position2d = scaled + instance.position; - - // camera stuff - let position4d = vec4<f32>(position2d, instance.z_index, 1.0); - let position = camera * position4d; - - let tex_coords = vec2<f32>(model.position[0] + 0.5, 1.0 - (model.position[1] + 0.5)); - - out.clip_position = position; - out.texture_atlas_index = instance.texture_atlas_index; - out.texture_coordinates = tex_coords * instance.texture_size + instance.texture_coordinates; - return out; -} - -@group(1) @binding(0) -var t_diffuse: texture_2d<f32>; -@group(1) @binding(1) -var s_diffuse: sampler; - -@fragment -fn fs_main(in: VertexOutput) -> @location(0) vec4<f32> { - return textureSample(t_diffuse, s_diffuse, in.texture_coordinates); -}
\ No newline at end of file |
