67 lines
3.7 KiB
Bash
Executable File
67 lines
3.7 KiB
Bash
Executable File
#!/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"
|