13 auto *e = ctx.mEngine.get();
16 e->timings.master_speed = 0.000001;
17 e->timings.ratio[0] = 0.4;
18 e->timings.ratio[1] = 0.32;
19 e->timings.ratio[2] = 0.10;
20 e->timings.ratio[3] = 0.05;
21 e->timings.ratio[4] = 0.6;
22 e->timings.offset[0] = 0;
23 e->timings.offset[1] = 100;
24 e->timings.offset[2] = 200;
25 e->timings.offset[3] = 300;
26 e->timings.offset[4] = 400;
28 e->calculate_oscillators(e->timings);
30 for (
int x = 0;
x < e->num_x;
x++) {
31 for (
int y = 0;
y < e->num_y;
y++) {
32 e->animation.dist = 0.3 * e->distance[
x][
y] * 0.8;
33 e->animation.angle = 3 * e->polar_theta[
x][
y] + e->move.radial[2];
34 e->animation.scale_x = 0.1 + (e->move.noise_angle[0]) / 10;
35 e->animation.scale_y = 0.1 + (e->move.noise_angle[1]) / 10;
36 e->animation.scale_z = 0.01;
37 e->animation.offset_y = 0;
38 e->animation.offset_x = 0;
39 e->animation.offset_z = 100 * e->move.linear[0];
41 float show1 = e->render_value(e->animation);
43 e->animation.angle = 3;
44 float show2 = e->render_value(e->animation);
47 e->pixel.red = show1 * dist;
48 e->pixel.green = (show1 - show2) * dist * 0.3;
49 e->pixel.blue = (show2 - show1) * dist;
51 if (e->distance[
x][
y] > 16) {
57 e->pixel = e->rgb_sanity_check(e->pixel);
58 e->setPixelColorInternal(
x,
y, e->pixel);
71 auto *e = ctx.mEngine.get();
75 const fl::u8 *perm = PERLIN_NOISE;
77 e->timings.master_speed = 0.000001;
78 e->timings.ratio[0] = 0.4;
79 e->timings.ratio[1] = 0.32;
80 e->timings.ratio[2] = 0.10;
81 e->timings.ratio[3] = 0.05;
82 e->timings.ratio[4] = 0.6;
83 e->timings.offset[0] = 0;
84 e->timings.offset[1] = 100;
85 e->timings.offset[2] = 200;
86 e->timings.offset[3] = 300;
87 e->timings.offset[4] = 400;
89 e->calculate_oscillators(e->timings);
91 const int total_pixels =
mState.count;
93 constexpr fl::i32
FP_ONE =
static_cast<fl::i32
>(1) << FP::FRAC_BITS;
94 const fl::i32 cx_raw = FP(e->animation.center_x).
raw();
95 const fl::i32 cy_raw = FP(e->animation.center_y).
raw();
98 constexpr fl::i32 dist_scale_raw = FP(0.24f).
raw();
101 const fl::i32 three_raw = FP(3.0f).
raw();
102 const fl::i32 radial2_raw = FP(e->move.radial[2]).
raw();
105 const fl::i32 sx_raw = FP(0.1f + e->move.noise_angle[0] / 10.0f).
raw();
106 const fl::i32 sy_raw = FP(0.1f + e->move.noise_angle[1] / 10.0f).
raw();
109 const fl::i32 angle2_raw = FP(3.0f).
raw();
112 const fl::i32 dist_cutoff_raw = FP(16.0f).
raw();
129 for (
int i = 0; i < total_pixels; i++) {
130 const fl::i32 raw_dist =
mState.distance_raw[i];
133 if (raw_dist > dist_cutoff_raw) {
140 (
static_cast<fl::i64
>(dist_scale_raw) * raw_dist) >> FP::FRAC_BITS);
144 (
static_cast<fl::i64
>(three_raw) *
mState.polar_theta_raw[i]) >> FP::FRAC_BITS) + radial2_raw;
154 fl::i32
g = (show1 - show2) * 3 / 10;
155 fl::i32 b = show2 - show1;