feat(web): wire Blender light shadow controls
This commit is contained in:
@@ -26,10 +26,10 @@ fs.mkdirSync(abs(out), { recursive: true });
|
||||
fs.writeFileSync(abs(planPath), `${JSON.stringify({ schemaVersion: 1, planId: `BLENDER_WEB_CAPABILITY_CONTINUATION_P${phase}`, status: "ACTIVE_CAPABILITY_FAMILY_QUEUE", authority: "user_authorized_implementation_first_execution", sourceAuthority: { blenderRoot: "blender-5.2.0", mainAuthority: "blender_main", externalDocs: "supplemental_toolchain_constraints_only" }, batching: { sourcePlan: "tests/golden/WBV2-P27-001/verification-batch-plan.json", batchCount: 27, pendingRows: 6609, dedupeBy: ["sourceHash", "behaviorHash", "dedupeKey"] }, inventoryPolicy: { total: 6900, legacyCompleted: 281, legacyPending: 6618, effectiveCompleted: 290, effectivePending: 6609, overlayMutation: "forbidden_during_implementation_wave" }, tasks: records }, null, 2)}\n`);
|
||||
const reportPath = `${out}/capability-continuation-root-report.json`;
|
||||
const statusPath = `docs/status/${task}.md`;
|
||||
fs.writeFileSync(abs(reportPath), `${JSON.stringify({ schemaVersion: 1, task, operation: "AUTHORIZE_CAPABILITY_FAMILY_CONTINUATION", status: "PASS", parent: { task: parent.task, manifest: parentPath, manifestSha256: sha(parentPath) }, sourceAuthority: "blender-5.2.0", batching: { batchCount: 27, pendingRows: 6609, deduplication: true }, verification: { status: "DEFERRED", chromium: false, completionOverlay: false }, inventory: { total: 6900, legacyCompleted: 281, legacyPending: 6618, effectiveCompleted: 290, effectivePending: 6609 }, nextTask: ids[1] }, null, 2)}\n`);
|
||||
fs.writeFileSync(abs(statusPath), `# ${task} status\n\n- task: \`${task}\`; parent: \`${parent.task}\`; status: \`done\`\n- capability-family continuation authorized from Blender source\n- 6900 inventory: 27 deduplicated batches, 6609 pending rows\n- verification and completion overlay: \`DEFERRED\`\n- nextTask: \`${ids[1]}\`\n`);
|
||||
fs.writeFileSync(abs(reportPath), `${JSON.stringify({ schemaVersion: 1, task, operation: "AUTHORIZE_CAPABILITY_FAMILY_CONTINUATION", taskClass: "QUEUE_ENABLEMENT", capabilityId: null, behaviorMarker: "AUTHORIZE_CAPABILITY_FAMILY_CONTINUATION", status: "PASS", parent: { task: parent.task, manifest: parentPath, manifestSha256: sha(parentPath) }, sourceAuthority: "blender-5.2.0", batching: { batchCount: 27, pendingRows: 6609, deduplication: true }, verification: { status: "DEFERRED", chromium: false, completionOverlay: false }, inventory: { total: 6900, legacyCompleted: 281, legacyPending: 6618, effectiveCompleted: 290, effectivePending: 6609 }, nextTask: ids[1] }, null, 2)}\n`);
|
||||
fs.writeFileSync(abs(statusPath), `# ${task} status\n\n- task: \`${task}\`; parent: \`${parent.task}\`; status: \`done\`\n- taskClass: \`QUEUE_ENABLEMENT\`; no Blender capability completion claimed\n- capability-family continuation authorized from Blender source\n- 6900 inventory: 27 deduplicated batches, 6609 pending rows\n- verification and completion overlay: \`DEFERRED\`\n- nextTask: \`${ids[1]}\`\n`);
|
||||
const manifestPath = `${out}/manifest.json`;
|
||||
fs.writeFileSync(abs(manifestPath), `${JSON.stringify({ schemaVersion: 1, task, parentTask: parent.task, operation: "AUTHORIZE_CAPABILITY_FAMILY_CONTINUATION", status: "done", enablingTask: true, parityStateChange: false, runtime: "SOURCE_BACKED_CAPABILITY_FAMILY_QUEUE", artifacts: { parentManifest: { path: parentPath, sha256: sha(parentPath) }, plan: { path: planPath, sha256: sha(planPath) }, report: { path: reportPath, sha256: sha(reportPath) }, status: { path: statusPath, sha256: sha(statusPath) } }, assertions: { batchCount: 27, pendingRows: 6609, verificationDeferred: true, completionOverlayWritten: false, inventoryTotal: 6900, effectiveCompleted: 290, effectivePending: 6609, historicalReproduction: false }, nextTask: ids[1] }, null, 2)}\n`);
|
||||
fs.writeFileSync(abs(manifestPath), `${JSON.stringify({ schemaVersion: 1, task, parentTask: parent.task, operation: "AUTHORIZE_CAPABILITY_FAMILY_CONTINUATION", taskClass: "QUEUE_ENABLEMENT", status: "done", enablingTask: true, parityStateChange: false, runtime: "SOURCE_BACKED_CAPABILITY_FAMILY_QUEUE", artifacts: { parentManifest: { path: parentPath, sha256: sha(parentPath) }, plan: { path: planPath, sha256: sha(planPath) }, report: { path: reportPath, sha256: sha(reportPath) }, status: { path: statusPath, sha256: sha(statusPath) } }, assertions: { capabilityId: null, behaviorMarker: "AUTHORIZE_CAPABILITY_FAMILY_CONTINUATION", batchCount: 27, pendingRows: 6609, verificationDeferred: true, completionOverlayWritten: false, inventoryTotal: 6900, effectiveCompleted: 290, effectivePending: 6609, historicalReproduction: false }, nextTask: ids[1] }, null, 2)}\n`);
|
||||
for (const [index, id] of ids.entries()) if (index > 0) fs.writeFileSync(abs(`docs/tasks/${id}.md`), `# ${id}: ${records[index].title}\n\n- task: ${id}\n- parent: ${records[index].dependsOn[0]}\n- status: ${records[index].status}\n- gap: workflow:${records[index].title}\n- ownerFamily: ${records[index].owner}\n- targetImplementationClass: SOURCE_BACKED\n\n## 目标\n\n${records[index].behavior}\n\n## 输入与范围\n\n- Blender source authority: \`blender-5.2.0/source/blender\`\n- Batch plan: \`tests/golden/WBV2-P27-001/verification-batch-plan.json\`\n- Implementation entrypoint: \`node tools/web/generate-wbv2-capability-continuation-slice.mjs --task ${id} --write\`\n\n## 验收\n\n- 6900 inventory and provenance remain read-only\n- capability-family deduplication is reused\n- malformed, unsupported, hash-drift and false-completion input fails closed\n- Chromium, E2E receipts and completion overlays remain deferred\n- \`node tools/web/check-task-context.mjs --task ${id} --write\`\n\n## 失败边界\n\n- missing source or unsupported capability remains in_progress/blocked\n- representative implementation is never declared as full-family parity\n\n## 交付与回滚\n\n- Reports: \`tests/golden/${id}/\`\n- Status: \`docs/status/${id}.md\`\n- Manifest: \`tests/golden/${id}/manifest.json\`\n- Rollback: restore ${records[index].dependsOn[0]} as queue parent and leave the task in_progress.\n`);
|
||||
execFileSync(process.execPath, [abs("tools/web/generate-v2-task-index.mjs"), "--plan-path", abs(planPath)], { cwd: root, stdio: "inherit" });
|
||||
let updatedQueue = read("docs/EXECUTION_QUEUE.md");
|
||||
|
||||
@@ -27,7 +27,11 @@ assert.equal(parent.nextTask, task);
|
||||
const commands = { 1: [process.execPath, "tools/web/build-wbv2-capability-implementation-index.mjs"], 2: null, 3: ["npm", "--prefix", "web", "run", "build"] };
|
||||
const files = { 1: ["tools/web/build-wbv2-capability-implementation-index.mjs", "tests/golden/WBV2-P27-001/verification-batch-plan.json"], 2: phase >= 59 ? ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp"] : phase >= 57 ? ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp"] : phase >= 56 ? ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp"] : phase >= 55 ? ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp"] : phase >= 54 ? ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp"] : phase >= 53 ? ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp"] : phase >= 52 ? ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp"] : phase >= 51 ? ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp"] : phase >= 50 ? ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp"] : phase >= 49 ? ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp"] : phase >= 47 ? ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "web/protocol/web-engine.ts"] : ["web/app/src/app/App.tsx", "web/protocol/web-engine-capabilities.ts"], 3: ["web/protocol/web-engine-capabilities.ts", "web/app/src/workers/web-engine.worker.ts", "web/app/src/vendor/blender/web_engine.wasm"] };
|
||||
const markers = { 1: "BUILD_CAPABILITY_FAMILY_IMPLEMENTATION_INDEX", 2: phase >= 71 ? "web_engine_blend_main_set_scene_view_layer_pass_settings" : phase >= 70 ? "web_engine_blend_main_set_scene_line_settings" : phase >= 69 ? "web_engine_blend_main_set_scene_stamp_settings" : phase >= 68 ? "web_engine_blend_main_set_scene_multiview_settings" : phase >= 67 ? "web_engine_blend_main_set_scene_sampling_settings" : phase >= 66 ? "web_engine_blend_main_set_scene_performance_settings" : phase >= 65 ? "web_engine_blend_main_set_scene_compositor_settings" : phase >= 64 ? "web_engine_blend_main_set_scene_hair_settings" : phase >= 63 ? "web_engine_blend_main_set_scene_motion_blur" : phase >= 62 ? "web_engine_blend_main_set_scene_image_format" : phase >= 61 ? "web_engine_blend_main_set_scene_color_management" : phase >= 60 ? "web_engine_blend_main_set_scene_simplify_settings" : phase >= 59 ? "web_engine_blend_main_set_scene_border_settings" : phase >= 58 ? "web_engine_blend_main_set_scene_collection_settings" : phase >= 57 ? "web_engine_blend_main_set_scene_view_layer_settings" : phase >= 56 ? "web_engine_blend_main_set_scene_bindings" : phase >= 55 ? "web_engine_blend_main_set_scene_pipeline_settings" : phase >= 54 ? "web_engine_blend_main_set_scene_timeline_settings" : phase >= 53 ? "web_engine_blend_main_set_scene_unit_settings" : phase >= 52 ? "web_engine_blend_main_set_scene_audio_settings" : phase >= 51 ? "web_engine_blend_main_set_scene_render_settings" : phase >= 50 ? "web_engine_blend_main_set_scene_properties" : phase >= 49 ? "web_engine_blend_main_set_physics_simulation" : phase >= 47 ? "web_engine_blend_main_set_geometry_node_graph" : "capability-family-workbench", 3: "WEB_ENGINE_COMMAND_CAPABILITIES" };
|
||||
if (phase === 597) {
|
||||
if (phase === 598) {
|
||||
files[2] = ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "blender-5.2.0/source/blender/makesdna/DNA_light_types.h", "web/protocol/scene-ir.ts", "web/protocol/web-engine.ts", "web/app/src/workers/web-engine.worker.ts", "web/app/src/app/App.tsx", "web/app/src/vendor/blender/web_engine.wasm", "web/app/public/vendor/blender/web_engine.wasm"];
|
||||
markers[2] = "web_engine_blend_main_set_light_shadow_controls";
|
||||
}
|
||||
else if (phase === 597) {
|
||||
files[2] = ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "web/protocol/scene-ir.ts", "web/protocol/web-engine.ts", "web/app/src/workers/web-engine.worker.ts", "web/app/src/app/App.tsx", "web/app/src/vendor/blender/web_engine.wasm", "web/app/public/vendor/blender/web_engine.wasm"];
|
||||
markers[2] = "web_engine_blend_main_set_light_contribution_factors";
|
||||
}
|
||||
@@ -65,9 +69,9 @@ if (commands[index]) execFileSync(commands[index][0], commands[index].slice(1),
|
||||
const nextIndex = index + 1;
|
||||
const nextTask = nextIndex <= 3 ? `WBV2-P${phase}-${String(nextIndex).padStart(3, "0")}` : `WBV2-P${phase + 1}-000`;
|
||||
const family = index === 1 ? "INVENTORY.CAPABILITY_BATCH_INDEX" : index === 2 && phase >= 71 ? "RENDER.VIEW_LAYER_PASSES" : index === 2 && phase >= 70 ? "RENDER.LINE_SETTINGS" : index === 2 && phase >= 69 ? "RENDER.STAMP_SETTINGS" : index === 2 && phase >= 68 ? "RENDER.MULTIVIEW_SETTINGS" : index === 2 && phase >= 67 ? "RENDER.SAMPLING_SETTINGS" : index === 2 && phase >= 66 ? "PERFORMANCE.RENDER_SETTINGS" : index === 2 && phase >= 65 ? "COMPOSITOR.EXECUTION_SETTINGS" : index === 2 && phase >= 64 ? "CORE_SCENE_GRAPH.HAIR_SETTINGS" : index === 2 && phase >= 63 ? "CORE_SCENE_GRAPH.MOTION_BLUR" : index === 2 && phase >= 62 ? "CORE_SCENE_GRAPH.IMAGE_FORMAT" : index === 2 && phase >= 61 ? "CORE_SCENE_GRAPH.COLOR_MANAGEMENT" : index === 2 && phase >= 60 ? "CORE_SCENE_GRAPH.SIMPLIFY_SETTINGS" : index === 2 && phase >= 59 ? "CORE_SCENE_GRAPH.BORDER_SETTINGS" : index === 2 && phase >= 58 ? "CORE_SCENE_GRAPH.COLLECTION_SETTINGS" : index === 2 && phase >= 57 ? "CORE_SCENE_GRAPH.VIEW_LAYER_SETTINGS" : index === 2 && phase >= 56 ? "CORE_SCENE_GRAPH.BINDINGS" : index === 2 && phase >= 55 ? "CORE_SCENE_GRAPH.PIPELINE_SETTINGS" : index === 2 && phase >= 54 ? "CORE_SCENE_GRAPH.TIMELINE_SETTINGS" : index === 2 && phase >= 53 ? "CORE_SCENE_GRAPH.UNIT_SETTINGS" : index === 2 && phase >= 52 ? "CORE_SCENE_GRAPH.AUDIO_SETTINGS" : index === 2 && phase >= 51 ? "CORE_SCENE_GRAPH.RENDER_SETTINGS" : index === 2 && phase >= 50 ? "CORE_SCENE_GRAPH.SCENE_PROPERTIES" : index === 2 && phase >= 49 ? "SIMULATION.NATIVE_MANIFEST_BINDING" : index === 2 && phase >= 47 ? "GEOMETRY_NODES.NATIVE_MATERIALIZATION" : index === 2 ? "WORKFLOW.CAPABILITY_FAMILY_WORKBENCH" : "IMPLEMENTATION.CAPABILITY_FAMILY_SMOKE";
|
||||
const reportedFamily = phase === 597 && index === 2 ? "RENDER.LIGHT_CONTRIBUTION_FACTORS" : phase === 596 && index === 2 ? "RENDER.LIGHT_AREA_SHAPE" : phase === 595 && index === 2 ? "RENDER.LIGHT_TYPE" : phase === 77 && index === 2 ? "RENDER.WORLD_LIGHTGROUP_MEMBERSHIP" : phase === 76 && index === 2 ? "RENDER.OBJECT_LIGHTGROUP_MEMBERSHIP" : phase === 75 && index === 2 ? "RENDER.VIEW_LAYER_LIGHTGROUPS" : phase === 74 && index === 2 ? "RENDER.VIEW_LAYER_AOV" : phase === 73 && index === 2 ? "ARCHITECTURE.UNIFIED_WASM_JSON_ABI" : family;
|
||||
const reportedFamily = phase === 598 && index === 2 ? "RENDER.LIGHT_SHADOW_CONTROLS" : phase === 597 && index === 2 ? "RENDER.LIGHT_CONTRIBUTION_FACTORS" : phase === 596 && index === 2 ? "RENDER.LIGHT_AREA_SHAPE" : phase === 595 && index === 2 ? "RENDER.LIGHT_TYPE" : phase === 77 && index === 2 ? "RENDER.WORLD_LIGHTGROUP_MEMBERSHIP" : phase === 76 && index === 2 ? "RENDER.OBJECT_LIGHTGROUP_MEMBERSHIP" : phase === 75 && index === 2 ? "RENDER.VIEW_LAYER_LIGHTGROUPS" : phase === 74 && index === 2 ? "RENDER.VIEW_LAYER_AOV" : phase === 73 && index === 2 ? "ARCHITECTURE.UNIFIED_WASM_JSON_ABI" : family;
|
||||
const taskClass = index === 1 ? "QUEUE_ENABLEMENT" : index === 2 ? "SOURCE_IMPLEMENTATION" : "INTEGRATION_BUILD";
|
||||
const capabilityId = index === 1 ? null : phase === 597 && index === 2 ? "CAP-RENDER-LIGHT-CONTRIBUTION-FACTORS" : phase === 596 && index === 2 ? "CAP-RENDER-LIGHT-AREA-SHAPE" : phase === 595 && index === 2 ? "CAP-RENDER-LIGHT-TYPE" : `CAPABILITY-${reportedFamily.replaceAll(".", "-")}`;
|
||||
const capabilityId = index === 1 ? null : phase === 598 && index === 2 ? "CAP-RENDER-LIGHT-SHADOW-CONTROLS" : phase === 597 && index === 2 ? "CAP-RENDER-LIGHT-CONTRIBUTION-FACTORS" : phase === 596 && index === 2 ? "CAP-RENDER-LIGHT-AREA-SHAPE" : phase === 595 && index === 2 ? "CAP-RENDER-LIGHT-TYPE" : `CAPABILITY-${reportedFamily.replaceAll(".", "-")}`;
|
||||
const behaviorMarker = index === 2 ? markers[2] : markers[index];
|
||||
const out = `tests/golden/${task}`;
|
||||
const reportPath = `${out}/implementation-report.json`;
|
||||
|
||||
Reference in New Issue
Block a user