feat(web): add view layer aov 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-30 06:57:03 +08:00
parent d101ff2d1f
commit 0a0f36a358
47 changed files with 2122 additions and 35 deletions

View File

@@ -810,6 +810,17 @@ function assertFutureCapability(payload: Extract<WebEngineRequest["command"], {
if (properties.alphaThreshold !== undefined && !boundedNumber(properties.alphaThreshold, 0, 1)) throw report("RENDER_PROPERTY_INVALID", "Scene alphaThreshold must be between zero and one");
return;
}
case "setSceneViewLayerAOVs": {
const scene = currentSnapshot?.scenes.find((candidate) => candidate.id === payload.dataId);
if (!scene || typeof payload.layerName !== "string" || payload.layerName.length === 0 || !Array.isArray(payload.aovs) || payload.aovs.length > 64) throw report("RENDER_PROPERTY_INVALID", "Scene ViewLayer AOV target is invalid");
const names = new Set<string>();
for (const aov of payload.aovs) {
if (!aov || typeof aov.name !== "string" || aov.name.length === 0 || new TextEncoder().encode(aov.name).byteLength > 63 || names.has(aov.name) || aov.name.includes(".")) throw report("RENDER_PROPERTY_INVALID", "Scene AOV names must be unique, bounded and dot-free");
if (aov.type !== 0 && aov.type !== 1) throw report("RENDER_PROPERTY_INVALID", "Scene AOV type is unsupported");
names.add(aov.name);
}
return;
}
case "setGeometryNodeGraph": {
const snapshot = currentSnapshot;
const availableResourceIds = new Set([