15 e->timings.master_speed = 0.000001;
16 e->timings.ratio[0] = 0.4;
17 e->timings.ratio[1] = 0.32;
18 e->timings.ratio[2] = 0.10;
19 e->timings.ratio[3] = 0.05;
20 e->timings.ratio[4] = 0.6;
21 e->timings.offset[0] = 0;
22 e->timings.offset[1] = 100;
23 e->timings.offset[2] = 200;
24 e->timings.offset[3] = 300;
25 e->timings.offset[4] = 400;
27 e->calculate_oscillators(e->timings);
29 for (
int x = 0;
x < e->num_x;
x++) {
30 for (
int y = 0;
y < e->num_y;
y++) {
31 e->animation.dist = 0.3 * e->distance[
x][
y] * 0.8;
32 e->animation.angle = 3 * e->polar_theta[
x][
y] + e->move.radial[2];
33 e->animation.scale_x = 0.1 + (e->move.noise_angle[0]) / 10;
34 e->animation.scale_y = 0.1 + (e->move.noise_angle[1]) / 10;
35 e->animation.scale_z = 0.01;
36 e->animation.offset_y = 0;
37 e->animation.offset_x = 0;
38 e->animation.offset_z = 100 * e->move.linear[0];
40 float show1 = e->render_value(e->animation);
42 e->animation.angle = 3;
43 float show2 = e->render_value(e->animation);
46 e->pixel.red = show1 * dist;
47 e->pixel.green = (show1 - show2) * dist * 0.3;
48 e->pixel.blue = (show2 - show1) * dist;
50 if (e->distance[
x][
y] > 16) {
56 e->pixel = e->rgb_sanity_check(e->pixel);
57 e->setPixelColorInternal(
x,
y, e->pixel);
74 const fl::u8 *perm = PERLIN_NOISE;
76 e->timings.master_speed = 0.000001;
77 e->timings.ratio[0] = 0.4;
78 e->timings.ratio[1] = 0.32;
79 e->timings.ratio[2] = 0.10;
80 e->timings.ratio[3] = 0.05;
81 e->timings.ratio[4] = 0.6;
82 e->timings.offset[0] = 0;
83 e->timings.offset[1] = 100;
84 e->timings.offset[2] = 200;
85 e->timings.offset[3] = 300;
86 e->timings.offset[4] = 400;
88 e->calculate_oscillators(e->timings);
90 const int total_pixels =
mState.count;
92 constexpr fl::i32
FP_ONE =
static_cast<fl::i32
>(1) << FP::FRAC_BITS;
93 const fl::i32 cx_raw = FP(e->animation.center_x).
raw();
94 const fl::i32 cy_raw = FP(e->animation.center_y).
raw();
97 constexpr fl::i32 dist_scale_raw = FP(0.24f).
raw();
100 const fl::i32 three_raw = FP(3.0f).
raw();
101 const fl::i32 radial2_raw = FP(e->move.radial[2]).
raw();
104 const fl::i32 sx_raw = FP(0.1f + e->move.noise_angle[0] / 10.0f).
raw();
105 const fl::i32 sy_raw = FP(0.1f + e->move.noise_angle[1] / 10.0f).
raw();
108 const fl::i32 angle2_raw = FP(3.0f).
raw();
111 const fl::i32 dist_cutoff_raw = FP(16.0f).
raw();
128 for (
int i = 0; i < total_pixels; i++) {
129 const fl::i32 raw_dist =
mState.distance_raw[i];
132 if (raw_dist > dist_cutoff_raw) {
139 (
static_cast<fl::i64>(dist_scale_raw) * raw_dist) >> FP::FRAC_BITS);
143 (
static_cast<fl::i64>(three_raw) *
mState.polar_theta_raw[i]) >> FP::FRAC_BITS) + radial2_raw;
153 fl::i32 g = (show1 - show2) * 3 / 10;
154 fl::i32 b = show2 - show1;
fl::unique_ptr< Engine > mEngine