@dcl/abgen-win32-x64 0.17.13 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/BUILD-INFO.txt CHANGED
@@ -1,6 +1,6 @@
1
- ABGEN_VERSION=0.17.13
2
- ABGEN_RELEASE=v0.17.13
1
+ ABGEN_VERSION=0.18.0
2
+ ABGEN_RELEASE=v0.18.0
3
3
  ABGEN_TARGET=x86_64-pc-windows-gnu
4
- ABGEN_BUILD_ID=c7f413c2a0a5
5
- ABGEN_GIT_REV=2230291c5eedebff9b249d60bf70b857cb25568a
4
+ ABGEN_BUILD_ID=bfcb474af457
5
+ ABGEN_GIT_REV=7000bd2fb9fe4c4d00e85ef84f1d907ea6a28504
6
6
  SOURCE_DATE_EPOCH=315532800
package/README.md CHANGED
@@ -13,7 +13,7 @@ resolves it for embedding tools - see [npm/abgen](npm/abgen/README.md)). From so
13
13
  ```bash
14
14
  git clone <this-repo> abgen && cd abgen
15
15
  cargo build --release # no postgres, no openssl, no protobuf
16
- cargo build --release --examples # bundle dump tools (objdump/texdump/matdump/texcmp/texpng)
16
+ cargo build --release --examples # bundle dump tools (objdump/texdump/matdump)
17
17
  scripts/bootstrap-runtime.sh # integrity-check the vendored runtime data
18
18
  ```
19
19
  There is also a wasm build: `crate/abgen-wasm/` compiles the converter to wasm32 — see its README.
@@ -26,10 +26,10 @@ There is also a wasm build: `crate/abgen-wasm/` compiles the converter to wasm32
26
26
  | `abgen-build` | single-file local converter CLI (glb -> bundle, `--expect-hash` verify) |
27
27
  | `abgen-corpus` | batch corpus builder: manifest / `--entity-ids` (add `--fetch-missing` to pull content from a catalyst) / `--world <name>[,...]` (resolve + fetch + convert a world; upstream via `--worlds-url` or `ABGEN_WORLDS_URL`) / `--live-mode` / `--collection-urn` / `--from-reference`; full-corpus runbook in [docs/BATCH.md](docs/BATCH.md) |
28
28
  | `abgen-verify` | parity differ (ours vs reference bundles, ppm-bits, `--tolerant`) |
29
- | `abgen-lod` | LOD lane CLI: `bundle`, `compare`, `placements`, `assemble`, `atlas`, `simplify`, `generate` |
29
+ | `abgen-lod` | LOD lane CLI: `bundle`, `placements`, `assemble`, `atlas`, `simplify`, `generate`, `compare` (structural diff of two LOD bundles: materials/textures/vertices/triangles plus a per-material property diff — shader, keywords, render queue, floats, clipping colours, texture bindings; local or CDN URL), `qualify-corpus` (Genesis City + Worlds corpus build; `--reference-cdn` records the same diff against production per scene) |
30
30
  | `abgen-lambda` | AWS Lambda handler (deployment event in, bundles + manifests to S3; from the `lambda/` workspace member) - see [lambda/README.md](lambda/README.md) |
31
31
 
32
- Plus bundle-inspection examples (`texdump`, `matdump`, `objdump`, `texcmp`, `texpng`) under
32
+ Plus bundle-inspection examples (`texdump`, `matdump`, `objdump`) under
33
33
  `target/release/examples/`.
34
34
  ## Server
35
35
  ```bash
@@ -59,6 +59,9 @@ header semantics, and the DB-vs-proxy source selection: [docs/ROUTES.md](docs/RO
59
59
  ABGEN_ROOT="$PWD" cargo test --workspace --lib -- --test-threads=1
60
60
  ```
61
61
  `--test-threads=1` is required: the lib tests share process-wide `ABGEN_ROOT` state.
62
+ LOD assembly frame conformance against the production `_1.glb` references: `cargo test --release
63
+ --test lod_handedness` (offline fixtures; add `-- --ignored` to assemble from the catalyst).
64
+
62
65
  ## wasm
63
66
  `crate/abgen-wasm/` compiles the converter lib (default features off) to `wasm32-unknown-unknown` behind
64
67
  a hand-rolled C ABI; the JS runtime in `crate/abgen-wasm/js/` (worker pool + WebGPU bridge) is what a
@@ -71,20 +74,17 @@ template paths in `crate/src/builder/templates.rs` assume the source layout wher
71
74
  the crate — an in-repo wasm32 build needs those relative paths bumped one level (`../../template/` ->
72
75
  `../../../template/`). No workspace target compiles for wasm32, so the divergence never touches CI.
73
76
  ## Features
74
- One compile-time feature flag: `server` (on by default) gates the abcdn HTTP server + registry stack
75
- (axum/tokio/sqlx and the `dcl-contents` crate); the `abgen` bin has `required-features = ["server"]`.
76
- Library consumers - `lambda/`, `crate/abgen-native/`, `crate/abgen-wasm/` - build with
77
- `default-features = false` and get the converter without the server stack. Under the default
78
- features every capability below builds into every native binary; `wasm32` builds target-gate the
79
- server, content-DB, and GPU code off automatically. Each capability is activated at runtime, not at
80
- build time.
77
+ The default `server` feature builds the complete service. Reusable consumers should select only the lanes they need; the smallest native converter is `cargo build --release --lib --no-default-features`.
81
78
 
82
- | Capability | Built | Enable at runtime |
79
+ | Feature | Adds | Enabled by |
83
80
  |---|---|---|
84
- | tokio/axum HTTP JIT server (`abcdn` module + `abgen` bin) | always (native targets) | run the `abgen` bin |
85
- | catalyst content-DB index (sqlx/postgres, via the in-tree `dcl-contents` crate) for real timestamps + deployer on `/entities/*` and the unsigned registry routes (`/profiles*`, `/entities/status/{id}`, `/worlds/{name}/manifest`) | always | set a content-DB connection (`CONTENT_PG_CONNECTION_STRING` or `POSTGRES_CONTENT_*`); without one the built-in content-client fallback serves the index routes with `timestamp: 0`, empty deployer, and the registry routes proxy the upstream catalyst |
86
- | CUDA GPU BC7/BC5 encode path (`libcuda` dlopen'd at runtime, no toolkit needed to build; PTX kernels vendored in `crate/src/gpu/kernel.ptx`, regen from `crate/kernel-ptx/`) | always | opt in per run with `--gpu` / `ABGEN_GPU=1`, backend pick via `ABGEN_GPU_BACKEND=auto\|cuda\|wgpu\|off` |
87
- | portable `wgpu` compute backend (Vulkan/Metal/DX12), same dispatch + qualification gate | always | `ABGEN_GPU_BACKEND=wgpu` (or `auto`, which tries CUDA first) |
81
+ | `server` (default) | HTTP/registry stack, `gpu`, `cli`, `web-pack`, and `scene-runtime` | `abgen` server |
82
+ | `gpu` | native wgpu/CUDA dispatch | server, build/corpus/verify CLIs, Lambda |
83
+ | `web-pack` | BV WebGPU pack emission plus DDS/glTF JSON dependencies | server, build/corpus CLIs |
84
+ | `scene-runtime` | embedded QuickJS fallback for suspicious static LOD placements | server, LOD CLI, Lambda |
85
+ | `cli` | tracing subscriber and CLI logging | server and LOD CLI |
86
+
87
+ `crate/abgen-native`, `crate/abgen-node`, and converter WASM use no default features. The standalone `crate/wasm-gpu` package compiles the shared BC7/WebGPU source directly and does not depend on the full `abgen` graph; its worker ships only `gpu_init` and `gpu_encode`. Static CRDT placement interpretation remains available without `scene-runtime`; if that result is empty or suspicious, the minimal build fails explicitly instead of publishing an empty LOD.
88
88
 
89
89
  GPU backends self-qualify per device at enable time: the selected backend (`auto` tries CUDA, then
90
90
  wgpu) must reproduce the CPU BC7 encoder bit-for-bit on a probe matrix (sizes x srgb x perceptual x
@@ -131,6 +131,7 @@ restore it - it never fetches or re-downloads:
131
131
  | `ABGEN_JIT_FAIL_TTL_S` | `60` | failure negative-cache TTL for entity JIT builds; concurrent identical requests single-flight per `{entity}:{platform}` |
132
132
  | `ABGEN_JIT_CONTENT_DIGEST` | `0` | freshness for content servers whose declared hashes are not content-addressed (the `@dcl/sdk-commands` preview server keys them by file path). Defaults to ON when `ABGEN_CATALYST_URL` points at a loopback host (a dev preview server), OFF otherwise; explicit values always win. When on, manifest requests re-download the entity's convertible content, sha256 it, and prune stale conversions when bytes changed under an unchanged hash. Changed non-glb files (textures/`.bin`) also invalidate every glb bundle of the entity. Debounced per entity via `ABGEN_REVALIDATE_DEBOUNCE_S` (default `2`) |
133
133
  | `ABGEN_UPSTREAM_AB_CDN` | unset | read-through to a production ab-cdn (e.g. `https://ab-cdn.decentraland.org`): manifest/bundle/LOD/ISS requests that 404 through every local and JIT lane are streamed from upstream without persisting anything locally. Lets a client point its whole optimized-assets base URL here (wearables/emotes keep working) while only local scene entities are built locally. Paths containing `b64-` preview ids are never proxied |
134
+ | `ABGEN_UPSTREAM_AB_REGISTRY` | see right | upstream registry URL: records for entities without local bundles are answered with its versions. Default: `asset-bundle-registry.<domain>` when the CDN is `ab-cdn.<domain>`. `off` disables |
134
135
  | `RUST_LOG` | `abgen=info,tower_http=info` | tracing filter |
135
136
  | `CONTENT_PG_CONNECTION_STRING` (or `POSTGRES_*` parts) | unset | content DB; URL form also mounts the signed registry routes |
136
137
  ### S3 space cache (read-through + write-back)
@@ -147,8 +148,7 @@ Uploads carry each key family's production writer's object metadata, derived fro
147
148
  (cdn-uploader's comma-joined spelling), scene sources (`.js`/`.json`/`.crdt`) the direct-upload
148
149
  spelling `public, max-age=31536000, immutable`, manifests (`manifest/…`) `application/json` +
149
150
  `private, max-age=0, no-cache`, ISS descriptors (`lods-unity/manifests/…`)
150
- `public, max-age=31536000` (lod-generator-unity's spelling), `.br` keys
151
- `public,no-transform,max-age=31536000,immutable` + `Content-Encoding: br` (as cdn-uploader sets).
151
+ `public, max-age=31536000` (lod-generator-unity's spelling).
152
152
 
153
153
  ### Asset-reuse mode (upstream converter parity)
154
154
  ON by default, matching the ab-cdn deployment's asset-reuse naming from v49 onward: scene
@@ -181,12 +181,17 @@ request waits up to the deadline, builds finish in the background. Knobs: `ABGEN
181
181
  `ABGEN_INDEX_BUILD_CONCURRENCY` (default: CPU count), `ABGEN_INDEX_BUILD_DEADLINE_MS` (default
182
182
  `20000`), `ABGEN_INDEX_BUILD_MAX_QUEUE` (default `0` = unlimited; when exceeded, new builds are skipped).
183
183
  ### LOD JIT lane
184
- `ABGEN_LOD_JIT=1` enables JIT LOD builds on `GET /LOD/{0|1}/...` misses; needs `gltfpack`
184
+ `ABGEN_LOD_JIT=1` enables JIT LOD builds on `GET /LOD/1/...` misses (level 1 only, the production
185
+ shape: level 0 is the client-side ISS assembly, so `LOD/0/...` answers `lod-level-unsupported` and
186
+ `abgen-lod generate --level 0,1` is the offline opt-in); needs `gltfpack`
185
187
  (`ABGEN_GLTFPACK` or `$PATH`), fails closed without it. Knobs: `ABGEN_LOD_MANIFEST_BUILDER` (unset
186
188
  limits JIT to scenes with a published ISS descriptor), `ABGEN_LOD_CACHE_DIR` (default:
187
189
  `ABGEN_CACHE_DIR`), `ABGEN_LOD_JIT_TIMEOUT_S` / `ABGEN_LOD_JIT_FAIL_TTL_S` (defaults `600` / `3600`),
188
190
  `ABGEN_LOD_BUILD_CONCURRENCY` (default `1`). Builds stage in a per-build workdir; only gate-passed
189
- output is promoted into the serving root, so rejected bundles are never servable.
191
+ output is promoted into the serving root, so rejected bundles are never servable. A passed build is
192
+ written back to the space with the production key set: `LOD/1/{sid}_1_{platform}`,
193
+ `lods-unity/manifests/{sid}_InitialSceneState.json` and the gltfpack-layout
194
+ `lods-unity/lods/{sid}_1.glb`.
190
195
  ### Conversion / parity knobs
191
196
  - `ABGEN_SHADER_BUNDLE` - path to `scene_ignore_windows` (default `crate/shader/scene_ignore_windows`; siblings like `scene_ignore_mac` resolve from the same dir)
192
197
  - `ABGEN_CONTENT_ROOT` - local sharded content store root (default `./content`)
package/abgen.exe CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcl/abgen-win32-x64",
3
- "version": "0.17.13",
3
+ "version": "0.18.0",
4
4
  "description": "abgen prebuilt binary for win32 x64 (installed by @dcl/abgen)",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "repository": {