ABGEN·WASM LAB

the abgen converter core compiled to wasm32 — glTF → Unity asset bundle, entirely in this tab nothing is uploaded; files never leave the browser ← parity lightbox
01 · Upload
glb / gltf / textures, or a zip of a scene, wearable or emote
waiting for files
02 · Parse
GLB container → accessors → RH→LH handedness, winding, tangents, skinning
03 · Encode
linear-space mips, alpha bleed, BC7 / DXT / crunched-CRN compression (CPU, one file per worker)
04 · Serialize
SerializedFile type trees → UnityFS container, 128 KiB LZ4HC blocks

Input·entity

drop .glb / .gltf / textures / .zip here
or click to pick files
platform
entity
tolerate missing refs bake lod1

Conversion·feed

the real codecs, compiled to wasm — IJG libjpeg 9c, crnlib (crunched DXT5 normal maps) and the draco decoder are statically linked into this module via a wasi-libc/libc++ toolchain. Bundles built here are byte-identical to the native binary from the same tree under the libjpeg-9c GLB decode profile (the byte gate pins ABGEN_JPEG_GLB_9C=1; the native production default decodes GLB JPEGs with turbojpeg, the closer match to the Unity oracle): every byte-path transcendental routes through one shared libm, and the gate (12 fixtures across windows/mac/webgl — LOD1 bakes with meshopt decimation, parcel crop and ISS placements on windows/mac, plus a corrupt-JPEG recovery pair) passes with zero diffs. Files convert one per worker on a pool; a malformed image fails only its own file through real setjmp recovery, exactly like native, and a worker that traps anyway is terminated and respawned so the rest of the run completes. Remaining gaps vs the native fleet: encode is CPU (SIMD128 in the BC7 partition estimator, startup-qualified byte-equal to scalar) — native uses AVX-512 or a bit-exact CUDA/wgpu GPU lane; WebGPU here is a documented follow-up · gltfpack decimation and placements acquisition via the Node manifest-builder stay native-only. Every produced bundle is a real UnityFS archive, structurally validated (E0–E9) before download.