{
  "name": "Frosty",
  "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    vec2 q = f.q;\n    float a = G(q);\n    float up = G(q - vec2(0.0, 1.0));\n    float down = G(q + vec2(0.0, 1.0));\n    float left = G(q - vec2(1.0, 0.0));\n    float right = G(q + vec2(1.0, 0.0));\n    float nearInk = max(max(up, down), max(left, right));\n    float x = f.o.x + q.x;\n    float grain = h2(floor(f.o + q));\n    float facet = sin(x * 0.67 + q.y * 1.24);\n    vec3 ice = mix(vec3(0.35, 0.66, 0.85), vec3(0.69, 0.88, 0.97), clamp(1.0 - q.y / 9.0, 0.0, 1.0));\n    if (facet > 0.4) ice = mix(ice, vec3(0.79, 0.96, 1.0), 0.45);\n    if (down < 0.5) ice = mix(ice, vec3(0.24, 0.54, 0.74), 0.45);\n    float frontier = 3.6 + 2.1 * sin(f.t * PI / 4.0 - x * 0.07) + 0.7 * sin(x * 1.15);\n    float frost = 1.0 - smoothstep(frontier - 0.45, frontier + 0.45, q.y + grain * 2.1);\n    frost = max(frost, (1.0 - up) * 0.55);\n    vec3 frostColor = mix(vec3(0.81, 0.93, 0.98), vec3(0.99, 1.0, 1.0), smoothstep(0.2, 0.7, grain));\n    ice = mix(ice, frostColor, frost);\n    float sweep = mod(x + q.y * 0.65 - f.t * 22.0, 112.0);\n    float shine = 1.0 - smoothstep(0.8, 5.0, abs(sweep - 8.0));\n    ice = mix(ice, vec3(0.99, 1.0, 1.0), shine * 0.95);\n    vec4 shadow = vec4(0.025, 0.075, 0.14, G(q - vec2(1.0)) * 0.95);\n    vec4 rim = vec4(0.07, 0.22, 0.34, nearInk * 0.95);\n    vec4 col = over(vec4(ice, a), over(rim, shadow));\n    // A few crystals build just above an exposed upper stroke.\n    float crystal = (1.0 - a) * down * step(q.y, 3.5) * step(0.66, grain);\n    crystal *= smoothstep(q.y + 0.5, q.y + 2.0, frontier);\n    col = over(vec4(0.85, 0.97, 1.0, crystal * 0.92), col);\n    // A small four-point glint catches only as the cold shine passes.\n    vec2 sp = vec2(floor(h2(f.o + vec2(5.0, 17.0)) * max(f.w, 1.0)) + 0.5, 1.5);\n    float spBand = mod(f.o.x + sp.x + sp.y * 0.65 - f.t * 22.0, 112.0);\n    float glint = (1.0 - smoothstep(0.0, 2.8, abs(spBand - 8.0))) * G(sp);\n    vec2 d = abs(q - sp);\n    float crossShape = ((d.x < 0.5 && d.y < 1.5) || (d.y < 0.5 && d.x < 1.5)) ? 1.0 : 0.0;\n    col = over(vec4(0.95, 1.0, 1.0, crossShape * glint), col);\n    return col;\n}",
    "pad": [
      1,
      1,
      1,
      1
    ],
    "prompt": "frozen icy text: pale blue letters with white frost creeping over them and a cold shimmer that sweeps across",
    "sample": "Frozen Whisper"
  }
}