362 lines
12 KiB
JSON
362 lines
12 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://render-cadence.local/schemas/runtime-host.schema.json",
|
|
"title": "Render Cadence Runtime Host Configuration",
|
|
"description": "Startup configuration for the Render Cadence native host. This schema documents the settings currently read by AppConfigProvider.",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"$schema": {
|
|
"type": "string",
|
|
"description": "Editor-only schema reference. The native host ignores this field."
|
|
},
|
|
"shaderLibrary": {
|
|
"type": "string",
|
|
"default": "shaders",
|
|
"description": "Path to the shader package library directory. Relative paths are resolved from the process/repo working location."
|
|
},
|
|
"serverPort": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535,
|
|
"default": 8080,
|
|
"description": "Preferred HTTP control server port."
|
|
},
|
|
"oscBindAddress": {
|
|
"type": "string",
|
|
"default": "0.0.0.0",
|
|
"description": "OSC bind address reserved for the control surface. The current native host reports this through an OSC status stub but does not start the UDP listener yet."
|
|
},
|
|
"oscPort": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 65535,
|
|
"default": 9000,
|
|
"description": "OSC UDP port reserved for the control surface. Use 0 to mark the OSC stub disabled."
|
|
},
|
|
"oscSmoothing": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"default": 0.18,
|
|
"description": "Reserved OSC smoothing amount reported through the OSC status stub."
|
|
},
|
|
"input": {
|
|
"$ref": "#/$defs/input"
|
|
},
|
|
"output": {
|
|
"$ref": "#/$defs/output"
|
|
},
|
|
"windowOutput": {
|
|
"$ref": "#/$defs/windowOutput"
|
|
},
|
|
"colorPipeline": {
|
|
"$ref": "#/$defs/colorPipeline"
|
|
},
|
|
"autoReload": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "When true, the runtime control layer may automatically rescan/reload shader packages when requested by the app flow."
|
|
},
|
|
"maxTemporalHistoryFrames": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"default": 12,
|
|
"description": "Maximum temporal history frames exposed to shaders that request history."
|
|
},
|
|
"previewEnabled": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Starts the optional preview window on its own thread."
|
|
},
|
|
"previewFps": {
|
|
"type": "number",
|
|
"exclusiveMinimum": 0,
|
|
"default": 59.94,
|
|
"description": "Target repaint rate for the optional preview window. It does not change render/output cadence."
|
|
},
|
|
"runtimeShaderId": {
|
|
"type": "string",
|
|
"default": "",
|
|
"description": "Optional startup shader package id used only when no saved runtime layer stack is restored. Leave empty to keep the simple fallback renderer until layers are added or restored."
|
|
}
|
|
},
|
|
"required": [
|
|
"shaderLibrary",
|
|
"serverPort",
|
|
"input",
|
|
"output"
|
|
],
|
|
"$defs": {
|
|
"inputBackend": {
|
|
"type": "string",
|
|
"enum": [
|
|
"decklink",
|
|
"ndi",
|
|
"window",
|
|
"fullscreen",
|
|
"borderless",
|
|
"none",
|
|
"disabled",
|
|
"off"
|
|
]
|
|
},
|
|
"outputBackend": {
|
|
"type": "string",
|
|
"enum": [
|
|
"decklink",
|
|
"ndi",
|
|
"none",
|
|
"disabled",
|
|
"off"
|
|
]
|
|
},
|
|
"resolution": {
|
|
"type": "string",
|
|
"enum": [
|
|
"720p",
|
|
"1080i",
|
|
"1080p",
|
|
"2160p",
|
|
"4k",
|
|
"uhd"
|
|
]
|
|
},
|
|
"frameRate": {
|
|
"type": "string",
|
|
"enum": [
|
|
"23.98",
|
|
"24",
|
|
"25",
|
|
"29.97",
|
|
"30",
|
|
"50",
|
|
"59.94",
|
|
"60"
|
|
]
|
|
},
|
|
"input": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"description": "Video input backend configuration. DeckLink uses the configured resolution/frameRate as a capture mode. NDI adapts to the received source shape and logs if it differs from these expected values.",
|
|
"properties": {
|
|
"backend": {
|
|
"$ref": "#/$defs/inputBackend",
|
|
"default": "decklink",
|
|
"description": "Input backend. Use 'decklink' for Blackmagic capture, 'ndi' for NDI receive, or 'none'/'disabled'/'off' for black fallback input."
|
|
},
|
|
"device": {
|
|
"type": "string",
|
|
"default": "default",
|
|
"description": "Input device/source selector. DeckLink currently uses 'default'. NDI accepts 'default'/'auto' for the first discovered source or an exact NDI source name."
|
|
},
|
|
"resolution": {
|
|
"$ref": "#/$defs/resolution",
|
|
"default": "1080p",
|
|
"description": "Expected input resolution/mode. For NDI this is advisory only; received source dimensions are used."
|
|
},
|
|
"frameRate": {
|
|
"$ref": "#/$defs/frameRate",
|
|
"default": "59.94",
|
|
"description": "Expected input frame rate. DeckLink uses this to resolve the hardware mode; NDI currently treats it as an expectation for logging/state."
|
|
}
|
|
},
|
|
"required": [
|
|
"backend",
|
|
"device",
|
|
"resolution",
|
|
"frameRate"
|
|
]
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"description": "Video output backend configuration.",
|
|
"properties": {
|
|
"backend": {
|
|
"$ref": "#/$defs/outputBackend",
|
|
"default": "decklink",
|
|
"description": "Output backend. Use 'decklink' for Blackmagic playout, 'ndi' for NDI send, or 'none'/'disabled'/'off' to disable scheduled output."
|
|
},
|
|
"device": {
|
|
"type": "string",
|
|
"default": "default",
|
|
"description": "Output device selector. DeckLink currently uses the first compatible/default output device. NDI uses this as the advertised sender name; 'default' becomes 'Render Cadence'."
|
|
},
|
|
"resolution": {
|
|
"$ref": "#/$defs/resolution",
|
|
"default": "1080p",
|
|
"description": "Output render and video mode resolution."
|
|
},
|
|
"frameRate": {
|
|
"$ref": "#/$defs/frameRate",
|
|
"default": "59.94",
|
|
"description": "Output render cadence and video mode frame rate."
|
|
},
|
|
"pixelFormat": {
|
|
"type": "string",
|
|
"enum": [
|
|
"auto",
|
|
"bgra8",
|
|
"uyvy8"
|
|
],
|
|
"default": "auto",
|
|
"description": "Requested system-memory output pixel format. Auto uses UYVY8 for DeckLink/NDI unless Output alpha is enabled, then BGRA8."
|
|
},
|
|
"keying": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"description": "Output alpha options. The control UI exposes these as a single Output alpha control.",
|
|
"properties": {
|
|
"external": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "DeckLink external-keyer backing field. The control UI only writes this true for DeckLink output."
|
|
},
|
|
"alphaRequired": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "General output alpha request. When true, automatic output pixel-format selection uses an alpha-carrying system-frame format."
|
|
}
|
|
},
|
|
"required": [
|
|
"external",
|
|
"alphaRequired"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"backend",
|
|
"device",
|
|
"resolution",
|
|
"frameRate"
|
|
]
|
|
},
|
|
"windowOutput": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"description": "Reserved settings for a future full-resolution/full-frame-rate borderless or fullscreen video output backend. These are not used by the preview window.",
|
|
"properties": {
|
|
"fullscreen": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "When the future window backend is implemented, request exclusive/fullscreen-style presentation."
|
|
},
|
|
"borderless": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "When true, the future window backend should create a borderless output window."
|
|
},
|
|
"display": {
|
|
"type": "string",
|
|
"default": "default",
|
|
"description": "Display/monitor selector for the future window backend."
|
|
},
|
|
"x": {
|
|
"type": "integer",
|
|
"default": 0,
|
|
"description": "Window X position used when fullscreen is false or when a backend needs explicit placement."
|
|
},
|
|
"y": {
|
|
"type": "integer",
|
|
"default": 0,
|
|
"description": "Window Y position used when fullscreen is false or when a backend needs explicit placement."
|
|
},
|
|
"width": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"default": 0,
|
|
"description": "Optional window width override. Zero means use output resolution."
|
|
},
|
|
"height": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"default": 0,
|
|
"description": "Optional window height override. Zero means use output resolution."
|
|
},
|
|
"vsync": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Presentation sync request for the future window backend."
|
|
},
|
|
"allowTearing": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Allow tearing for the future window backend when the graphics API and OS support it."
|
|
}
|
|
}
|
|
},
|
|
"colorPipeline": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"description": "Reserved color-management settings for a future OCIO-backed linear RGBA16F render pipeline.",
|
|
"properties": {
|
|
"ocioEnabled": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Enable future OpenColorIO transforms. Currently parsed and reported only."
|
|
},
|
|
"ocioConfig": {
|
|
"type": "string",
|
|
"default": "",
|
|
"description": "Path to an OCIO config file or package-relative config identifier."
|
|
},
|
|
"inputColorSpace": {
|
|
"type": "string",
|
|
"default": "scene_linear",
|
|
"description": "Input/video color space to convert from at the input edge."
|
|
},
|
|
"workingColorSpace": {
|
|
"type": "string",
|
|
"default": "scene_linear",
|
|
"description": "Linear working space shader packages should be able to assume."
|
|
},
|
|
"outputColorSpace": {
|
|
"type": "string",
|
|
"default": "rec709",
|
|
"description": "Output transform target color space for scheduled video output."
|
|
},
|
|
"display": {
|
|
"type": "string",
|
|
"default": "sRGB",
|
|
"description": "OCIO display name for preview/window/display transforms."
|
|
},
|
|
"view": {
|
|
"type": "string",
|
|
"default": "Rec.709",
|
|
"description": "OCIO view name for preview/window/display transforms."
|
|
},
|
|
"look": {
|
|
"type": "string",
|
|
"default": "",
|
|
"description": "Optional OCIO look name."
|
|
},
|
|
"exposure": {
|
|
"type": "number",
|
|
"default": 0,
|
|
"description": "Reserved display transform exposure adjustment."
|
|
},
|
|
"gamma": {
|
|
"type": "number",
|
|
"exclusiveMinimum": 0,
|
|
"default": 1,
|
|
"description": "Reserved display transform gamma adjustment."
|
|
},
|
|
"workingFormat": {
|
|
"type": "string",
|
|
"enum": [
|
|
"rgba16f",
|
|
"rgba32f"
|
|
],
|
|
"default": "rgba16f",
|
|
"description": "Future render target/intermediate working format."
|
|
},
|
|
"linearWorkingSpace": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Documents the intended linear-light working pipeline."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|