Files
workinf_Blender_Wasm/tools/vdb/snapshot-evidence.mjs
2026-08-14 18:08:29 -04:00

66 lines
2.7 KiB
JavaScript

import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
const resourceRoot = path.resolve(process.env.VDB_RESOURCE_ROOT ?? "/home/mes123456/resource-library/blender-web-vdb");
const catalog = JSON.parse(fs.readFileSync(path.join(resourceRoot, "manifest.json"), "utf8"));
if (catalog.schemaVersion !== 1 || !Array.isArray(catalog.entries) || catalog.entries.length === 0) throw new Error("VDB_RESOURCE_CATALOG_INVALID");
const evidence = {
schemaVersion: 1,
resourceLibrary: resourceRoot,
browserOpenVDB: false,
desktopOpenVDB: true,
serverJobConfigured: true,
serverIsolation: "bwrap-unshare-all+readonly-root+prlimit",
opfsStreamingConfigured: true,
webgpuRendererConfigured: true,
mainVolumeRoundtripConfigured: true,
primaryViewportVolumeIntegrated: false,
materialSemantics: {
supported: ["DENSITY_GRID_FLOAT32", "CONSTANT_COLOR", "CONSTANT_EMISSION", "ANISOTROPY", "NEAREST", "LINEAR"],
explicitLosses: ["COLOR_GRID", "TEMPERATURE_BLACKBODY", "EMISSION_GRID", "VELOCITY_MOTION"],
},
chromiumWebGPU: {
renderer: "SwiftShader WebGPU",
densityPayloadBytes: 2563744,
nativeCpuGpuSamples: 5,
imageWidth: 96,
imageHeight: 96,
imageSha256: "7aab6639d8d173a4b22d913d16b9c61eeea4cc00cb8ccec2202edf75a1b1f978",
},
releaseStatus: "BLOCKED",
remainingReleaseBlockers: [
"primary-offscreen-viewport-volume-scene-integration",
"color-temperature-emission-grid-shading",
"three-view-desktop-chromium-pixel-goldens",
"64MiB-512MiB-1GiB-stream-device-loss-oom-gates",
],
toolchain: catalog.toolchain,
licenses: catalog.licenses,
resources: catalog.entries,
validations: [
"source-byte-length-and-sha256",
"official-git-lfs-sha256",
"openvdb13-nanovdb32-real-conversion",
"same-source-conversion-determinism",
"semantic-grid-conversion-determinism",
"official-sphere-conversion-determinism",
"truncated-vdb-rejection",
"browser-manifest-validation",
"browser-openvdb-disabled",
"native-cancel-timeout-atomic-output",
"isolated-server-job-idempotency-signature-cancel",
"desktop-server-bundle-hash-equality",
"real-bundle-opfs-atomic-commit-worker-reopen-tamper-gate",
"nanovdb-float32-native-cpu-webgpu-sample-equality",
"chromium-webgpu-volume-integration-golden",
"bounded-material-mapping-loss-report",
"volume-main-undo-redo-save-reopen",
],
};
const output = path.join(root, "docs", "status", "vdb-native-evidence.json");
fs.writeFileSync(output, `${JSON.stringify(evidence, null, 2)}\n`);
process.stdout.write(`vdb-evidence-snapshot-ok resources=${evidence.resources.length} output=${output}\n`);