Files
video-shader-toys/shaders/vhs/shader.json
Aiden 6ea6971dd6
All checks were successful
CI / React UI Build (push) Successful in 10s
CI / Native Windows Build And Tests (push) Successful in 2m22s
CI / Windows Release Package (push) Successful in 2m35s
more shaders and updates/changes
2026-05-08 20:32:19 +10:00

200 lines
4.5 KiB
JSON

{
"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."
}
]
}