Skip to content

Commit f851dbe

Browse files
committed
stuff
1 parent b5e5db7 commit f851dbe

File tree

1 file changed

+42
-31
lines changed

1 file changed

+42
-31
lines changed

shaders/src/shaders/loading_repeating_circles.rs

Lines changed: 42 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -787,7 +787,6 @@ impl LayerAlphas {
787787

788788
struct AnimationParameters {
789789
// --- General ---
790-
uv: Vec2,
791790
aa_width: f32,
792791

793792
// --- Debugging ---
@@ -799,35 +798,52 @@ struct AnimationParameters {
799798
start_circle_stroke: f32,
800799
num_circles: i32,
801800
angle_between_circles: f32,
801+
middle_circle_start_radius: f32,
802802
}
803803

804-
fn anim_discrete_circle_transition(
804+
struct AnimMid {
805+
center: Vec2,
806+
}
807+
808+
/// Terminus animation.
809+
fn anim_discrete_circle_terminus(
805810
layers: &mut LayerAlphas,
806811
params: &AnimationParameters,
807812
t_master: f32,
808-
middle_circle_radius: f32,
813+
uv: Vec2,
809814
) {
810-
let uv = params.uv;
811815
let aa_width = params.aa_width;
812816

813817
let &mut LayerAlphas {
814818
ref mut alpha_black,
815819
..
816820
} = layers;
817821

818-
let start_circle_radius = params.start_circle_radius;
819-
let start_circle_stroke = params.start_circle_stroke;
820-
let num_circles = params.num_circles;
821-
let angle_between_circles = params.angle_between_circles;
822+
let &AnimationParameters {
823+
start_circle_radius,
824+
start_circle_stroke,
825+
num_circles,
826+
angle_between_circles,
827+
middle_circle_start_radius,
828+
..
829+
} = params;
822830

823-
let t_rotation = exp_time(t_master, 0.8);
824-
let t_trail_delayed = remap_time(t_master, 0.4, 1.0);
831+
let t_radii = (remap_time(t_master, 0.0, 0.9).powf(2.0)
832+
+ exp_time(remap_time(t_master, 0.3, 1.0), 0.2) * 0.5)
833+
.clamp(0.0, 1.0);
834+
let t_rotation = remap_time(t_master, 0.4, 1.0).powf(2.5);
835+
let t_trail_delayed = remap_time(t_master, 0.6, 1.0);
825836
let t_trail = exp_time(t_trail_delayed, 0.4);
826-
let t_assist_circle_delayed = remap_time(t_master, 0.5, 0.95);
827-
let t_assist_circle = exp_time(t_assist_circle_delayed, 0.4);
828-
let t_border_circle_radii = exp_time(remap_time(t_master, 0.3, 1.0), -0.4);
829837

830-
let outer_circle_outer_radius = mix(start_circle_radius, 0.0, t_border_circle_radii);
838+
let t_assist_circle_delayed = remap_time(t_master, 0.65, 0.98);
839+
let t_assist_circle = exp_time(t_assist_circle_delayed, 0.5);
840+
841+
//let t_rotation = 0.0;
842+
//let t_trail = 0.0;
843+
//let t_assist_circle = 0.0;
844+
845+
let middle_circle_radius = mix(middle_circle_start_radius, start_circle_radius, t_radii);
846+
let outer_circle_outer_radius = mix(start_circle_radius, 0.0, t_radii);
831847
let trail_angular_extent = mix(0.0, angle_between_circles, t_trail);
832848
let outer_circle_fade = mix(1.0, 0.4, t_trail);
833849

@@ -836,7 +852,7 @@ fn anim_discrete_circle_transition(
836852
let outer_discrete_circle = rotating_discrete_circle(
837853
Vec2::ZERO,
838854
middle_circle_radius,
839-
-t_master * PI - t_rotation * TWO_PI * 5.0,
855+
-t_master * PI - t_master * t_rotation * TWO_PI * 2.0,
840856
num_circles,
841857
i,
842858
);
@@ -951,9 +967,6 @@ impl Inputs {
951967
)
952968
.position;
953969

954-
// TODO FIXME MATHSE
955-
let middle_circle_radius = middle_circle_position.y.abs().max(start_circle_radius);
956-
957970
if debug {
958971
let m_middle_circle_position_path = sdf_circle_filled(
959972
uv - (middle_circle_start_position / 2.0),
@@ -963,18 +976,7 @@ impl Inputs {
963976
layers
964977
.alpha_blue
965978
.draw_sdf(m_middle_circle_position_path, aa_width);
966-
}
967-
968-
let middle_circle_moved_distance =
969-
(middle_circle_start_position - middle_circle_position).length();
970-
// (middle_circle_start_radius + target_radius)
971-
// - (middle_circle_radius + middle_circle_moved_distance);
972979

973-
// y adjust to follow the middle circle
974-
//middle_circle_position.y -=
975-
// (middle_circle_position.y + middle_circle_radius) * (1.0 - t_master);
976-
977-
if debug {
978980
let m_start_circle =
979981
sdf_circle_filled(uv, start_circle_radius).to_outline(start_circle_stroke);
980982
layers.alpha_red.draw_sdf(m_start_circle, aa_width);
@@ -995,17 +997,26 @@ impl Inputs {
995997
}
996998

997999
let params = AnimationParameters {
998-
uv,
9991000
aa_width,
10001001
debug,
10011002
debug_stroke,
10021003
start_circle_radius,
10031004
start_circle_stroke,
10041005
num_circles,
10051006
angle_between_circles,
1007+
middle_circle_start_radius,
10061008
};
10071009

1008-
anim_discrete_circle_transition(&mut layers, &params, t_master, middle_circle_radius);
1010+
/*anim_discrete_circle_transition(
1011+
&mut layers,
1012+
&params,
1013+
mix(0.0, 1.0, remap_time(t_master, 0.0, 0.9)),
1014+
uv,
1015+
);*/
1016+
1017+
const DEPTH: usize = 20;
1018+
1019+
anim_discrete_circle_terminus(&mut layers, &params, t_master, uv - middle_circle_position);
10091020

10101021
if debug && false {
10111022
let sdf_arc_test = sdf_arc_outline(uv, -PI / 4.0, PI / 4.0, 1.0, 0.0, 0.5, -PI / 4.0, 1.0);

0 commit comments

Comments
 (0)