{
  "id": "depth_displacement_post",
  "name": "Depth Displacement + Post",
  "description": "Offline-validated chain combining a synthetic depth map (noise), a Displace TOP relief warp over a ramp source, and a finishing post stack (blur + level grade). Builds and previews with zero hardware. UNVERIFIED pending live cook-check in TouchDesigner.",
  "tags": ["depth", "displacement", "post-processing", "offline", "generative"],
  "difficulty": "intermediate",
  "td_version_min": "2022",
  "nodes": [
    {
      "name": "src1",
      "type": "rampTOP",
      "parameters": { "type": "radial", "resolutionw": 1280, "resolutionh": 720 },
      "comment": "Source image (radial ramp test pattern)"
    },
    {
      "name": "depth1",
      "type": "noiseTOP",
      "parameters": { "resolutionw": 1280, "resolutionh": 720, "period": 18, "amp": 1 },
      "comment": "Synthetic animated depth/luminance map"
    },
    {
      "name": "displace1",
      "type": "displaceTOP",
      "parameters": { "displaceweight1": 0.25, "uvweight": 0.5 },
      "comment": "Warps src1 by depth1 (input 0 = source, input 1 = displacement map)"
    },
    {
      "name": "blur1",
      "type": "blurTOP",
      "parameters": { "size": 4 },
      "comment": "Post: soften the displaced image"
    },
    {
      "name": "grade1",
      "type": "levelTOP",
      "parameters": { "gamma1": 1.1, "contrast": 1.2, "brightness1": 1 },
      "comment": "Post: gamma/contrast finishing"
    },
    { "name": "out1", "type": "nullTOP", "comment": "Final output" }
  ],
  "connections": [
    { "from": "src1", "to": "displace1", "to_input": 0 },
    { "from": "depth1", "to": "displace1", "to_input": 1 },
    { "from": "displace1", "to": "blur1" },
    { "from": "blur1", "to": "grade1" },
    { "from": "grade1", "to": "out1" }
  ],
  "parameters": [
    {
      "name": "displace_amount",
      "node": "displace1",
      "param": "displaceweight1",
      "value": 0.25,
      "min": 0,
      "max": 1,
      "label": "Displace Amount",
      "description": "How hard the depth map pushes the source pixels."
    },
    {
      "name": "depth_period",
      "node": "depth1",
      "param": "period",
      "value": 18,
      "min": 2,
      "max": 60,
      "label": "Depth Period",
      "description": "Spatial scale of the synthetic depth noise (larger = bigger features)."
    },
    {
      "name": "post_blur",
      "node": "blur1",
      "param": "size",
      "value": 4,
      "min": 0,
      "max": 32,
      "label": "Post Blur",
      "description": "Finishing blur in pixels."
    },
    {
      "name": "post_gamma",
      "node": "grade1",
      "param": "gamma1",
      "value": 1.1,
      "min": 0.2,
      "max": 3,
      "label": "Post Gamma"
    },
    {
      "name": "post_contrast",
      "node": "grade1",
      "param": "contrast",
      "value": 1.2,
      "min": 0,
      "max": 3,
      "label": "Post Contrast"
    }
  ],
  "preview_description": "A radial ramp warped by animated noise relief, softened by a post blur and lifted in contrast — a quick depth-displacement + finishing-grade demo that runs with zero hardware."
}
