Ben Clayton | 73ced33 | 2022-01-21 22:38:16 +0000 | [diff] [blame] | 1 | struct Time { |
James Price | 3b671cb | 2022-03-28 14:31:22 +0000 | [diff] [blame] | 2 | value : f32, |
Ben Clayton | 73ced33 | 2022-01-21 22:38:16 +0000 | [diff] [blame] | 3 | } |
| 4 | |
| 5 | struct Uniforms { |
James Price | 3b671cb | 2022-03-28 14:31:22 +0000 | [diff] [blame] | 6 | scale : f32, |
| 7 | offsetX : f32, |
| 8 | offsetY : f32, |
| 9 | scalar : f32, |
| 10 | scalarOffset : f32, |
Ben Clayton | 73ced33 | 2022-01-21 22:38:16 +0000 | [diff] [blame] | 11 | } |
| 12 | |
| 13 | @binding(0) @group(0) var<uniform> time : Time; |
| 14 | |
| 15 | @binding(1) @group(0) var<uniform> uniforms : Uniforms; |
| 16 | |
| 17 | struct VertexOutput { |
| 18 | @builtin(position) |
James Price | 3b671cb | 2022-03-28 14:31:22 +0000 | [diff] [blame] | 19 | Position : vec4<f32>, |
Ben Clayton | 73ced33 | 2022-01-21 22:38:16 +0000 | [diff] [blame] | 20 | @location(0) |
James Price | 3b671cb | 2022-03-28 14:31:22 +0000 | [diff] [blame] | 21 | v_color : vec4<f32>, |
Ben Clayton | 73ced33 | 2022-01-21 22:38:16 +0000 | [diff] [blame] | 22 | } |
| 23 | |
dan sinclair | b29892b | 2022-06-07 13:55:34 +0000 | [diff] [blame] | 24 | @vertex |
Ben Clayton | 73ced33 | 2022-01-21 22:38:16 +0000 | [diff] [blame] | 25 | fn vert_main(@location(0) position : vec4<f32>, @location(1) color : vec4<f32>) -> VertexOutput { |
| 26 | var fade : f32 = ((uniforms.scalarOffset + ((time.value * uniforms.scalar) / 10.0)) % 1.0); |
| 27 | if ((fade < 0.5)) { |
| 28 | fade = (fade * 2.0); |
| 29 | } else { |
| 30 | fade = ((1.0 - fade) * 2.0); |
| 31 | } |
| 32 | var xpos : f32 = (position.x * uniforms.scale); |
| 33 | var ypos : f32 = (position.y * uniforms.scale); |
| 34 | var angle : f32 = ((3.141590118 * 2.0) * fade); |
| 35 | var xrot : f32 = ((xpos * cos(angle)) - (ypos * sin(angle))); |
| 36 | var yrot : f32 = ((xpos * sin(angle)) + (ypos * cos(angle))); |
| 37 | xpos = (xrot + uniforms.offsetX); |
| 38 | ypos = (yrot + uniforms.offsetY); |
| 39 | var output : VertexOutput; |
| 40 | output.v_color = (vec4<f32>(fade, (1.0 - fade), 0.0, 1.0) + color); |
| 41 | output.Position = vec4<f32>(xpos, ypos, 0.0, 1.0); |
| 42 | return output; |
| 43 | } |
| 44 | |
dan sinclair | b29892b | 2022-06-07 13:55:34 +0000 | [diff] [blame] | 45 | @fragment |
Ben Clayton | 73ced33 | 2022-01-21 22:38:16 +0000 | [diff] [blame] | 46 | fn frag_main(@location(0) v_color : vec4<f32>) -> @location(0) vec4<f32> { |
| 47 | return v_color; |
| 48 | } |