Advance WebGPU volume and bounded workflows
This commit is contained in:
66
tools/vdb/provision-resources.sh
Executable file
66
tools/vdb/provision-resources.sh
Executable file
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
repo_root=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)
|
||||
resource_root=${VDB_RESOURCE_ROOT:-/home/mes123456/resource-library/blender-web-vdb}
|
||||
build_dir=${VDB_TOOLS_BUILD_DIR:-"$repo_root/build_vdb_tools"}
|
||||
sphere_sha=bb884a9a38354e47191c4ece4a11d1e051594a910fde56501cfc51ff52b171ab
|
||||
license_sha=8d3fceb4cb62663775f02c1c551cfbf332d1c736667c17817c16c635caba21e0
|
||||
|
||||
mkdir -p "$resource_root"/{generated,official,nanovdb,reports,manifests,licenses}
|
||||
"$repo_root/tools/vdb/build-native-tools.sh"
|
||||
generated_files=(generated-smoke.vdb generated-level-set.vdb generated-large-bounds-sparse.vdb)
|
||||
existing_generated=0
|
||||
for file in "${generated_files[@]}"; do
|
||||
[[ -f "$resource_root/generated/$file" ]] && existing_generated=$((existing_generated + 1))
|
||||
done
|
||||
if [[ $existing_generated -eq 0 ]]; then
|
||||
"$build_dir/vdb_fixture_generator" "$resource_root/generated"
|
||||
elif [[ $existing_generated -ne ${#generated_files[@]} ]]; then
|
||||
printf 'generated VDB resource set is incomplete; refusing to overwrite existing source hashes\n' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
download_verified() {
|
||||
local url=$1 output=$2 expected=$3
|
||||
if [[ -f "$output" ]]; then
|
||||
[[ $(sha256sum "$output" | cut -d' ' -f1) == "$expected" ]] || { printf 'existing resource hash mismatch: %s\n' "$output" >&2; return 1; }
|
||||
return
|
||||
fi
|
||||
curl -L --fail --retry 5 --retry-delay 2 --connect-timeout 20 --max-time 600 --continue-at - -o "$output.part" "$url"
|
||||
[[ $(sha256sum "$output.part" | cut -d' ' -f1) == "$expected" ]] || { printf 'downloaded resource hash mismatch: %s\n' "$output.part" >&2; return 1; }
|
||||
mv "$output.part" "$output"
|
||||
}
|
||||
|
||||
download_verified \
|
||||
https://media.githubusercontent.com/media/AcademySoftwareFoundation/openvdb-website/master/download/models/sphere.vdb \
|
||||
"$resource_root/official/sphere.vdb" "$sphere_sha"
|
||||
download_verified \
|
||||
https://raw.githubusercontent.com/AcademySoftwareFoundation/openvdb-website/master/LICENSE.txt \
|
||||
"$resource_root/licenses/CC-BY-4.0.txt" "$license_sha"
|
||||
|
||||
convert() {
|
||||
local source=$1 bundle=$2 report=$3 quantization=$4
|
||||
shift 4
|
||||
"$build_dir/vdb_to_nanovdb" --input "$source" --output "$bundle" --report "$report" --quantization "$quantization" "$@"
|
||||
}
|
||||
|
||||
convert "$resource_root/generated/generated-smoke.vdb" "$resource_root/nanovdb/generated-smoke.nvdb" "$resource_root/reports/generated-smoke-conversion.json" LOSSLESS \
|
||||
--grid density --grid temperature --grid color --grid velocity
|
||||
convert "$resource_root/generated/generated-level-set.vdb" "$resource_root/nanovdb/generated-level-set.nvdb" "$resource_root/reports/generated-level-set-conversion.json" LOSSLESS --grid surface
|
||||
convert "$resource_root/generated/generated-large-bounds-sparse.vdb" "$resource_root/nanovdb/generated-large-bounds-sparse.nvdb" "$resource_root/reports/generated-large-bounds-sparse-conversion.json" FP16 --grid density
|
||||
convert "$resource_root/official/sphere.vdb" "$resource_root/nanovdb/official-sphere.nvdb" "$resource_root/reports/official-sphere-conversion.json" LOSSLESS
|
||||
|
||||
node "$repo_root/tools/vdb/build-nanovdb-manifest.mjs" \
|
||||
--source "$resource_root/generated/generated-smoke.vdb" \
|
||||
--bundle "$resource_root/nanovdb/generated-smoke.nvdb" \
|
||||
--report "$resource_root/reports/generated-smoke-conversion.json" \
|
||||
--output "$resource_root/manifests/generated-smoke.nanovdb.json" \
|
||||
--converter "$build_dir/vdb_to_nanovdb" \
|
||||
--project-id vdb-fixtures \
|
||||
--source-path //volumes/generated-smoke.vdb \
|
||||
--bundle-path //volumes/generated-smoke.nvdb
|
||||
VDB_RESOURCE_ROOT="$resource_root" node "$repo_root/tools/vdb/catalog-resources.mjs"
|
||||
VDB_RESOURCE_ROOT="$resource_root" node "$repo_root/tools/vdb/snapshot-evidence.mjs"
|
||||
VDB_RESOURCE_ROOT="$resource_root" npm --prefix "$repo_root/web" run test:vdb-native
|
||||
printf 'vdb-resources-ready root=%s\n' "$resource_root"
|
||||
Reference in New Issue
Block a user