blob: db0eae28e36c6a88cbbe5d851afa4e669d11d8d7 [file] [log] [blame]
Ben Clayton73ced332022-01-21 22:38:16 +00001struct Time {
James Price3b671cb2022-03-28 14:31:22 +00002 value : f32,
Ben Clayton73ced332022-01-21 22:38:16 +00003}
4
5struct Uniforms {
James Price3b671cb2022-03-28 14:31:22 +00006 scale : f32,
7 offsetX : f32,
8 offsetY : f32,
9 scalar : f32,
10 scalarOffset : f32,
Ben Clayton73ced332022-01-21 22:38:16 +000011}
12
13@binding(0) @group(0) var<uniform> time : Time;
14
15@binding(1) @group(0) var<uniform> uniforms : Uniforms;
16
17struct VertexOutput {
18 @builtin(position)
James Price3b671cb2022-03-28 14:31:22 +000019 Position : vec4<f32>,
Ben Clayton73ced332022-01-21 22:38:16 +000020 @location(0)
James Price3b671cb2022-03-28 14:31:22 +000021 v_color : vec4<f32>,
Ben Clayton73ced332022-01-21 22:38:16 +000022}
23
dan sinclairb29892b2022-06-07 13:55:34 +000024@vertex
Ben Clayton73ced332022-01-21 22:38:16 +000025fn 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 sinclairb29892b2022-06-07 13:55:34 +000045@fragment
Ben Clayton73ced332022-01-21 22:38:16 +000046fn frag_main(@location(0) v_color : vec4<f32>) -> @location(0) vec4<f32> {
47 return v_color;
48}