{
  "name": "Candy Marshmellow",
  "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 candyBox(vec2 p) {\n    vec2 b = abs(p) - vec2(0.23);\n    return length(max(b, 0.0)) + min(max(b.x, b.y), 0.0) - 0.46;\n}\n// Three edge distances share the same nine bitmap reads.\nvec3 mallowEdges(vec2 p) {\n    vec2 cell = floor(p);\n    vec3 d = vec3(12.0);\n    for (int y = -1; y <= 1; y++) {\n        for (int x = -1; x <= 1; x++) {\n            vec2 c = cell + vec2(float(x), float(y)) + 0.5;\n            if (G(c) > 0.5) {\n                vec2 v = p - c;\n                d = min(d, vec3(candyBox(v), candyBox(v - vec2(0.10, 0.27)), candyBox(v + vec2(0.08, 0.28))));\n            }\n        }\n    }\n    return d;\n}\nvec4 effect(Fx f) {\n    float phase = f.t * 2.0 * PI / 4.0 - f.o.x * 0.19;\n    float lift = 0.32 * sin(phase);\n    float stretch = 1.0 + 0.025 * sin(phase);\n    vec2 p = f.p;\n    p.y = (p.y - 7.0 - lift) / stretch + 7.0;\n    p.x = (p.x - f.w * 0.5) * stretch + f.w * 0.5;\n    vec3 edge = mallowEdges(p);\n    float a = 1.0 - smoothstep(-0.035, 0.045, edge.x);\n    float rim = 1.0 - smoothstep(0.18, 0.27, edge.x);\n    float shadow = G(p - vec2(0.7, 0.9));\n    vec4 col = vec4(0.25, 0.12, 0.21, shadow * 0.8);\n    col = over(vec4(0.48, 0.25, 0.37, rim), col);\n    float ribbon = sin((f.o.x + p.x) * 0.55 + p.y * 0.85 - f.t * PI / 4.0);\n    float pink = smoothstep(-0.45, 0.50, ribbon);\n    vec3 cream = vec3(1.0, 0.95, 0.86);\n    vec3 rose = vec3(1.0, 0.65, 0.78);\n    vec3 candy = mix(cream, rose, pink * 0.90);\n    float upper = smoothstep(-0.18, 0.12, edge.y);\n    float lower = smoothstep(-0.18, 0.12, edge.z);\n    candy = mix(candy, vec3(0.88, 0.43, 0.60), lower * 0.35);\n    candy = mix(candy, vec3(1.0, 0.99, 0.94), upper * 0.72);\n    float sweep = mod(f.o.x + p.x + p.y * 0.6 - f.t * 12.0, 60.0);\n    candy = mix(candy, vec3(1.0, 0.99, 0.96), (1.0 - smoothstep(0.0, 2.0, abs(sweep - 5.0))) * 0.22);\n    col = over(vec4(candy, a), col);\n    float key = h2(f.o + 9.3);\n    if (key > 0.68) {\n        float tw = pow(0.5 + 0.5 * sin(f.t * PI + key * 6.0), 3.0);\n        vec2 sp = vec2(f.w * key, -0.45 + sin(phase + 1.0) * 0.30);\n        vec2 delta = abs(f.p - sp);\n        float crystal = 1.0 - smoothstep(0.34, 0.43, delta.x + delta.y);\n        col = over(vec4(1.0, 0.83, 0.91, crystal * tw * 0.85), col);\n    }\n    return col;\n}",
    "pad": [
      1,
      2,
      1,
      2
    ],
    "prompt": "candy marshmellow",
    "sample": "Marshmallow"
  }
}