{
  "id": "vhs",
  "name": "VHS",
  "description": "VHS with wiggle, smear, and YIQ-style color separation inspired by nostalgic analog references.",
  "category": "Glitch",
  "entryPoint": "shadeVideo",
  "passes": [
    {
      "id": "tapeSmear",
      "source": "shader.slang",
      "entryPoint": "buildTapeSmear",
      "inputs": [
        "layerInput"
      ],
      "output": "tapeSmear"
    },
    {
      "id": "final",
      "source": "shader.slang",
      "entryPoint": "finishVhs",
      "inputs": [
        "tapeSmear"
      ],
      "output": "layerOutput"
    }
  ],
  "parameters": [
    {
      "id": "wiggle",
      "label": "Wiggle",
      "type": "float",
      "default": 0.03,
      "min": 0,
      "max": 1.5,
      "step": 0.01,
      "description": "Horizontal tape wobble amount."
    },
    {
      "id": "wiggleSpeed",
      "label": "Wiggle Speed",
      "type": "float",
      "default": 25,
      "min": 0,
      "max": 100,
      "step": 1,
      "description": "Speed of the tape wobble modulation."
    },
    {
      "id": "smear",
      "label": "Smear",
      "type": "float",
      "default": 1,
      "min": 0,
      "max": 2,
      "step": 0.01,
      "description": "Horizontal color/luma smear strength."
    },
    {
      "id": "blurSamples",
      "label": "Blur Samples",
      "type": "float",
      "default": 15,
      "min": 3,
      "max": 15,
      "step": 1,
      "description": "Number of smear samples; higher values are smoother but heavier."
    },
    {
      "id": "vignetteAmount",
      "label": "Vignette",
      "type": "float",
      "default": 0.3,
      "min": 0,
      "max": 0.6,
      "step": 0.01,
      "description": "Darkens and softens the frame edges."
    },
    {
      "id": "aberrationAmount",
      "label": "Aberration",
      "type": "float",
      "default": 0.75,
      "min": 0,
      "max": 3,
      "step": 0.05,
      "description": "Color-channel separation amount."
    },
    {
      "id": "halationAmount",
      "label": "Halation",
      "type": "float",
      "default": 0.12,
      "min": 0,
      "max": 0.5,
      "step": 0.01,
      "description": "Red/orange glow around bright areas."
    },
    {
      "id": "bloomAmount",
      "label": "Bloom",
      "type": "float",
      "default": 0.18,
      "min": 0,
      "max": 0.6,
      "step": 0.01,
      "description": "Soft glow strength from bright video regions."
    },
    {
      "id": "fadeAmount",
      "label": "Fade",
      "type": "float",
      "default": 0.22,
      "min": 0,
      "max": 0.75,
      "step": 0.01,
      "description": "Washed-out tape fade amount."
    },
    {
      "id": "noiseAmount",
      "label": "Noise",
      "type": "float",
      "default": 0.055,
      "min": 0,
      "max": 0.2,
      "step": 0.005,
      "description": "Fine grain/noise intensity."
    },
    {
      "id": "staticAmount",
      "label": "Analog Static",
      "type": "float",
      "default": 0.045,
      "min": 0,
      "max": 0.25,
      "step": 0.005,
      "description": "Random bright static intensity."
    },
    {
      "id": "staticLines",
      "label": "Static Lines",
      "type": "float",
      "default": 0.65,
      "min": 0,
      "max": 1.5,
      "step": 0.01,
      "description": "Horizontal static line visibility."
    },
    {
      "id": "noiseSize",
      "label": "Noise Size",
      "type": "float",
      "default": 1,
      "min": 0.25,
      "max": 6,
      "step": 0.05,
      "description": "Scale of the generated noise pattern."
    },
    {
      "id": "scanlineAmount",
      "label": "Scanlines",
      "type": "float",
      "default": 0.08,
      "min": 0,
      "max": 0.35,
      "step": 0.005,
      "description": "Subtle alternating-field luma modulation."
    },
    {
      "id": "chromaCrawlAmount",
      "label": "Chroma Crawl",
      "type": "float",
      "default": 0.035,
      "min": 0,
      "max": 0.2,
      "step": 0.005,
      "description": "Moving color shimmer around high-contrast edges."
    },
    {
      "id": "generationLoss",
      "label": "Generation Loss",
      "type": "float",
      "default": 0.18,
      "min": 0,
      "max": 1,
      "step": 0.01,
      "description": "Raises blacks, softens detail, lowers contrast, and desaturates chroma like copied tape."
    },
    {
      "id": "sharpnessDrift",
      "label": "Sharpness Drift",
      "type": "float",
      "default": 0.12,
      "min": 0,
      "max": 0.6,
      "step": 0.01,
      "description": "Slowly varies picture softness to mimic unstable tape focus."
    }
  ]
}
