{
  "name": "Pumpkin Glow",
  "dimension": "text",
  "slot": "action_bar",
  "width": 256,
  "height": 128,
  "textBaseline": 128,
  "placement": {
    "x": 0,
    "y": 0
  },
  "shapes": [],
  "texts": [],
  "heads": [],
  "images": [],
  "bars": [],
  "triggers": [],
  "effect": {
    "glsl": "float pumpkinHalo(vec2 p) {\n    vec2 base = floor(p) + 0.5;\n    float ds = 9.0;\n    for (int y = -2; y <= 2; y++) {\n        for (int x = -2; x <= 2; x++) {\n            vec2 cell = base + vec2(float(x), float(y));\n            if (G(cell) > 0.5) {\n                vec2 edge = max(abs(p - cell) - 0.5, 0.0);\n                ds = min(ds, dot(edge, edge));\n            }\n        }\n    }\n    float d = sqrt(ds);\n    return exp(-d * 1.3) * (1.0 - smoothstep(1.3, 2.1, d)) * 0.65;\n}\nfloat pumpkinStem(vec2 q, float x, float y) {\n    float stalk = (abs(q.x - x) < 0.1 && abs(q.y - y) < 0.1) ? 1.0 : 0.0;\n    float curl = (abs(q.x - x - 1.0) < 0.1 && abs(q.y - y + 1.0) < 0.1) ? 1.0 : 0.0;\n    return max(stalk, curl);\n}\nvec4 effect(Fx f) {\n    vec2 p = f.p;\n    vec2 q = f.q;\n    float seed = h2(f.o);\n    float flicker = 0.62 + 0.20 * sin(f.t * 3.2 + seed * 6.28)\n                          + 0.12 * sin(f.t * 7.0 + seed * 13.0)\n                          + 0.06 * sin(f.t * 11.0 + seed * 4.0);\n    float a = G(p);\n    vec4 col = vec4(1.0, 0.25, 0.012, pumpkinHalo(p) * (0.48 + 0.43 * flicker));\n    float rim = N4(p) * (1.0 - a);\n    col = over(vec4(0.24, 0.060, 0.008, rim * 0.96), col);\n    col = over(vec4(0.12, 0.025, 0.005, G(p - 1.0) * 0.92), col);\n    float ribs = 0.5 + 0.5 * cos((q.x - f.w * 0.5) * 1.6);\n    float belly = 1.0 - abs(q.y - 4.5) / 4.5;\n    float light = clamp(0.12 + belly * 0.40 + ribs * 0.18 + flicker * 0.32, 0.0, 1.0);\n    vec3 c = mix(vec3(0.90, 0.16, 0.008), vec3(1.0, 0.60, 0.045), light);\n    float upper = 1.0 - G(p - vec2(0.0, 1.0));\n    float lower = 1.0 - G(p + vec2(0.0, 1.0));\n    c = mix(c, vec3(1.0, 0.83, 0.30), lower * (0.30 + 0.44 * flicker));\n    c = mix(c, vec3(1.0, 0.30, 0.012), upper * 0.30);\n    float flame = sin(q.y * 0.95 + (f.o.x + q.x) * 0.24 - f.t * 2.0) * 0.5 + 0.5;\n    c += vec3(0.025, 0.11, 0.025) * flame * flicker;\n    c *= 0.82 + 0.23 * flicker;\n    col = over(vec4(c, a), col);\n    // Tiny bent pumpkin stalks only where a broad letter supports one.\n    float sx = floor((f.w - 1.0) * 0.5) + 0.5;\n    float sy = -10.0;\n    for (int row = 0; row < 4; row++) {\n        float yy = float(row) + 0.5;\n        if (sy < -9.0 && G(vec2(sx, yy)) > 0.5) sy = yy - 1.0;\n    }\n    if (f.w >= 4.0 && sy > -9.0 && (sy < 1.0 || seed > 0.65)) {\n        float stem = pumpkinStem(q, sx, sy);\n        float shade = pumpkinStem(q - 1.0, sx, sy);\n        col = over(vec4(0.095, 0.11, 0.02, shade * (1.0 - a)), col);\n        vec3 green = q.y < sy ? vec3(0.48, 0.55, 0.12) : vec3(0.29, 0.36, 0.065);\n        col = over(vec4(green, stem), col);\n    }\n    return col;\n}",
    "pad": [
      2,
      2,
      3,
      3
    ],
    "prompt": "glowing orange jack-o-lantern text that flickers warmly like candlelight inside a pumpkin",
    "sample": "Jack O Lantern"
  }
}