{
  "name": "Frostbite",
  "dimension": "text",
  "slot": "action_bar",
  "width": 256,
  "height": 128,
  "textBaseline": 128,
  "placement": {
    "x": 0,
    "y": 0
  },
  "shapes": [],
  "texts": [],
  "heads": [],
  "images": [],
  "bars": [],
  "triggers": [],
  "effect": {
    "glsl": "vec4 effect(Fx f) {\n    float a = G(f.p);\n    vec2 g = floor(f.g);\n    vec3 c = mix(vec3(0.9, 0.98, 1.0), vec3(0.45, 0.75, 0.95), f.q.y / f.size.y);\n    c *= 0.9 + 0.2 * h2(g);\n    c = mix(c, vec3(1.0), a * (1.0 - G(f.p - vec2(0.0, 1.0))));\n    vec4 col = vec4(min(c, 1.0), a);\n    float hc = h2(vec2(g.x, 3.7));\n    float up1 = G(f.p - vec2(0.0, 1.0));\n    float up2 = G(f.p - vec2(0.0, 2.0));\n    float ice = (1.0 - a) * (up1 * step(0.5, hc) * 0.85 + (1.0 - up1) * up2 * step(0.8, hc) * 0.6);\n    col = over(col, vec4(0.75, 0.92, 1.0, ice));\n    col = over(col, vec4(0.08, 0.2, 0.36, N4(f.p) * (1.0 - a) * (1.0 - ice) * 0.75));\n    float clock = f.t * 0.9 + h2(f.o) * 7.0;\n    float k = floor(clock);\n    if (h3(vec3(f.o, k)) > 0.6) {\n        vec2 sp = vec2(floor(h3(vec3(f.o, k + 1.0)) * max(f.w, 1.0)), floor(h3(vec3(f.o, k + 2.0)) * 7.0)) + 0.5;\n        float sz = floor(sin(fract(clock) * PI) * 2.0);\n        vec2 d = abs(f.q - sp);\n        if ((d.x < 0.5 && d.y <= sz) || (d.y < 0.5 && d.x <= sz)) col = over(vec4(1.0), col);\n    }\n    return col;\n}\n",
    "pad": [
      2,
      2,
      2,
      3
    ],
    "prompt": "",
    "preset": "frostbite",
    "sample": "Frostbite"
  }
}