{"$id":"https://simforge.ai/schemas/simforge.render-rig/v1.json","$comment":"GENERATED from RenderRigV1Schema by `pnpm --filter @simforge/scenario schema:render-rig`. Do not edit.","title":"simforge.render-rig/v1","description":"Actor-mounted capture sources. Consumers also enforce unique actor/sensor/modality identities and output names, reject topdown rig sources, and check cross-field camera and scan constraints.","$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schema":{"type":"string","const":"simforge.render-rig/v1"},"sources":{"minItems":1,"maxItems":64,"type":"array","items":{"$ref":"#/$defs/source"}},"sensorHosts":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"object","properties":{"sourceId":{"$ref":"#/$defs/outputName"},"actorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"vehicleAsset":{"type":"object","properties":{"catalogAssetId":{"type":"string","minLength":1,"maxLength":200}},"required":["catalogAssetId"],"additionalProperties":{}}},"required":["sourceId","actorId","vehicleAsset"],"additionalProperties":false}},"clip":{"type":"object","properties":{"startSeconds":{"type":"number","minimum":0},"endSeconds":{"type":"number","exclusiveMinimum":0}},"required":["startSeconds","endSeconds"],"additionalProperties":false},"video":{"type":"object","properties":{"width":{"type":"integer","minimum":64,"maximum":8192},"height":{"type":"integer","minimum":64,"maximum":8192},"fps":{"type":"number","exclusiveMinimum":0,"maximum":240},"container":{"type":"string","enum":["mp4","webm"]},"codec":{"type":"string","enum":["h264","vp9","av1"]},"quality":{"type":"string","enum":["draft","standard","high","lossless"]}},"required":["width","height","fps","container","codec","quality"],"additionalProperties":false}},"required":["schema","sources"],"additionalProperties":false,"$defs":{"outputName":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"},"vec3":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"z":{"type":"number"}},"required":["x","y","z"],"additionalProperties":false},"transform":{"type":"object","properties":{"position":{"$ref":"#/$defs/vec3"},"rotation":{"default":{},"type":"object","properties":{"yawRad":{"default":0,"type":"number","minimum":-3.141593,"maximum":3.141593},"pitchRad":{"default":0,"type":"number","minimum":-1.5707963267948966,"maximum":1.5707963267948966},"rollRad":{"default":0,"type":"number","minimum":-3.141593,"maximum":3.141593}},"additionalProperties":false}},"required":["position"],"additionalProperties":false},"source":{"oneOf":[{"type":"object","properties":{"actorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorLabel":{"type":"string","minLength":1,"maxLength":200},"outputName":{"$ref":"#/$defs/outputName"},"transform":{"$ref":"#/$defs/transform"},"modality":{"type":"string","enum":["rgb","depth","semantic","instance"]},"mountFrame":{"type":"string","enum":["body","gimbal"]},"attributes":{"type":"object","properties":{"captureStage":{"type":"string","const":"scene-pre-postprocess/v1"},"detector":{"type":"object","properties":{"schema":{"type":"string","const":"simforge.hdr-detector-config/v1"},"captureStage":{"type":"string","const":"scene-pre-postprocess/v1"},"noise":{"type":"object","properties":{"model":{"type":"string","const":"gaussian-electron-ptc/v1"},"electronsPerInputUnit":{"type":"number","minimum":1e-12,"maximum":1000000000000},"shotEnabled":{"type":"boolean"},"readSigmaElectrons":{"type":"number","minimum":0,"maximum":1000000},"rootSeedHex":{"type":"string","pattern":"^[a-f0-9]{64}$"},"runNamespace":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["model","electronsPerInputUnit","shotEnabled","readSigmaElectrons","rootSeedHex","runNamespace"],"additionalProperties":false},"inputDomain":{"type":"string","const":"renderer-relative-scene-signal"},"responseGainPerRendererSignal":{"type":"number","exclusiveMinimum":0},"blackLevelNormalized":{"type":"number","minimum":0,"maximum":1},"bitDepth":{"anyOf":[{"type":"number","const":8},{"type":"number","const":10},{"type":"number","const":12},{"type":"number","const":16}]},"alphaPolicy":{"type":"string","const":"require-opaque-and-discard"}},"required":["schema","inputDomain","responseGainPerRendererSignal","blackLevelNormalized","bitDepth","alphaPolicy"],"additionalProperties":false},"temporal":{"type":"object","properties":{"schema":{"type":"string","const":"simforge.camera-temporal-request/v1"},"captureStage":{"type":"string","const":"scene-pre-postprocess/v1"},"noise":{"type":"object","properties":{"model":{"type":"string","const":"gaussian-electron-ptc/v1"},"electronsPerInputUnit":{"type":"number","minimum":1e-12,"maximum":1000000000000},"shotEnabled":{"type":"boolean"},"readSigmaElectrons":{"type":"number","minimum":0,"maximum":1000000},"rootSeedHex":{"type":"string","pattern":"^[a-f0-9]{64}$"},"runNamespace":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["model","electronsPerInputUnit","shotEnabled","readSigmaElectrons","rootSeedHex","runNamespace"],"additionalProperties":false},"timing":{"type":"object","properties":{"height":{"type":"integer","minimum":1,"maximum":16384},"shutter":{"type":"string","enum":["global","rolling"]},"readoutDirection":{"type":"string","enum":["top-to-bottom","bottom-to-top"]},"readoutSeconds":{"type":"number","minimum":0,"maximum":60},"exposureSeconds":{"type":"number","exclusiveMinimum":0,"maximum":60},"processingLatencySeconds":{"type":"number","const":0}},"required":["height","shutter","readoutDirection","readoutSeconds","exposureSeconds","processingLatencySeconds"],"additionalProperties":false},"samplesPerRow":{"type":"integer","minimum":1,"maximum":4096},"response":{"type":"object","properties":{"inputDomain":{"type":"string","const":"renderer-relative-scene-signal-seconds"},"responseGainPerRendererSignalSecond":{"type":"number","exclusiveMinimum":0},"blackLevelNormalized":{"type":"number","minimum":0,"maximum":1},"bitDepth":{"anyOf":[{"type":"number","const":8},{"type":"number","const":10},{"type":"number","const":12},{"type":"number","const":16}]}},"required":["inputDomain","responseGainPerRendererSignalSecond","blackLevelNormalized","bitDepth"],"additionalProperties":false},"budgets":{"type":"object","properties":{"maxUniqueCaptures":{"type":"integer","minimum":1,"maximum":4096},"maxCapturePixels":{"type":"integer","minimum":1,"maximum":67108864},"maxCaptureBytes":{"type":"integer","minimum":1,"maximum":1073741824},"maxReductionReadBytes":{"type":"integer","minimum":1,"maximum":1073741824},"maxWeightedValues":{"type":"integer","minimum":1,"maximum":268435456},"maxSceneActorSamples":{"type":"integer","minimum":1,"maximum":262144},"maxResidentPixelBytes":{"type":"integer","minimum":1,"maximum":536870912},"maxRetainedBytes":{"type":"integer","minimum":1,"maximum":1073741824}},"required":["maxUniqueCaptures","maxCapturePixels","maxCaptureBytes","maxReductionReadBytes","maxWeightedValues","maxSceneActorSamples","maxResidentPixelBytes","maxRetainedBytes"],"additionalProperties":false}},"required":["schema","timing","samplesPerRow","response","budgets"],"additionalProperties":false},"width":{"type":"integer","minimum":64,"maximum":8192},"height":{"type":"integer","minimum":64,"maximum":8192},"fps":{"type":"number","exclusiveMinimum":0,"maximum":240},"horizontalFovDeg":{"type":"number","exclusiveMinimum":0,"maximum":180},"cameraModel":{"type":"object","properties":{"type":{"type":"string","const":"ftheta"},"referenceResolution":{"minItems":2,"maxItems":2,"type":"array","items":{"type":"integer","minimum":1,"maximum":8192}},"principalPoint":{"minItems":2,"maxItems":2,"type":"array","items":{"type":"number"}},"pixeldistToAnglePoly":{"minItems":2,"maxItems":8,"type":"array","items":{"type":"number"}},"angleToPixeldistPoly":{"type":"array","items":{"type":"number"}},"linearCde":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"number"}},"maxAngleRad":{"type":"number","exclusiveMinimum":0,"exclusiveMaximum":3.141592653589793}},"required":["type","referenceResolution","principalPoint","pixeldistToAnglePoly","maxAngleRad"],"additionalProperties":false},"nearM":{"type":"number","exclusiveMinimum":0},"farM":{"type":"number","exclusiveMinimum":0},"orthographicHeightM":{"type":"number","exclusiveMinimum":0,"maximum":10000}},"required":["width","height","fps","nearM","farM"],"additionalProperties":false},"sensorProfile":{"type":"string","const":"generic-rgb@1"},"reportedCalibration":{"type":"object","properties":{"transform":{"$ref":"#/$defs/transform"},"attributes":{"type":"object","properties":{"captureStage":{"type":"string","const":"scene-pre-postprocess/v1"},"detector":{"type":"object","properties":{"schema":{"type":"string","const":"simforge.hdr-detector-config/v1"},"captureStage":{"type":"string","const":"scene-pre-postprocess/v1"},"noise":{"type":"object","properties":{"model":{"type":"string","const":"gaussian-electron-ptc/v1"},"electronsPerInputUnit":{"type":"number","minimum":1e-12,"maximum":1000000000000},"shotEnabled":{"type":"boolean"},"readSigmaElectrons":{"type":"number","minimum":0,"maximum":1000000},"rootSeedHex":{"type":"string","pattern":"^[a-f0-9]{64}$"},"runNamespace":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["model","electronsPerInputUnit","shotEnabled","readSigmaElectrons","rootSeedHex","runNamespace"],"additionalProperties":false},"inputDomain":{"type":"string","const":"renderer-relative-scene-signal"},"responseGainPerRendererSignal":{"type":"number","exclusiveMinimum":0},"blackLevelNormalized":{"type":"number","minimum":0,"maximum":1},"bitDepth":{"anyOf":[{"type":"number","const":8},{"type":"number","const":10},{"type":"number","const":12},{"type":"number","const":16}]},"alphaPolicy":{"type":"string","const":"require-opaque-and-discard"}},"required":["schema","inputDomain","responseGainPerRendererSignal","blackLevelNormalized","bitDepth","alphaPolicy"],"additionalProperties":false},"temporal":{"type":"object","properties":{"schema":{"type":"string","const":"simforge.camera-temporal-request/v1"},"captureStage":{"type":"string","const":"scene-pre-postprocess/v1"},"noise":{"type":"object","properties":{"model":{"type":"string","const":"gaussian-electron-ptc/v1"},"electronsPerInputUnit":{"type":"number","minimum":1e-12,"maximum":1000000000000},"shotEnabled":{"type":"boolean"},"readSigmaElectrons":{"type":"number","minimum":0,"maximum":1000000},"rootSeedHex":{"type":"string","pattern":"^[a-f0-9]{64}$"},"runNamespace":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["model","electronsPerInputUnit","shotEnabled","readSigmaElectrons","rootSeedHex","runNamespace"],"additionalProperties":false},"timing":{"type":"object","properties":{"height":{"type":"integer","minimum":1,"maximum":16384},"shutter":{"type":"string","enum":["global","rolling"]},"readoutDirection":{"type":"string","enum":["top-to-bottom","bottom-to-top"]},"readoutSeconds":{"type":"number","minimum":0,"maximum":60},"exposureSeconds":{"type":"number","exclusiveMinimum":0,"maximum":60},"processingLatencySeconds":{"type":"number","const":0}},"required":["height","shutter","readoutDirection","readoutSeconds","exposureSeconds","processingLatencySeconds"],"additionalProperties":false},"samplesPerRow":{"type":"integer","minimum":1,"maximum":4096},"response":{"type":"object","properties":{"inputDomain":{"type":"string","const":"renderer-relative-scene-signal-seconds"},"responseGainPerRendererSignalSecond":{"type":"number","exclusiveMinimum":0},"blackLevelNormalized":{"type":"number","minimum":0,"maximum":1},"bitDepth":{"anyOf":[{"type":"number","const":8},{"type":"number","const":10},{"type":"number","const":12},{"type":"number","const":16}]}},"required":["inputDomain","responseGainPerRendererSignalSecond","blackLevelNormalized","bitDepth"],"additionalProperties":false},"budgets":{"type":"object","properties":{"maxUniqueCaptures":{"type":"integer","minimum":1,"maximum":4096},"maxCapturePixels":{"type":"integer","minimum":1,"maximum":67108864},"maxCaptureBytes":{"type":"integer","minimum":1,"maximum":1073741824},"maxReductionReadBytes":{"type":"integer","minimum":1,"maximum":1073741824},"maxWeightedValues":{"type":"integer","minimum":1,"maximum":268435456},"maxSceneActorSamples":{"type":"integer","minimum":1,"maximum":262144},"maxResidentPixelBytes":{"type":"integer","minimum":1,"maximum":536870912},"maxRetainedBytes":{"type":"integer","minimum":1,"maximum":1073741824}},"required":["maxUniqueCaptures","maxCapturePixels","maxCaptureBytes","maxReductionReadBytes","maxWeightedValues","maxSceneActorSamples","maxResidentPixelBytes","maxRetainedBytes"],"additionalProperties":false}},"required":["schema","timing","samplesPerRow","response","budgets"],"additionalProperties":false},"width":{"type":"integer","minimum":64,"maximum":8192},"height":{"type":"integer","minimum":64,"maximum":8192},"fps":{"type":"number","exclusiveMinimum":0,"maximum":240},"horizontalFovDeg":{"type":"number","exclusiveMinimum":0,"maximum":180},"cameraModel":{"type":"object","properties":{"type":{"type":"string","const":"ftheta"},"referenceResolution":{"minItems":2,"maxItems":2,"type":"array","items":{"type":"integer","minimum":1,"maximum":8192}},"principalPoint":{"minItems":2,"maxItems":2,"type":"array","items":{"type":"number"}},"pixeldistToAnglePoly":{"minItems":2,"maxItems":8,"type":"array","items":{"type":"number"}},"angleToPixeldistPoly":{"type":"array","items":{"type":"number"}},"linearCde":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"number"}},"maxAngleRad":{"type":"number","exclusiveMinimum":0,"exclusiveMaximum":3.141592653589793}},"required":["type","referenceResolution","principalPoint","pixeldistToAnglePoly","maxAngleRad"],"additionalProperties":false},"nearM":{"type":"number","exclusiveMinimum":0},"farM":{"type":"number","exclusiveMinimum":0},"orthographicHeightM":{"type":"number","exclusiveMinimum":0,"maximum":10000}},"required":["width","height","fps","nearM","farM"],"additionalProperties":false}},"required":["transform","attributes"],"additionalProperties":false}},"required":["actorId","sensorId","outputName","transform","modality","attributes"],"additionalProperties":false},{"type":"object","properties":{"actorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorLabel":{"type":"string","minLength":1,"maxLength":200},"outputName":{"$ref":"#/$defs/outputName"},"transform":{"$ref":"#/$defs/transform"},"modality":{"type":"string","const":"lidar"},"attributes":{"type":"object","properties":{"observationRun":{"type":"object","properties":{"schema":{"type":"string","const":"simforge.cloud-lidar-observation/v1"},"profile":{"type":"string","const":"generic-uniform-cpu/v1"},"geometryPolicy":{"type":"string","const":"authored-dimension-primitives/v1"},"trajectoryKeyIntervalNs":{"type":"integer","minimum":1,"maximum":10000000000},"deliveryDelayNs":{"type":"integer","minimum":0,"maximum":10000000000},"consumerArchiveByteLimit":{"type":"integer","minimum":1,"maximum":1073741824},"rangeEstimation":{"type":"object","properties":{"effectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"randomNamespace":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"seed":{"type":"integer","minimum":0,"maximum":9007199254740991},"biasM":{"type":"number"},"uniformHalfWidthM":{"type":"number","minimum":0}},"required":["effectId","randomNamespace","seed","biasM","uniformHalfWidthM"],"additionalProperties":false},"channelFault":{"type":"object","properties":{"effectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"channel":{"type":"integer","minimum":0,"maximum":255},"startNs":{"type":"integer","minimum":0,"maximum":9007199254740991},"endNs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["effectId","channel","startNs","endNs"],"additionalProperties":false},"engineering":{"type":"object","properties":{"archiveByteLimit":{"type":"integer","minimum":1,"maximum":1073741824},"truthArchiveByteLimit":{"type":"integer","minimum":1,"maximum":1073741824},"queryProvenance":{"type":"object","properties":{"maxUniqueTriangles":{"type":"integer","minimum":1,"maximum":4000000},"maxInstances":{"type":"integer","minimum":1,"maximum":65536}},"required":["maxUniqueTriangles","maxInstances"],"additionalProperties":false}},"required":["archiveByteLimit","truthArchiveByteLimit"],"additionalProperties":false}},"required":["schema","profile","geometryPolicy","trajectoryKeyIntervalNs","deliveryDelayNs","consumerArchiveByteLimit"],"additionalProperties":false},"minimumRangeM":{"type":"number","minimum":0},"returnMode":{"type":"string","const":"single"},"channels":{"type":"integer","minimum":1,"maximum":256},"rangeM":{"type":"number","exclusiveMinimum":0,"maximum":1000},"pointsPerSecond":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"rotationFrequencyHz":{"type":"number","exclusiveMinimum":0,"maximum":240},"upperFovDeg":{"type":"number","minimum":-180,"maximum":180},"lowerFovDeg":{"type":"number","minimum":-180,"maximum":180},"horizontalFovDeg":{"default":360,"type":"number","minimum":5,"maximum":360}},"required":["channels","rangeM","pointsPerSecond","rotationFrequencyHz","upperFovDeg","lowerFovDeg"],"additionalProperties":false}},"required":["actorId","sensorId","outputName","transform","modality","attributes"],"additionalProperties":false},{"type":"object","properties":{"actorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorLabel":{"type":"string","minLength":1,"maxLength":200},"outputName":{"$ref":"#/$defs/outputName"},"transform":{"$ref":"#/$defs/transform"},"modality":{"type":"string","const":"radar"},"attributes":{"type":"object","properties":{"horizontalFovDeg":{"type":"number","exclusiveMinimum":0,"maximum":180},"verticalFovDeg":{"type":"number","exclusiveMinimum":0,"maximum":180},"rangeM":{"type":"number","exclusiveMinimum":0,"maximum":1000},"pointsPerSecond":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["horizontalFovDeg","verticalFovDeg","rangeM","pointsPerSecond"],"additionalProperties":false}},"required":["actorId","sensorId","outputName","transform","modality","attributes"],"additionalProperties":false},{"type":"object","properties":{"actorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorLabel":{"type":"string","minLength":1,"maxLength":200},"outputName":{"$ref":"#/$defs/outputName"},"transform":{"$ref":"#/$defs/transform"},"modality":{"type":"string","const":"topdown"},"attributes":{"type":"object","properties":{"width":{"type":"integer","minimum":320,"maximum":3840},"height":{"type":"integer","minimum":240,"maximum":2160},"fps":{"type":"number","exclusiveMinimum":0,"maximum":120},"camera":{"type":"string","enum":["follow-ego","overview"]},"northUp":{"type":"boolean"},"pxPerM":{"type":"number","exclusiveMinimum":0,"maximum":100}},"required":["width","height","fps","camera"],"additionalProperties":false}},"required":["actorId","sensorId","outputName","transform","modality","attributes"],"additionalProperties":false}]}}}