type = fancymenu_layout

layout-meta {
  identifier = connect_screen
  render_custom_elements_behind_vanilla = false
  last_edited_time = 0
  is_enabled = true
  randommode = false
  randomgroup = 1
  randomonlyfirsttime = false
  layout_index = 0
}

menu_background {
  instance_identifier = 97be3012-ea37-4fa0-b55f-bed963dcddd8-toz
  background_type = glsl
  show_background = true
  inline_shader_source = // Teachings of Zeta - "Moonlit harbor"%%!serialized_property_newline!%%// Pixel-art loading-screen background for FancyMenu / Drippy (Shadertoy-style, #version 150).%%!serialized_property_newline!%%// Night palette (teal / navy / moon silver, warm lamps) - the title screen uses "Zeta at dusk".%%!serialized_property_newline!%%// Generated from zeta_harbor.template.glsl - edit the template, then re-run gen_menu_art.py.%%!serialized_property_newline!%%%%!serialized_property_newline!%%// generated by modpack_pipeline/menu/gen_menu_art.py - atlas 384x517%%!serialized_property_newline!%%const ivec4 R_MOUNT = ivec4(0, 2, 384, 44); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_HILLS = ivec4(0, 47, 384, 30); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_VIADUCT = ivec4(0, 78, 384, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_TOWN_FAR = ivec4(0, 103, 384, 38); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_TOWN_NEAR = ivec4(0, 142, 384, 30); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_QUAY = ivec4(0, 173, 384, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_SHIP_BIG = ivec4(0, 198, 76, 32); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_SHIP_SMALL = ivec4(153, 198, 41, 17); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_LOCO = ivec4(236, 198, 28, 17); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_CAR = ivec4(293, 198, 22, 15); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_MILL = ivec4(338, 198, 14, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_BLADES = ivec4(0, 231, 30, 30); // 6 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_BIG = ivec4(0, 262, 70, 70); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_MID = ivec4(0, 333, 46, 46); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_SMALL = ivec4(185, 333, 34, 34); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_A = ivec4(0, 380, 64, 15); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_B = ivec4(65, 380, 46, 12); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_C = ivec4(112, 380, 30, 9); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_HARBOR = ivec4(0, 396, 384, 40); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_PIER = ivec4(0, 437, 384, 22); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_LIGHTHOUSE = ivec4(0, 460, 20, 56); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_MAST = ivec4(21, 460, 12, 50); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_STEAMBOAT = ivec4(34, 460, 52, 24); // 2 frame(s)%%!serialized_property_newline!%%// chimney tops: x in strip, y above strip bottom, size%%!serialized_property_newline!%%const int N_CHIM_NEAR = 4;%%!serialized_property_newline!%%const vec3 CHIM_NEAR[4] = vec3[4](vec3(13.0, 20.2, 1.0), vec3(74.0, 30.0, 1.6), vec3(114.0, 29.0, 1.6), vec3(378.0, 18.8, 1.0));%%!serialized_property_newline!%%const int N_CHIM_FAR = 6;%%!serialized_property_newline!%%const vec3 CHIM_FAR[6] = vec3[6](vec3(67.0, 20.2, 1.0), vec3(94.0, 29.8, 1.0), vec3(160.0, 26.8, 1.0), vec3(205.0, 29.0, 1.6), vec3(284.0, 25.9, 1.0), vec3(352.0, 33.6, 1.0));%%!serialized_property_newline!%%const int N_CHIM_HARBOR = 2;%%!serialized_property_newline!%%const vec3 CHIM_HARBOR[2] = vec3[2](vec3(310.5, 31.0, 1.6), vec3(321.5, 31.0, 1.6));%%!serialized_property_newline!%%const float STRIP_W = 384.0;%%!serialized_property_newline!%%const vec2 MILL = vec2(46.0, 17.0); // windmill base in the hills strip%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define PIXW 320.0%%!serialized_property_newline!%%#define PI 3.14159265%%!serialized_property_newline!%%%%!serialized_property_newline!%%float H;%%!serialized_property_newline!%%bool TOP_FIRST;%%!serialized_property_newline!%%ivec2 ATLAS_SIZE;%%!serialized_property_newline!%%%%!serialized_property_newline!%%float hash11(float p) { p = fract(p * 0.1031); p *= p + 33.33; p *= p + p; return fract(p); }%%!serialized_property_newline!%%float hash21(vec2 p) { vec3 p3 = fract(vec3(p.xyx) * 0.1031); p3 += dot(p3, p3.yzx + 33.33); return fract((p3.x + p3.y) * p3.z); }%%!serialized_property_newline!%%vec3 hexrgb(int h) { return vec3(float((h >> 16) & 255), float((h >> 8) & 255), float(h & 255)) / 255.0; }%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec4 texel(int x, int y) {%%!serialized_property_newline!%%    int ty = TOP_FIRST ? y : ATLAS_SIZE.y - 1 - y;%%!serialized_property_newline!%%    return texelFetch(iChannel0, ivec2(x, ty), 0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec4 sprite(ivec4 r, int frame, vec2 local) {%%!serialized_property_newline!%%    if (local.x < 0.0 || local.y < 0.0 || local.x >= float(r.z) || local.y >= float(r.w)) return vec4(0.0);%%!serialized_property_newline!%%    return texel(r.x + frame * r.z + int(local.x), r.y + r.w - 1 - int(local.y));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec4 strip(ivec4 r, float x, float ly) {%%!serialized_property_newline!%%    if (ly < 0.0 || ly >= float(r.w)) return vec4(0.0);%%!serialized_property_newline!%%    return texel(r.x + int(mod(x, STRIP_W)), r.y + r.w - 1 - int(ly));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%bool isKey(vec4 c, vec3 k) { return c.a > 0.5 && all(lessThan(abs(c.rgb - k), vec3(0.02))); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%// moonlight grading for the (warm) atlas colours%%!serialized_property_newline!%%vec3 night(vec3 c, float depth) {%%!serialized_property_newline!%%    float l = dot(c, vec3(0.30, 0.59, 0.11));%%!serialized_property_newline!%%    vec3 moon = mix(hexrgb(0x0c1830), hexrgb(0x8fb4d8), l);%%!serialized_property_newline!%%    return mix(mix(c * vec3(0.45, 0.55, 0.80), moon, 0.55), hexrgb(0x16304e), depth);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 lights(vec4 c, vec2 world, float t, float depth) {%%!serialized_property_newline!%%    if (isKey(c, vec3(1.0, 0.0, 1.0))) {%%!serialized_property_newline!%%        vec2 cell = floor(world / vec2(2.0, 3.0));%%!serialized_property_newline!%%        float id = hash21(cell);%%!serialized_property_newline!%%        float on = step(0.42, hash21(cell + floor(t / (8.0 + id * 12.0) + id * 5.0) * 3.1));%%!serialized_property_newline!%%        vec3 lit = mix(hexrgb(0xffc06a), hexrgb(0xffe6a8), step(0.7, id));%%!serialized_property_newline!%%        return mix(night(hexrgb(0x2a2040), depth), lit, on);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    if (isKey(c, vec3(1.0, 1.0, 0.0))) {%%!serialized_property_newline!%%        float f = hash21(vec2(floor(t * 12.0), floor(world.x / 8.0)));%%!serialized_property_newline!%%        return f > 0.92 ? hexrgb(0xe09a4a) : hexrgb(0xffe2a0);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    return night(c.rgb, depth);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ sky%%!serialized_property_newline!%%vec3 sky(vec2 p, float t, float horizon) {%%!serialized_property_newline!%%    const int NB = 8;%%!serialized_property_newline!%%    const int BAND[8] = int[8](0x3a6a86, 0x2c5574, 0x224462, 0x1a3552, 0x132842, 0x0d1d34, 0x081428, 0x050c1c);%%!serialized_property_newline!%%    float h = clamp((p.y - horizon) / max(H - horizon, 1.0), 0.0, 0.999);%%!serialized_property_newline!%%    float f = pow(h, 0.8) * float(NB);%%!serialized_property_newline!%%    int i = int(f);%%!serialized_property_newline!%%    float fr = fract(f) * (H - horizon) / float(NB);%%!serialized_property_newline!%%    if (fr < 1.0 && mod(p.x + p.y, 2.0) < 1.0 && i > 0) i -= 1;%%!serialized_property_newline!%%    vec3 col = hexrgb(BAND[clamp(i, 0, NB - 1)]);%%!serialized_property_newline!%%    // moon with craters and a dithered halo%%!serialized_property_newline!%%    vec2 mc = vec2(0.24 * PIXW, H - 34.0);%%!serialized_property_newline!%%    float r = length(p + 0.5 - mc);%%!serialized_property_newline!%%    if (r < 11.0) {%%!serialized_property_newline!%%        col = r < 10.0 ? hexrgb(0xe8eef4) : hexrgb(0xb8c8d8);%%!serialized_property_newline!%%        vec2 q = p - mc;%%!serialized_property_newline!%%        if (length(q - vec2(-3.0, 2.0)) < 2.2 || length(q - vec2(3.0, -3.0)) < 1.6 || length(q - vec2(4.0, 4.0)) < 1.2)%%!serialized_property_newline!%%            col = hexrgb(0xc0ccd8);%%!serialized_property_newline!%%    } else if (r < 18.0 && mod(p.x + p.y, 2.0) < 1.0 && r < 14.0 + 3.0 * hash21(floor(p / 2.0))) {%%!serialized_property_newline!%%        col = mix(col, hexrgb(0x6f8fb0), 0.5);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // dense stars + an occasional shooting star%%!serialized_property_newline!%%    if (i >= 3) {%%!serialized_property_newline!%%        float s = hash21(p);%%!serialized_property_newline!%%        if (s > 0.985) {%%!serialized_property_newline!%%            float tw = step(0.3, fract(t * (0.25 + 0.5 * hash11(s * 31.0)) + s * 7.0));%%!serialized_property_newline!%%            col = mix(col, s > 0.995 ? hexrgb(0xf4f8ff) : hexrgb(0x9ab8dc), tw);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        float cyc = floor(t / 9.0);%%!serialized_property_newline!%%        float ph = fract(t / 9.0) * 9.0;%%!serialized_property_newline!%%        if (ph < 0.8) {%%!serialized_property_newline!%%            vec2 a = vec2(40.0 + hash11(cyc) * 220.0, H - 10.0 - hash11(cyc + 3.0) * 30.0);%%!serialized_property_newline!%%            vec2 head = a + vec2(ph * 70.0, -ph * 24.0);%%!serialized_property_newline!%%            vec2 d = p - head;%%!serialized_property_newline!%%            float along = dot(d, normalize(vec2(-70.0, 24.0)));%%!serialized_property_newline!%%            float side = abs(dot(d, normalize(vec2(24.0, 70.0))));%%!serialized_property_newline!%%            if (along > 0.0 && along < 12.0 && side < 0.8) col = mix(hexrgb(0xffffff), col, along / 12.0);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    return col;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec4 smoke(vec2 p, float t, vec3 chim, float offx, float baseY) {%%!serialized_property_newline!%%    vec4 acc = vec4(0.0);%%!serialized_property_newline!%%    for (int w = -1; w <= 1; w++) {%%!serialized_property_newline!%%        vec2 src = vec2(chim.x - offx + float(w) * STRIP_W, baseY + chim.y);%%!serialized_property_newline!%%        if (abs(p.x - src.x) > 40.0) continue;%%!serialized_property_newline!%%        for (int k = 0; k < 5; k++) {%%!serialized_property_newline!%%            float age = fract(t * 0.08 + float(k) / 5.0 + hash11(chim.x));%%!serialized_property_newline!%%            vec2 c = src + vec2(-age * 18.0 + sin(age * 5.0 + chim.x) * 1.5, age * 22.0);%%!serialized_property_newline!%%            float rad = 0.8 + age * 3.6;%%!serialized_property_newline!%%            vec2 d = p + 0.5 - c;%%!serialized_property_newline!%%            if (dot(d, d) < rad * rad && !(age > 0.55 && hash21(p + floor(t * 6.0)) < (age - 0.55) * 2.2))%%!serialized_property_newline!%%                acc = vec4(d.y > rad * 0.25 ? hexrgb(0x8ea4bc) : hexrgb(0x4e6480), 1.0);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    return acc;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%float WATER, HARBOR_Y, MOUNT_Y, HORIZON;%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 scene(vec2 p, float t, bool refl) {%%!serialized_property_newline!%%    vec3 col = sky(p, t, HORIZON);%%!serialized_property_newline!%%    vec4 c;%%!serialized_property_newline!%%    // moonlit clouds drifting%%!serialized_property_newline!%%    for (int k = 0; k < 3; k++) {%%!serialized_property_newline!%%        ivec4 r = k == 0 ? R_CLOUD_A : (k == 1 ? R_CLOUD_B : R_CLOUD_C);%%!serialized_property_newline!%%        float span = PIXW + float(r.z) + 40.0;%%!serialized_property_newline!%%        float x0 = mod(float(k) * 97.0 + t * (0.9 + 0.4 * float(k)), span) - float(r.z) - 20.0;%%!serialized_property_newline!%%        float y0 = H - 58.0 - float(k) * 13.0 + float(k == 1) * 18.0;%%!serialized_property_newline!%%        c = sprite(r, 0, p - vec2(floor(x0), floor(y0)));%%!serialized_property_newline!%%        if (c.a > 0.5) col = mix(night(c.rgb, 0.2), col, 0.35);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // far mountains%%!serialized_property_newline!%%    c = strip(R_MOUNT, p.x + 160.0, p.y - MOUNT_Y);%%!serialized_property_newline!%%    if (c.a > 0.5) col = night(c.rgb, 0.55);%%!serialized_property_newline!%%    // airship docked at the mooring mast (gently swaying)%%!serialized_property_newline!%%    vec2 mast = vec2(PIXW - 70.0, HARBOR_Y + 8.0);%%!serialized_property_newline!%%    c = sprite(R_MAST, 0, p - mast);%%!serialized_property_newline!%%    if (c.a > 0.5) col = lights(c, p, t, 0.15);%%!serialized_property_newline!%%    float sway = floor(sin(t * 0.6) * 1.5);%%!serialized_property_newline!%%    c = sprite(R_SHIP_BIG, int(mod(t * 1.5, 2.0)), p - vec2(mast.x - 70.0 + sway, mast.y + 30.0));%%!serialized_property_newline!%%    if (c.a > 0.5) col = lights(c, p, t, 0.1);%%!serialized_property_newline!%%    // harbor: warehouses, cranes, stacks + their smoke%%!serialized_property_newline!%%    if (!refl) for (int i = 0; i < N_CHIM_HARBOR; i++) { c = smoke(p, t, CHIM_HARBOR[i], 40.0, HARBOR_Y); if (c.a > 0.5) col = c.rgb; }%%!serialized_property_newline!%%    c = strip(R_HARBOR, p.x + 40.0, p.y - HARBOR_Y);%%!serialized_property_newline!%%    if (c.a > 0.5) col = lights(c, p + vec2(40.0, 0.0), t, 0.05);%%!serialized_property_newline!%%    return col;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%void mainImage(out vec4 fragColor, in vec2 fragCoord) {%%!serialized_property_newline!%%    ATLAS_SIZE = textureSize(iChannel0, 0);%%!serialized_property_newline!%%    vec4 m = texelFetch(iChannel0, ivec2(0, 0), 0);%%!serialized_property_newline!%%    TOP_FIRST = m.r > 0.5 && m.g < 0.5;%%!serialized_property_newline!%%    if (ATLAS_SIZE.x < 8) { fragColor = vec4(0.03, 0.06, 0.12, 1.0); return; }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    float scale = iResolution.x / PIXW;%%!serialized_property_newline!%%    H = floor(iResolution.y / scale);%%!serialized_property_newline!%%    vec2 p = floor(fragCoord / scale);%%!serialized_property_newline!%%    float t = iTime;%%!serialized_property_newline!%%%%!serialized_property_newline!%%    WATER = 46.0;%%!serialized_property_newline!%%    HARBOR_Y = WATER;%%!serialized_property_newline!%%    MOUNT_Y = WATER + 4.0;%%!serialized_property_newline!%%    HORIZON = WATER + 10.0;%%!serialized_property_newline!%%%%!serialized_property_newline!%%    vec3 col;%%!serialized_property_newline!%%    if (p.y >= WATER) {%%!serialized_property_newline!%%        col = scene(p, t, false);%%!serialized_property_newline!%%    } else {%%!serialized_property_newline!%%        // sea: mirrored, rippled, deep teal; moon and lighthouse reflections%%!serialized_property_newline!%%        float row = WATER - p.y;%%!serialized_property_newline!%%        float ripple = floor(sin(row * 0.9 + t * 1.6) * 1.5 + sin(row * 0.37 - t * 0.7) * 1.2);%%!serialized_property_newline!%%        col = scene(vec2(p.x + ripple, WATER + row * 1.6 - 1.0), t, true);%%!serialized_property_newline!%%        col = mix(col * vec3(0.45, 0.62, 0.78), hexrgb(0x0b2236), 0.35 + row * 0.008);%%!serialized_property_newline!%%        float moonx = 0.24 * PIXW;%%!serialized_property_newline!%%        if (abs(p.x - moonx + ripple * 2.0) < 7.0 - row * 0.06 && mod(p.y + floor(t * 2.5), 3.0) < 1.0)%%!serialized_property_newline!%%            col = hexrgb(0xc8d8e8);%%!serialized_property_newline!%%        if (hash21(vec2(floor((p.x - t * 4.0) / 6.0), p.y)) > 0.95) col = mix(col, hexrgb(0x6f9cc0), 0.6);   // wave crests%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // fog drifting over the water line%%!serialized_property_newline!%%    float fog = sin((p.x * 0.03) + t * 0.15) + sin(p.x * 0.011 - t * 0.09);%%!serialized_property_newline!%%    if (abs(p.y - (WATER + 2.0 + fog * 2.0)) < 2.0 && mod(p.x + p.y + floor(t * 2.0), 2.0) < 1.0)%%!serialized_property_newline!%%        col = mix(col, hexrgb(0x8fb0cc), 0.35);%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // paddle steamer crossing, with smoke and wake%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        float period = 46.0, len = float(R_STEAMBOAT.z);%%!serialized_property_newline!%%        float bx = floor(mod(t, period) / period * (PIXW + len + 60.0) - len - 30.0);%%!serialized_property_newline!%%        float by = WATER - 26.0 + floor(sin(t * 1.2) * 0.8);%%!serialized_property_newline!%%        vec4 c = sprite(R_STEAMBOAT, int(mod(t * 6.0, 2.0)), p - vec2(bx, by));%%!serialized_property_newline!%%        if (c.a > 0.5) col = lights(c, p, t, 0.0);%%!serialized_property_newline!%%        if (p.y == by && p.x < bx + 4.0 && p.x > bx - 26.0 && hash21(vec2(floor((p.x - t * 9.0) / 2.0), 3.0)) > 0.4)%%!serialized_property_newline!%%            col = hexrgb(0xa8c4dc);                                                   // wake%%!serialized_property_newline!%%        for (int k = 0; k < 6; k++) {%%!serialized_property_newline!%%            float age = fract(t * 0.6 - float(k) / 6.0);%%!serialized_property_newline!%%            vec2 cc = vec2(bx + 28.0 - age * 22.0, by + 25.0 + age * 12.0);%%!serialized_property_newline!%%            float rad = 1.2 + age * 3.6;%%!serialized_property_newline!%%            vec2 d = p + 0.5 - cc;%%!serialized_property_newline!%%            if (dot(d, d) < rad * rad && !(age > 0.6 && hash21(p + floor(t * 8.0)) < (age - 0.6) * 2.5))%%!serialized_property_newline!%%                col = d.y > rad * 0.2 ? hexrgb(0x9ab0c4) : hexrgb(0x5a7088);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // lighthouse on the rocks with its sweeping beam%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        vec2 lh = vec2(18.0, WATER - 12.0);%%!serialized_property_newline!%%        vec2 lamp = lh + vec2(10.0, 56.0 - 9.0);%%!serialized_property_newline!%%        float ang = t * 0.9;%%!serialized_property_newline!%%        vec2 d = p + 0.5 - lamp;%%!serialized_property_newline!%%        float dist = length(d);%%!serialized_property_newline!%%        float dir = cos(ang);                             // beam swings left <-> right (seen from the side)%%!serialized_property_newline!%%        float spread = 0.10 + 0.05 * (1.0 - abs(dir));%%!serialized_property_newline!%%        float a = atan(d.y, d.x * sign(dir + 0.0001));%%!serialized_property_newline!%%        float inBeam = step(abs(a - 0.06), spread) * step(dist, 260.0) * step(4.0, dist);%%!serialized_property_newline!%%        if (inBeam > 0.0 && mod(p.x + p.y, 2.0) < 1.0) col = mix(col, hexrgb(0xfff2c0), 0.45 * (1.0 - dist / 260.0) * abs(dir));%%!serialized_property_newline!%%        if (dist < 6.0 && abs(dir) > 0.92) col = mix(col, hexrgb(0xfff8e0), 0.6);   // flash when it faces us%%!serialized_property_newline!%%        vec4 c = sprite(R_LIGHTHOUSE, 0, p - lh);%%!serialized_property_newline!%%        if (c.a > 0.5) col = lights(c, p, t, 0.0);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // pier in the foreground%%!serialized_property_newline!%%    vec4 c = strip(R_PIER, p.x, p.y - (-2.0));%%!serialized_property_newline!%%    if (c.a > 0.5) col = lights(c, p, t, 0.0);%%!serialized_property_newline!%%%%!serialized_property_newline!%%    fragColor = vec4(col, 1.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%
  image_ichannel0_input = resource0
  ichannel_0_source = [source:local]/config/fancymenu/assets/toz/atlas.png
  compile_mode = auto
  force_shadertoy_compatibility = true
  freeze_time = false
  time_scale = 1.0
  enable_blending = false
  use_input = false
  mouse_position_requires_hold = false
  opacity_multiplier = 1.0
  show_compile_errors = true
}

element {
  element_type = glsl
  instance_identifier = 680dadd2-2341-4a5e-b701-1bbf336deb94-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-centered
  x = -32
  y = 16
  width = 64
  height = 48
  stay_on_screen = false
  element_loading_requirement_container_identifier = a5dc78fd-2b51-4044-afcb-7d52a71f2f70-toz
  [loading_requirement_container_meta:a5dc78fd-2b51-4044-afcb-7d52a71f2f70-toz] = [groups:][instances:]
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  inline_shader_source = const ivec4 R_GEAR_BIG = ivec4(0, 262, 70, 70); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_MID = ivec4(0, 333, 46, 46); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_SMALL = ivec4(185, 333, 34, 34); // 4 frame(s)%%!serialized_property_newline!%%// Teachings of Zeta - spinning loading gear (frames from atlas.png)%%!serialized_property_newline!%%ivec4 regionOf(int which) {%%!serialized_property_newline!%%    // filled in from zeta_day.glsl constants at generation time%%!serialized_property_newline!%%    return which == 0 ? R_GEAR_MID : R_GEAR_SMALL;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec4 texel2(ivec2 p) {%%!serialized_property_newline!%%    ivec2 s = textureSize(iChannel0, 0);%%!serialized_property_newline!%%    vec4 m = texelFetch(iChannel0, ivec2(0, 0), 0);%%!serialized_property_newline!%%    bool top = m.r > 0.5 && m.g < 0.5;%%!serialized_property_newline!%%    return texelFetch(iChannel0, ivec2(p.x, top ? p.y : s.y - 1 - p.y), 0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec4 spr(ivec4 r, int f, vec2 l) {%%!serialized_property_newline!%%    if (l.x < 0.0 || l.y < 0.0 || l.x >= float(r.z) || l.y >= float(r.w)) return vec4(0.0);%%!serialized_property_newline!%%    return texel2(ivec2(r.x + f * r.z + int(l.x), r.y + r.w - 1 - int(l.y)));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%void mainImage(out vec4 fragColor, in vec2 fragCoord) {%%!serialized_property_newline!%%    ivec4 big = regionOf(0), small = regionOf(1);%%!serialized_property_newline!%%    float px = floor(min(iResolution.x / 64.0, iResolution.y / 48.0));%%!serialized_property_newline!%%    px = max(px, 1.0);%%!serialized_property_newline!%%    vec2 p = floor(fragCoord / px);%%!serialized_property_newline!%%    int f = int(mod(iTime * 8.0, 4.0));%%!serialized_property_newline!%%    vec4 c = spr(small, 3 - f, p - vec2(36.0, 2.0));%%!serialized_property_newline!%%    vec4 b = spr(big, f, p - vec2(2.0, 4.0));%%!serialized_property_newline!%%    fragColor = b.a > 0.5 ? b : c;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%
  image_ichannel0_input = resource0
  ichannel_0_source = [source:local]/config/fancymenu/assets/toz/atlas.png
  compile_mode = auto
  force_shadertoy_compatibility = true
  enable_blending = true
  use_input = false
  time_scale = 1.0
  show_compile_errors = true
  opacity_multiplier = 1.0
}
