{
  "name": "Candy Cane",
  "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    float x = f.o.x + f.q.x;\n    float stripe = mod(x + f.q.y - f.t * 1.5, 6.0);\n    float red = 1.0 - smoothstep(1.25, 1.75, abs(mod(stripe + 1.5, 6.0) - 3.0));\n    float row = clamp((f.q.y - 1.0) / 6.0, 0.0, 1.0);\n    vec3 white = mix(vec3(1.0, 1.0, 0.98), vec3(0.92, 0.94, 0.98), row);\n    vec3 candy = mix(vec3(1.0, 0.065, 0.12), vec3(0.83, 0.02, 0.065), row);\n    vec3 c = mix(white, candy, red);\n    float topEdge = 1.0 - G(f.p - vec2(0.0, 1.0));\n    float bottomEdge = 1.0 - G(f.p + vec2(0.0, 1.0));\n    c = mix(c, mix(vec3(1.0), vec3(1.0, 0.48, 0.50), red), topEdge * 0.40);\n    c *= 1.0 - bottomEdge * 0.06;\n    float sweep = mod(x + f.q.y * 0.65 - f.t * 8.0, 68.0);\n    float gloss = (1.0 - smoothstep(0.6, 2.1, abs(sweep - 4.0))) * 0.72;\n    c = mix(c, vec3(1.0, 1.0, 0.99), gloss);\n    vec4 shadow = vec4(0.12, 0.035, 0.06, G(f.p - 1.0) * 0.85);\n    vec4 rim = vec4(0.30, 0.055, 0.095, N4(f.p) * 0.94);\n    return over(vec4(c, a), over(rim, shadow));\n}",
    "pad": [
      1,
      1,
      1,
      1
    ],
    "prompt": "candy cane text: diagonal red and white stripes that slowly scroll across the letters with a glossy shine",
    "sample": "Candy Cane"
  }
}