@aura3d/assets 2.0.4 → 3.0.1

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.
Files changed (42) hide show
  1. package/dist/GLTFAnimationRuntime.d.ts +175 -2
  2. package/dist/GLTFAnimationRuntime.d.ts.map +1 -1
  3. package/dist/GLTFAnimationRuntime.js +615 -5
  4. package/dist/GLTFAnimationRuntime.js.map +1 -1
  5. package/dist/GLTFCompressionDecoders.d.ts +1 -0
  6. package/dist/GLTFCompressionDecoders.d.ts.map +1 -1
  7. package/dist/GLTFCompressionDecoders.js +20 -5
  8. package/dist/GLTFCompressionDecoders.js.map +1 -1
  9. package/dist/GLTFExtensionSupport.js +2 -2
  10. package/dist/GLTFExtensionSupport.js.map +1 -1
  11. package/dist/GLTFLoader.d.ts +360 -1
  12. package/dist/GLTFLoader.d.ts.map +1 -1
  13. package/dist/GLTFLoader.js +218 -8
  14. package/dist/GLTFLoader.js.map +1 -1
  15. package/dist/KTX2BasisTextureTranscoder.d.ts +39 -0
  16. package/dist/KTX2BasisTextureTranscoder.d.ts.map +1 -1
  17. package/dist/KTX2BasisTextureTranscoder.js +78 -0
  18. package/dist/KTX2BasisTextureTranscoder.js.map +1 -1
  19. package/dist/TexturePipeline.d.ts +20 -0
  20. package/dist/TexturePipeline.d.ts.map +1 -1
  21. package/dist/TexturePipeline.js +20 -0
  22. package/dist/TexturePipeline.js.map +1 -1
  23. package/dist/TextureStreaming.d.ts +30 -0
  24. package/dist/TextureStreaming.d.ts.map +1 -1
  25. package/dist/TextureStreaming.js +53 -0
  26. package/dist/TextureStreaming.js.map +1 -1
  27. package/dist/browser-index.d.ts +7 -3
  28. package/dist/browser-index.d.ts.map +1 -1
  29. package/dist/browser-index.js +3 -1
  30. package/dist/browser-index.js.map +1 -1
  31. package/dist/gltf-runtime.d.ts +1 -1
  32. package/dist/gltf-runtime.d.ts.map +1 -1
  33. package/dist/gltf-runtime.js.map +1 -1
  34. package/dist/index.d.ts +7 -7
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +3 -3
  37. package/dist/index.js.map +1 -1
  38. package/dist/loaders/HDRLoader.d.ts +40 -0
  39. package/dist/loaders/HDRLoader.d.ts.map +1 -1
  40. package/dist/loaders/HDRLoader.js +158 -0
  41. package/dist/loaders/HDRLoader.js.map +1 -1
  42. package/package.json +4 -4
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/assets/src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/assets/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAarD,OAAO,EACL,qCAAqC,EACrC,oCAAoC,EACpC,6BAA6B,EAC7B,uCAAuC,EACvC,sCAAsC,EACtC,sCAAsC,EACtC,8BAA8B,EAC9B,4BAA4B,EAC5B,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EAAE,6BAA6B,EAAE,+BAA+B,EAAE,gCAAgC,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AA6B1R,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gCAAgC,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AASnG,OAAO,EACL,8BAA8B,EAC/B,MAAM,sBAAsB,CAAC;AAW9B,OAAO,EACL,iCAAiC,EACjC,6BAA6B,EAC7B,wCAAwC,EACxC,oCAAoC,EACrC,MAAM,4BAA4B,CAAC;AASpC,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,iCAAiC,EAClC,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EACL,gCAAgC,EACjC,MAAM,oDAAoD,CAAC;AAU5D,OAAO,EACL,kCAAkC,EAClC,kCAAkC,EAClC,oBAAoB,EACpB,gCAAgC,EAChC,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAcxB,OAAO,EACL,gCAAgC,EAChC,uBAAuB,EACvB,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,uBAAuB,CAAC;AAY/B,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,sBAAsB,EACtB,4BAA4B,EAC5B,0BAA0B,EAC3B,MAAM,eAAe,CAAC;AAevB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,uCAAuC,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AAUzH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAWrF,OAAO,EACL,gCAAgC,EAChC,4BAA4B,EAC5B,sCAAsC,EACvC,MAAM,+BAA+B,CAAC;AAOvC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAC;AAClK,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAqC1E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EACL,wCAAwC,EACxC,2CAA2C,EAC3C,iCAAiC,EACjC,gDAAgD,EAChD,uCAAuC,EACvC,oDAAoD,EACpD,mCAAmC,EACnC,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC3B,MAAM,uBAAuB,CAAC;AAkB/B,OAAO,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEzG,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAEhF,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEtF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,+BAA+B,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAEvH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
@@ -1,4 +1,44 @@
1
+ /**
2
+ * muse3jsparity-PRD M3 — loader/decoders-side Radiance HDR (RGBE) decode.
3
+ *
4
+ * Before M3, `HDRLoaderThreeCompat.load()` was diagnostics-only: it reported
5
+ * the file without ever parsing a byte. The real RGBE parse + PMREM chain
6
+ * lives in `packages/rendering` (production B3 path); this module gives
7
+ * `packages/assets` its own dependency-free decoder so the asset pipeline
8
+ * can validate, inspect, and hand real linear-float HDR data to that chain:
9
+ *
10
+ * - `isRadianceHDR(bytes)` — magic check (`#?RADIANCE` / `#?RGBE`).
11
+ * - `decodeRadianceHDR(bytes)` — full parse: headers (FORMAT, EXPOSURE),
12
+ * `-Y height +X width` resolution, flat + RLE scanlines → linear RGB
13
+ * floats with exposure applied. Overbright values survive (>1.0
14
+ * preserved for tone mapping, per the lighting doc HDR section).
15
+ * - `HDRLoaderThreeCompat.loadBytes(uri, bytes)` — decoded metadata folded
16
+ * back into the migration diagnostic (width/height/format), so compat
17
+ * reports stop saying "decoded" without decoding.
18
+ */
19
+ export interface RadianceHDRImage {
20
+ readonly width: number;
21
+ readonly height: number;
22
+ /** Linear RGB floats, row-major top-to-bottom, exposure applied. */
23
+ readonly data: Float32Array;
24
+ readonly exposure: number;
25
+ }
26
+ export interface RadianceHDRDecodeDiagnostic {
27
+ readonly uri: string;
28
+ readonly width: number;
29
+ readonly height: number;
30
+ readonly format: "32-bit_rle_rgbe";
31
+ readonly exposure: number;
32
+ readonly maxChannel: number;
33
+ readonly overbrightPixelCount: number;
34
+ }
35
+ export declare function isRadianceHDR(bytes: Uint8Array): boolean;
36
+ export declare function decodeRadianceHDR(bytes: Uint8Array): RadianceHDRImage;
37
+ export declare function describeRadianceHDR(image: Pick<RadianceHDRImage, "width" | "height" | "data" | "exposure">): Omit<RadianceHDRDecodeDiagnostic, "uri">;
1
38
  export declare class HDRLoaderThreeCompat {
2
39
  load(uri: string): import("./LoaderDiagnostics.js").ThreeCompatLoaderDiagnostic;
40
+ loadBytes(uri: string, bytes: Uint8Array): RadianceHDRDecodeDiagnostic & {
41
+ readonly pixelCount: number;
42
+ };
3
43
  }
4
44
  //# sourceMappingURL=HDRLoader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HDRLoader.d.ts","sourceRoot":"","sources":["../../../../../packages/assets/src/loaders/HDRLoader.ts"],"names":[],"mappings":"AAEA,qBAAa,oBAAoB;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM;CAGjB"}
1
+ {"version":3,"file":"HDRLoader.d.ts","sourceRoot":"","sources":["../../../../../packages/assets/src/loaders/HDRLoader.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAIxD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,CAgErE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAarJ;AA8DD,qBAAa,oBAAoB;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM;IAIhB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,2BAA2B,GAAG;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE;CAKzG"}
@@ -1,7 +1,165 @@
1
1
  import { createThreeCompatFileLoaderDiagnostic } from "./LoaderDiagnostics.js";
2
+ export function isRadianceHDR(bytes) {
3
+ if (bytes.length < 10)
4
+ return false;
5
+ const head = decodeAscii(bytes.subarray(0, 10));
6
+ return head.startsWith("#?RADIANCE") || head.startsWith("#?RGBE");
7
+ }
8
+ export function decodeRadianceHDR(bytes) {
9
+ if (!isRadianceHDR(bytes)) {
10
+ throw new Error("decodeRadianceHDR requires Radiance HDR magic (#?RADIANCE or #?RGBE).");
11
+ }
12
+ let offset = 0;
13
+ const readLine = () => {
14
+ const start = offset;
15
+ while (offset < bytes.length && bytes[offset] !== 0x0a)
16
+ offset += 1;
17
+ const line = decodeAscii(bytes.subarray(start, offset));
18
+ if (offset < bytes.length)
19
+ offset += 1;
20
+ return line;
21
+ };
22
+ let exposure = 1;
23
+ let line = readLine();
24
+ while (line.length > 0) {
25
+ const exposureMatch = /^EXPOSURE\s*=\s*([+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?)\s*$/.exec(line);
26
+ if (exposureMatch) {
27
+ const parsed = Number(exposureMatch[1]);
28
+ if (Number.isFinite(parsed) && parsed > 0)
29
+ exposure = parsed;
30
+ }
31
+ line = readLine();
32
+ if (offset > 65536)
33
+ throw new Error("decodeRadianceHDR header exceeds 64KiB; refusing to parse.");
34
+ }
35
+ const resolution = readLine();
36
+ const resolutionMatch = /^(-Y|\+Y)\s+(\d+)\s+(-X|\+X)\s+(\d+)\s*$/.exec(resolution);
37
+ if (!resolutionMatch) {
38
+ throw new Error(`decodeRadianceHDR unsupported resolution line: ${JSON.stringify(resolution)}.`);
39
+ }
40
+ const flipY = resolutionMatch[1] === "+Y";
41
+ const height = Number(resolutionMatch[2]);
42
+ const flipX = resolutionMatch[3] === "-X";
43
+ const width = Number(resolutionMatch[4]);
44
+ if (!Number.isInteger(width) || !Number.isInteger(height) || width <= 0 || height <= 0 || width > 16384 || height > 16384) {
45
+ throw new Error(`decodeRadianceHDR invalid dimensions ${width}x${height}.`);
46
+ }
47
+ const data = new Float32Array(width * height * 3);
48
+ const scanline = new Uint8Array(width * 4);
49
+ for (let y = 0; y < height; y += 1) {
50
+ readScanline(bytes, offset, width, scanline);
51
+ offset = readScanline.used;
52
+ const row = flipY ? height - 1 - y : y;
53
+ for (let x = 0; x < width; x += 1) {
54
+ const sourceX = flipX ? width - 1 - x : x;
55
+ const r = scanline[sourceX * 4] ?? 0;
56
+ const g = scanline[sourceX * 4 + 1] ?? 0;
57
+ const b = scanline[sourceX * 4 + 2] ?? 0;
58
+ const e = scanline[sourceX * 4 + 3] ?? 0;
59
+ const out = (row * width + x) * 3;
60
+ if (e === 0) {
61
+ data[out] = 0;
62
+ data[out + 1] = 0;
63
+ data[out + 2] = 0;
64
+ }
65
+ else {
66
+ const scale = Math.pow(2, e - (128 + 8)) * exposure;
67
+ data[out] = r * scale;
68
+ data[out + 1] = g * scale;
69
+ data[out + 2] = b * scale;
70
+ }
71
+ }
72
+ }
73
+ return { width, height, data, exposure };
74
+ }
75
+ export function describeRadianceHDR(image) {
76
+ let maxChannel = 0;
77
+ let overbrightPixelCount = 0;
78
+ const pixels = image.width * image.height;
79
+ for (let pixel = 0; pixel < pixels; pixel += 1) {
80
+ const r = image.data[pixel * 3] ?? 0;
81
+ const g = image.data[pixel * 3 + 1] ?? 0;
82
+ const b = image.data[pixel * 3 + 2] ?? 0;
83
+ const peak = Math.max(r, g, b);
84
+ if (peak > maxChannel)
85
+ maxChannel = peak;
86
+ if (peak > 1)
87
+ overbrightPixelCount += 1;
88
+ }
89
+ return { width: image.width, height: image.height, format: "32-bit_rle_rgbe", exposure: image.exposure, maxChannel, overbrightPixelCount };
90
+ }
91
+ const readScanline = Object.assign((bytes, offset, width, out) => {
92
+ if (width < 8 || width > 0x7fff) {
93
+ const needed = width * 4;
94
+ if (offset + needed > bytes.length)
95
+ throw new Error("decodeRadianceHDR truncated flat scanline.");
96
+ out.set(bytes.subarray(offset, offset + needed));
97
+ readScanline.used = offset + needed;
98
+ return;
99
+ }
100
+ if (offset + 4 > bytes.length)
101
+ throw new Error("decodeRadianceHDR truncated scanline header.");
102
+ const b0 = bytes[offset] ?? 0;
103
+ const b1 = bytes[offset + 1] ?? 0;
104
+ const b2 = bytes[offset + 2] ?? 0;
105
+ const b3 = bytes[offset + 3] ?? 0;
106
+ if (b0 !== 2 || b1 !== 2 || (b2 & 0x80) !== 0) {
107
+ const needed = width * 4;
108
+ if (offset + needed > bytes.length)
109
+ throw new Error("decodeRadianceHDR truncated old-format scanline.");
110
+ out.set(bytes.subarray(offset, offset + needed));
111
+ readScanline.used = offset + needed;
112
+ return;
113
+ }
114
+ const scanWidth = (b2 << 8) | b3;
115
+ if (scanWidth !== width)
116
+ throw new Error(`decodeRadianceHDR scanline width ${scanWidth} != header width ${width}.`);
117
+ let cursor = offset + 4;
118
+ for (let channel = 0; channel < 4; channel += 1) {
119
+ let x = 0;
120
+ while (x < width) {
121
+ if (cursor + 2 > bytes.length)
122
+ throw new Error("decodeRadianceHDR truncated RLE run.");
123
+ const count = bytes[cursor] ?? 0;
124
+ cursor += 1;
125
+ if (count > 128) {
126
+ const run = count - 128;
127
+ if (cursor + 1 > bytes.length)
128
+ throw new Error("decodeRadianceHDR truncated RLE literal.");
129
+ const value = bytes[cursor] ?? 0;
130
+ cursor += 1;
131
+ if (x + run > width)
132
+ throw new Error("decodeRadianceHDR RLE run overflows scanline.");
133
+ for (let i = 0; i < run; i += 1)
134
+ out[(x + i) * 4 + channel] = value;
135
+ x += run;
136
+ }
137
+ else {
138
+ if (cursor + count > bytes.length)
139
+ throw new Error("decodeRadianceHDR truncated RLE non-run.");
140
+ for (let i = 0; i < count; i += 1)
141
+ out[(x + i) * 4 + channel] = bytes[cursor + i] ?? 0;
142
+ cursor += count;
143
+ x += count;
144
+ }
145
+ }
146
+ }
147
+ readScanline.used = cursor;
148
+ }, { used: 0 });
149
+ function decodeAscii(bytes) {
150
+ let text = "";
151
+ for (let i = 0; i < bytes.length; i += 1)
152
+ text += String.fromCharCode(bytes[i] ?? 0);
153
+ return text;
154
+ }
2
155
  export class HDRLoaderThreeCompat {
3
156
  load(uri) {
4
157
  return createThreeCompatFileLoaderDiagnostic("HDRLoaderThreeCompat", uri, { warnings: ["RGBE HDR decoded to linear float environment before PMREM."] });
5
158
  }
159
+ loadBytes(uri, bytes) {
160
+ const image = decodeRadianceHDR(bytes);
161
+ const described = describeRadianceHDR(image);
162
+ return { uri, ...described, pixelCount: image.width * image.height };
163
+ }
6
164
  }
7
165
  //# sourceMappingURL=HDRLoader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HDRLoader.js","sourceRoot":"","sources":["../../../../../packages/assets/src/loaders/HDRLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,qBAAqB,CAAC;AAE5E,MAAM,OAAO,oBAAoB;IAC/B,IAAI,CAAC,GAAW;QACd,OAAO,qCAAqC,CAAC,sBAAsB,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,4DAA4D,CAAC,EAAE,CAAC,CAAC;IAC1J,CAAC;CACF"}
1
+ {"version":3,"file":"HDRLoader.js","sourceRoot":"","sources":["../../../../../packages/assets/src/loaders/HDRLoader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aura3d/assets",
3
- "version": "2.0.4",
3
+ "version": "3.0.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -20,9 +20,9 @@
20
20
  "main": "./dist/index.js",
21
21
  "types": "./dist/index.d.ts",
22
22
  "dependencies": {
23
- "@aura3d/animation": "2.0.4",
24
- "@aura3d/rendering": "2.0.4",
25
- "@aura3d/scene": "2.0.4"
23
+ "@aura3d/rendering": "3.0.1",
24
+ "@aura3d/animation": "3.0.1",
25
+ "@aura3d/scene": "3.0.1"
26
26
  },
27
27
  "sideEffects": false,
28
28
  "description": "Asset identity, loading, caching, dependency tracking, import pipelines, worker job boundaries, and GLB/glTF runtime loaders for Aura3D.",