Search across packages, versions, files, declarations, and comments. Use multiple terms to narrow results (AND), and add @vertex, @fragment, or @compute to filter by shader stage.
1fn make_polka_dots(pos: vec2<f32>, time: f32) -> vec4<f32> {
2 let scaled_pos = pos * 6.0;
3 let cell = vec2<f32>(fract(scaled_pos.x), fract(scaled_pos.y));
4 var dist_from_center = distance(cell, vec2<f32>(0.5));
6 let is_even = (floor(scaled_pos.x) + floor(scaled_pos.y)) % 2.0;
8 var dot_color = vec3<f32>(0.0);
9 var is_dot = 0.0;
11 @if(!PARTY_MODE) {
12 let color1 = vec3<f32>(1.0, 0.4, 0.8); // pink
13 let color2 = vec3<f32>(0.6, 0.2, 1.0); // purple
14 dot_color = mix(color1, color2, is_even);
15 is_dot = step(dist_from_center, 0.3);
16 } @else {
17 let grid_x = floor(scaled_pos.x);
18 let grid_y = floor(scaled_pos.y);
19 let wave_speed = 3.0;
20 let wave_phase = time * wave_speed;
22 let diagonal_pos = (grid_x + grid_y) * 0.5;
23 let wave_value = sin(diagonal_pos + wave_phase);
25 let wave_normalized = (wave_value + 1.0) * 0.5;
27 let color1 = vec3<f32>(1.0, 0.3, 0.7);
28 let color2 = vec3<f32>(0.5, 0.1, 1.0);
29 let intense_color1 = vec3<f32>(1.0, 0.1, 0.9);
30 let intense_color2 = vec3<f32>(0.8, 0.0, 1.0);
32 let animated_color1 = mix(color1, intense_color1, wave_normalized);
33 let animated_color2 = mix(color2, intense_color2, wave_normalized);
35 dot_color = mix(animated_color1, animated_color2, is_even);
37 let size_mod = 0.15 * wave_value;
38 dist_from_center = dist_from_center * (1.0 - size_mod);
39 // Animate whether something is a dot by position but also time
40 is_dot = step(dist_from_center, 0.3 + wave_normalized * 0.2);
41 }
43 return vec4<f32>(dot_color * is_dot, 1.0);
Contents