{
  "name": "Christmas Lights",
  "dimension": "text",
  "slot": "action_bar",
  "width": 256,
  "height": 128,
  "textBaseline": 128,
  "placement": {
    "x": 0,
    "y": 0
  },
  "shapes": [],
  "texts": [],
  "heads": [],
  "images": [],
  "bars": [],
  "triggers": [],
  "effect": {
    "glsl": "vec3 fairyColour(float n) {\n    float k = mod(n, 4.0);\n    if (k < 1.0) return vec3(1.0, 0.13, 0.10);\n    if (k < 2.0) return vec3(0.12, 0.96, 0.24);\n    if (k < 3.0) return vec3(1.0, 0.76, 0.12);\n    return vec3(0.19, 0.49, 1.0);\n}\nvec4 effect(Fx f) {\n    float clock = f.t * 1.25 - f.o.x * 0.145;\n    float tick = floor(clock);\n    float u = fract(clock);\n    vec3 lamp = fairyColour(tick);\n    float pulse = smoothstep(0.0, 0.19, u) * (1.0 - smoothstep(0.48, 1.0, u));\n    float power = 0.73 + 0.27 * pulse;\n    vec2 p = f.q;\n    float a = G(p);\n    float nearInk = N8(p);\n    float rim = N4(p);\n    float farInk = max(max(G(p + vec2(2.0, 0.0)), G(p - vec2(2.0, 0.0))), max(G(p + vec2(0.0, 2.0)), G(p - vec2(0.0, 2.0))));\n    vec4 glow = vec4(lamp, max(nearInk * 0.30, farInk * 0.12) * (0.40 + 0.60 * pulse));\n    vec4 dark = vec4(lamp * 0.105, max(rim, G(p - 1.0)) * 0.95);\n    vec3 body = lamp * power;\n    float upper = 1.0 - G(p - vec2(0.0, 1.0));\n    body = mix(body, mix(lamp, vec3(1.0, 0.98, 0.87), 0.40), upper * (0.30 + pulse * 0.30));\n    float glint = upper * (1.0 - step(2.0, p.x)) * (1.0 - step(4.0, p.y)) * smoothstep(0.65, 1.0, pulse);\n    body = mix(body, vec3(1.0, 0.98, 0.87), glint * 0.60);\n    return over(vec4(body, a), over(dark, glow));\n}",
    "pad": [
      2,
      2,
      2,
      2
    ],
    "prompt": "Christmas fairy lights text: each letter blinks between red, green, gold and blue in a chasing pattern like a string of lights",
    "sample": "Merry Christmas"
  }
}