diff options
| author | Micha White <botahamec@outlook.com> | 2022-10-20 20:39:44 -0400 |
|---|---|---|
| committer | Micha White <botahamec@outlook.com> | 2022-10-20 20:39:44 -0400 |
| commit | 93347346e8bd8f7412ae03a0858dd307a1df2e0d (patch) | |
| tree | 17805956857c76b5fed3f47a821fcdf6141cf7a6 /shaders/sprite.wgsl | |
| parent | e337741969160603f06a7f2b30cda375eeef99fb (diff) | |
Moved files into workspace
Diffstat (limited to 'shaders/sprite.wgsl')
| -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 |
