feat(web): add compositor execution authoring
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-08-29 19:35:30 +08:00
parent ee1dd8213f
commit 085632b3a9
47 changed files with 1909 additions and 38 deletions

View File

@@ -751,6 +751,14 @@ function assertFutureCapability(payload: Extract<WebEngineRequest["command"], {
if (properties.subdivisions !== undefined && (!Number.isSafeInteger(properties.subdivisions) || properties.subdivisions < 0 || properties.subdivisions > 32)) throw report("RENDER_PROPERTY_INVALID", "Scene hair subdivisions are outside the bounded range");
return;
}
case "setSceneCompositorSettings": {
const scene = currentSnapshot?.scenes.find((candidate) => candidate.id === payload.dataId);
const properties = payload.properties;
if (!scene || !validPropertyKeys(properties, ["device", "precision", "denoiseDevice", "previewQuality", "finalQuality"])) throw report("RENDER_PROPERTY_INVALID", "Scene compositor target or properties are invalid");
for (const field of ["device", "precision"] as const) if (properties[field] !== undefined && ![0, 1].includes(properties[field])) throw report("RENDER_PROPERTY_INVALID", `Scene compositor ${field} is unsupported`);
for (const field of ["denoiseDevice", "previewQuality", "finalQuality"] as const) if (properties[field] !== undefined && ![0, 1, 2].includes(properties[field])) throw report("RENDER_PROPERTY_INVALID", `Scene compositor ${field} is unsupported`);
return;
}
case "setGeometryNodeGraph": {
const snapshot = currentSnapshot;
const availableResourceIds = new Set([