{
  "id": "balatro-swirl",
  "name": "Balatro Swirl",
  "description": "Animated painterly swirl background. Original by localthunk (https://www.playbalatro.com), adapted from https://www.shadertoy.com/view/XXtBRr.",
  "category": "Generative",
  "entryPoint": "shadeVideo",
  "parameters": [
    {
      "id": "spinRotation",
      "label": "Spin Rotation",
      "type": "float",
      "default": -2,
      "min": -8,
      "max": 8,
      "step": 0.05,
      "description": "Base rotation applied to the swirl field."
    },
    {
      "id": "spinSpeed",
      "label": "Spin Speed",
      "type": "float",
      "default": 7,
      "min": 0,
      "max": 20,
      "step": 0.1,
      "description": "How quickly the swirl pattern rotates."
    },
    {
      "id": "spinAmount",
      "label": "Spin Amount",
      "type": "float",
      "default": 0.25,
      "min": 0,
      "max": 1,
      "step": 0.01,
      "description": "Amount of radial twisting in the swirl."
    },
    {
      "id": "spinEase",
      "label": "Spin Ease",
      "type": "float",
      "default": 1,
      "min": 0,
      "max": 3,
      "step": 0.01,
      "description": "Changes how strongly the twist falls off from the center."
    },
    {
      "id": "contrast",
      "label": "Contrast",
      "type": "float",
      "default": 3.5,
      "min": 0.5,
      "max": 8,
      "step": 0.05,
      "description": "Adjusts separation between dark and bright areas."
    },
    {
      "id": "lighting",
      "label": "Lighting",
      "type": "float",
      "default": 0.4,
      "min": 0,
      "max": 1.5,
      "step": 0.01,
      "description": "Strength of the highlight/shadow modulation."
    },
    {
      "id": "offset",
      "label": "Offset",
      "type": "vec2",
      "default": [
        0,
        0
      ],
      "min": [
        -1,
        -1
      ],
      "max": [
        1,
        1
      ],
      "step": [
        0.001,
        0.001
      ],
      "description": "Moves the generated field in normalized coordinates."
    },
    {
      "id": "colour1",
      "label": "Colour 1",
      "type": "color",
      "default": [
        0.871,
        0.267,
        0.231,
        1
      ],
      "description": "Primary warm swirl color."
    },
    {
      "id": "colour2",
      "label": "Colour 2",
      "type": "color",
      "default": [
        0,
        0.42,
        0.706,
        1
      ],
      "description": "Secondary cool swirl color."
    },
    {
      "id": "colour3",
      "label": "Colour 3",
      "type": "color",
      "default": [
        0.086,
        0.137,
        0.145,
        1
      ],
      "description": "Dark base color in the swirl."
    },
    {
      "id": "isRotate",
      "label": "Rotate Field",
      "type": "bool",
      "default": false,
      "description": "Rotates the whole generated field over time."
    },
    {
      "id": "sourceMix",
      "label": "Source Mix",
      "type": "float",
      "default": 0,
      "min": 0,
      "max": 1,
      "step": 0.01,
      "description": "Blends the generated effect with the incoming video."
    }
  ]
}
