{
  "id": "video-plane-3d",
  "name": "Video Plane 3D",
  "description": "Places the video on a perspective 2D plane in 3D space with camera FOV, XYZ position, and pan/tilt/roll controls.",
  "category": "Projection",
  "entryPoint": "shadeVideo",
  "parameters": [
    {
      "id": "fovDegrees",
      "label": "FOV",
      "type": "float",
      "default": 45,
      "min": 5,
      "max": 150,
      "step": 0.1,
      "description": "Virtual camera vertical field of view in degrees."
    },
    {
      "id": "positionX",
      "label": "X",
      "type": "float",
      "default": 0,
      "min": -4,
      "max": 4,
      "step": 0.01,
      "description": "Horizontal plane position in world units."
    },
    {
      "id": "positionY",
      "label": "Y",
      "type": "float",
      "default": 0,
      "min": -4,
      "max": 4,
      "step": 0.01,
      "description": "Vertical plane position in world units."
    },
    {
      "id": "positionZ",
      "label": "Z",
      "type": "float",
      "default": 2.2,
      "min": 0.1,
      "max": 10,
      "step": 0.01,
      "description": "Depth of the plane in front of the virtual camera."
    },
    {
      "id": "panDegrees",
      "label": "Pan",
      "type": "float",
      "default": 0,
      "min": -180,
      "max": 180,
      "step": 0.1,
      "description": "Rotates the plane left/right around its vertical axis."
    },
    {
      "id": "tiltDegrees",
      "label": "Tilt",
      "type": "float",
      "default": 0,
      "min": -120,
      "max": 120,
      "step": 0.1,
      "description": "Rotates the plane up/down around its horizontal axis."
    },
    {
      "id": "rollDegrees",
      "label": "Roll",
      "type": "float",
      "default": 0,
      "min": -180,
      "max": 180,
      "step": 0.1,
      "description": "Rotates the plane around its face normal."
    },
    {
      "id": "planeScale",
      "label": "Plane Scale",
      "type": "float",
      "default": 1.4,
      "min": 0.05,
      "max": 6,
      "step": 0.01,
      "description": "Height of the video plane in world units; width follows the source aspect ratio."
    },
    {
      "id": "edgeFeather",
      "label": "Edge Feather",
      "type": "float",
      "default": 1.5,
      "min": 0,
      "max": 24,
      "step": 0.1,
      "description": "Softens the plane edge in source pixels."
    },
    {
      "id": "backgroundMix",
      "label": "Background Mix",
      "type": "float",
      "default": 0,
      "min": 0,
      "max": 1,
      "step": 0.01,
      "description": "Mixes the original video behind the projected plane."
    },
    {
      "id": "outsideColor",
      "label": "Outside Color",
      "type": "color",
      "default": [
        0,
        0,
        0,
        1
      ],
      "description": "Color used where the camera ray misses the plane."
    }
  ]
}
