@aura3d/assets 3.0.1 → 4.0.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/dist/AdvancedAssetCorpus.d.ts.map +1 -1
- package/dist/AdvancedAssetCorpus.js +7 -12
- package/dist/AdvancedAssetCorpus.js.map +1 -1
- package/dist/AssetDecoderRegistry.d.ts +56 -0
- package/dist/AssetDecoderRegistry.d.ts.map +1 -0
- package/dist/AssetDecoderRegistry.js +225 -0
- package/dist/AssetDecoderRegistry.js.map +1 -0
- package/dist/GLTFAnimationRuntime.d.ts +216 -2
- package/dist/GLTFAnimationRuntime.d.ts.map +1 -1
- package/dist/GLTFAnimationRuntime.js +674 -38
- package/dist/GLTFAnimationRuntime.js.map +1 -1
- package/dist/GLTFAssetParseCache.d.ts +24 -0
- package/dist/GLTFAssetParseCache.d.ts.map +1 -0
- package/dist/GLTFAssetParseCache.js +100 -0
- package/dist/GLTFAssetParseCache.js.map +1 -0
- package/dist/GLTFExtensionSupport.js +3 -3
- package/dist/GLTFExtensionSupport.js.map +1 -1
- package/dist/GLTFLoader.d.ts +28 -1
- package/dist/GLTFLoader.d.ts.map +1 -1
- package/dist/GLTFLoader.js +176 -23
- package/dist/GLTFLoader.js.map +1 -1
- package/dist/GLTFRenderResources.d.ts +77 -2
- package/dist/GLTFRenderResources.d.ts.map +1 -1
- package/dist/GLTFRenderResources.js +310 -153
- package/dist/GLTFRenderResources.js.map +1 -1
- package/dist/KTX2BasisTextureTranscoder.d.ts +70 -12
- package/dist/KTX2BasisTextureTranscoder.d.ts.map +1 -1
- package/dist/KTX2BasisTextureTranscoder.js +225 -192
- package/dist/KTX2BasisTextureTranscoder.js.map +1 -1
- package/dist/KTX2TargetSelection.d.ts +25 -0
- package/dist/KTX2TargetSelection.d.ts.map +1 -0
- package/dist/KTX2TargetSelection.js +36 -0
- package/dist/KTX2TargetSelection.js.map +1 -0
- package/dist/KTX2TranscodeDriver.d.ts +70 -0
- package/dist/KTX2TranscodeDriver.d.ts.map +1 -0
- package/dist/KTX2TranscodeDriver.js +104 -0
- package/dist/KTX2TranscodeDriver.js.map +1 -0
- package/dist/KTX2TranscodeWorker.d.ts +30 -0
- package/dist/KTX2TranscodeWorker.d.ts.map +1 -0
- package/dist/KTX2TranscodeWorker.js +230 -0
- package/dist/KTX2TranscodeWorker.js.map +1 -0
- package/dist/MikkTSpaceTangents.d.ts +43 -0
- package/dist/MikkTSpaceTangents.d.ts.map +1 -0
- package/dist/MikkTSpaceTangents.js +149 -0
- package/dist/MikkTSpaceTangents.js.map +1 -0
- package/dist/asset-corpus/ProductionAssetCorpus.d.ts.map +1 -1
- package/dist/asset-corpus/ProductionAssetCorpus.js +7 -13
- package/dist/asset-corpus/ProductionAssetCorpus.js.map +1 -1
- package/dist/asset-corpus/ProductionGLTFRenderPipeline.d.ts +43 -0
- package/dist/asset-corpus/ProductionGLTFRenderPipeline.d.ts.map +1 -1
- package/dist/asset-corpus/ProductionGLTFRenderPipeline.js +146 -22
- package/dist/asset-corpus/ProductionGLTFRenderPipeline.js.map +1 -1
- package/dist/assetPhaseMarks.d.ts +14 -0
- package/dist/assetPhaseMarks.d.ts.map +1 -0
- package/dist/assetPhaseMarks.js +23 -0
- package/dist/assetPhaseMarks.js.map +1 -0
- package/dist/browser-index.d.ts +5 -1
- package/dist/browser-index.d.ts.map +1 -1
- package/dist/browser-index.js +3 -1
- package/dist/browser-index.js.map +1 -1
- package/dist/contracts/decoders.d.ts +15 -0
- package/dist/contracts/decoders.d.ts.map +1 -0
- package/dist/contracts/decoders.js +8 -0
- package/dist/contracts/decoders.js.map +1 -0
- package/dist/decoderLoad.d.ts +28 -0
- package/dist/decoderLoad.d.ts.map +1 -0
- package/dist/decoderLoad.js +49 -0
- package/dist/decoderLoad.js.map +1 -0
- package/dist/gltf/ImageDecode.d.ts +18 -0
- package/dist/gltf/ImageDecode.d.ts.map +1 -0
- package/dist/gltf/ImageDecode.js +140 -0
- package/dist/gltf/ImageDecode.js.map +1 -0
- package/dist/gltf-runtime.d.ts +1 -1
- package/dist/gltf-runtime.d.ts.map +1 -1
- package/dist/gltf-runtime.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lanes/index.d.ts +17 -0
- package/dist/lanes/index.d.ts.map +1 -0
- package/dist/lanes/index.js +17 -0
- package/dist/lanes/index.js.map +1 -0
- package/dist/lanes/prd01.d.ts +6 -0
- package/dist/lanes/prd01.d.ts.map +1 -0
- package/dist/lanes/prd01.js +6 -0
- package/dist/lanes/prd01.js.map +1 -0
- package/dist/lanes/prd02.d.ts +6 -0
- package/dist/lanes/prd02.d.ts.map +1 -0
- package/dist/lanes/prd02.js +6 -0
- package/dist/lanes/prd02.js.map +1 -0
- package/dist/lanes/prd03.d.ts +6 -0
- package/dist/lanes/prd03.d.ts.map +1 -0
- package/dist/lanes/prd03.js +6 -0
- package/dist/lanes/prd03.js.map +1 -0
- package/dist/lanes/prd04.d.ts +6 -0
- package/dist/lanes/prd04.d.ts.map +1 -0
- package/dist/lanes/prd04.js +6 -0
- package/dist/lanes/prd04.js.map +1 -0
- package/dist/lanes/prd05.d.ts +14 -0
- package/dist/lanes/prd05.d.ts.map +1 -0
- package/dist/lanes/prd05.js +14 -0
- package/dist/lanes/prd05.js.map +1 -0
- package/dist/lanes/prd06.d.ts +6 -0
- package/dist/lanes/prd06.d.ts.map +1 -0
- package/dist/lanes/prd06.js +6 -0
- package/dist/lanes/prd06.js.map +1 -0
- package/dist/lanes/prd07.d.ts +6 -0
- package/dist/lanes/prd07.d.ts.map +1 -0
- package/dist/lanes/prd07.js +6 -0
- package/dist/lanes/prd07.js.map +1 -0
- package/dist/lanes/prd08.d.ts +6 -0
- package/dist/lanes/prd08.d.ts.map +1 -0
- package/dist/lanes/prd08.js +6 -0
- package/dist/lanes/prd08.js.map +1 -0
- package/dist/lanes/prd09.d.ts +6 -0
- package/dist/lanes/prd09.d.ts.map +1 -0
- package/dist/lanes/prd09.js +6 -0
- package/dist/lanes/prd09.js.map +1 -0
- package/dist/lanes/prd10.d.ts +6 -0
- package/dist/lanes/prd10.d.ts.map +1 -0
- package/dist/lanes/prd10.js +6 -0
- package/dist/lanes/prd10.js.map +1 -0
- package/dist/lanes/prd11.d.ts +6 -0
- package/dist/lanes/prd11.d.ts.map +1 -0
- package/dist/lanes/prd11.js +6 -0
- package/dist/lanes/prd11.js.map +1 -0
- package/dist/lanes/prd12.d.ts +6 -0
- package/dist/lanes/prd12.d.ts.map +1 -0
- package/dist/lanes/prd12.js +6 -0
- package/dist/lanes/prd12.js.map +1 -0
- package/dist/lanes/prd13.d.ts +6 -0
- package/dist/lanes/prd13.d.ts.map +1 -0
- package/dist/lanes/prd13.js +6 -0
- package/dist/lanes/prd13.js.map +1 -0
- package/dist/lanes/prd14.d.ts +6 -0
- package/dist/lanes/prd14.d.ts.map +1 -0
- package/dist/lanes/prd14.js +6 -0
- package/dist/lanes/prd14.js.map +1 -0
- package/dist/lanes/prd15.d.ts +6 -0
- package/dist/lanes/prd15.d.ts.map +1 -0
- package/dist/lanes/prd15.js +6 -0
- package/dist/lanes/prd15.js.map +1 -0
- package/dist/vite/auraDecoders.d.ts +31 -0
- package/dist/vite/auraDecoders.d.ts.map +1 -0
- package/dist/vite/auraDecoders.js +89 -0
- package/dist/vite/auraDecoders.js.map +1 -0
- package/package.json +13 -5
- package/vendor/basis/README.md +25 -0
- package/vendor/basis/basis_transcoder.js +19 -0
- package/vendor/basis/basis_transcoder.wasm +0 -0
- package/vendor/draco/README.md +23 -0
- package/vendor/draco/draco_decoder.js +33 -0
- package/vendor/draco/draco_decoder.wasm +0 -0
- package/vendor/meshopt/README.md +21 -0
- package/vendor/meshopt/meshopt_decoder.cjs +199 -0
- package/vendor/meshopt/meshopt_decoder.mjs +196 -0
- package/vendor/meshopt_decoder.mjs +196 -0
|
@@ -1,220 +1,202 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
throw new Error(`KTX2/Basis target format ${String(targetFormat)} is unsupported`);
|
|
13
|
-
}
|
|
14
|
-
const compressedLevels = await parseTextureLevels(source, targetFormat, options.loaderOptions);
|
|
15
|
-
const baseLevel = compressedLevels[0];
|
|
16
|
-
if (!baseLevel) {
|
|
17
|
-
throw new Error("KTX2/Basis transcode produced no texture levels");
|
|
18
|
-
}
|
|
19
|
-
if (targetFormat === "rgba8") {
|
|
20
|
-
return {
|
|
21
|
-
width: baseLevel.width,
|
|
22
|
-
height: baseLevel.height,
|
|
23
|
-
colorSpace: "linear",
|
|
24
|
-
format: "rgba8",
|
|
25
|
-
data: baseLevel.data
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
const fallbackLevels = options.includeFallback === false
|
|
29
|
-
? []
|
|
30
|
-
: validRGBA8Levels(await parseTextureLevels(source, "rgba8", options.loaderOptions));
|
|
31
|
-
const format = mapTargetFormat(targetFormat);
|
|
32
|
-
return {
|
|
33
|
-
width: baseLevel.width,
|
|
34
|
-
height: baseLevel.height,
|
|
35
|
-
colorSpace: "linear",
|
|
36
|
-
format,
|
|
37
|
-
mipLevels: compressedLevels,
|
|
38
|
-
fallbackMipLevels: fallbackLevels
|
|
39
|
-
};
|
|
1
|
+
import { selectKTX2TargetFormat } from "./KTX2TargetSelection.js";
|
|
2
|
+
import { withDecoderTimeout } from "./decoderLoad.js";
|
|
3
|
+
import { basisTranscoderFormat, transcodeKTX2Levels } from "./KTX2TranscodeDriver.js";
|
|
4
|
+
import { createKTX2TranscodeWorkerPool } from "./KTX2TranscodeWorker.js";
|
|
5
|
+
/**
|
|
6
|
+
* Maps the transcode target to the render-side `TextureFormat` union
|
|
7
|
+
* (C-16). "bc1-rgb-unorm" shares DXT1's block layout with "bc1-rgba-unorm"
|
|
8
|
+
* — the renderer's opaque flag carries the distinction, so they alias here.
|
|
9
|
+
*/
|
|
10
|
+
export function ktx2TargetToTextureFormat(format) {
|
|
11
|
+
return format === "bc1-rgb-unorm" ? "bc1-rgba-unorm" : format;
|
|
40
12
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
13
|
+
const DEFAULT_TRANSCODER_URL = "/aura-decoders/basis/";
|
|
14
|
+
const workerPools = new Map();
|
|
15
|
+
function workerPool(transcoderUrl, workerCount) {
|
|
16
|
+
const key = `${transcoderUrl}#${workerCount}`;
|
|
17
|
+
let pool = workerPools.get(key);
|
|
18
|
+
if (!pool) {
|
|
19
|
+
pool = createKTX2TranscodeWorkerPool(transcoderUrl, workerCount);
|
|
20
|
+
workerPools.set(key, pool);
|
|
47
21
|
}
|
|
48
|
-
return
|
|
22
|
+
return pool;
|
|
49
23
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
...basisOptions(loaderOptions),
|
|
64
|
-
containerFormat: "ktx2",
|
|
65
|
-
module: "encoder",
|
|
66
|
-
format: loadersGLBasisFormat(targetFormat)
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
const levels = parsed[0];
|
|
70
|
-
if (!levels || levels.length === 0) {
|
|
71
|
-
throw new Error("KTX2/Basis transcode returned no texture levels");
|
|
24
|
+
const basisModuleCache = new Map();
|
|
25
|
+
/**
|
|
26
|
+
* Loads + initialises the vendored Basis transcoder module, once per
|
|
27
|
+
* `transcoderUrl`. Browser path injects a `<script>` (UMD global `BASIS`);
|
|
28
|
+
* Node/test path evaluates the vendored UMD as CJS so no `document` needed.
|
|
29
|
+
*/
|
|
30
|
+
export function loadBasisTranscoderModule(transcoderUrl = DEFAULT_TRANSCODER_URL) {
|
|
31
|
+
const base = transcoderUrl.endsWith("/") ? transcoderUrl : `${transcoderUrl}/`;
|
|
32
|
+
let entry = basisModuleCache.get(base);
|
|
33
|
+
if (!entry) {
|
|
34
|
+
entry = { promise: (typeof document !== "undefined" ? loadBasisModuleBrowser(base) : loadBasisModuleNode()) };
|
|
35
|
+
entry.promise.catch(() => basisModuleCache.delete(base));
|
|
36
|
+
basisModuleCache.set(base, entry);
|
|
72
37
|
}
|
|
73
|
-
return
|
|
74
|
-
width: level.width,
|
|
75
|
-
height: level.height,
|
|
76
|
-
data: new Uint8Array(level.data)
|
|
77
|
-
}));
|
|
38
|
+
return entry.promise;
|
|
78
39
|
}
|
|
79
|
-
function
|
|
80
|
-
|
|
81
|
-
|
|
40
|
+
async function loadBasisModuleBrowser(base) {
|
|
41
|
+
const globalName = "BASIS";
|
|
42
|
+
const globals = globalThis;
|
|
43
|
+
if (typeof globals.BASIS !== "function") {
|
|
44
|
+
await withDecoderTimeout(new Promise((resolve, reject) => {
|
|
45
|
+
const script = document.createElement("script");
|
|
46
|
+
script.src = `${base}basis_transcoder.js`;
|
|
47
|
+
script.async = true;
|
|
48
|
+
script.onload = () => resolve();
|
|
49
|
+
script.onerror = () => reject(new Error(`Failed to load ${script.src}`));
|
|
50
|
+
document.head.appendChild(script);
|
|
51
|
+
}), `script load ${base}basis_transcoder.js`);
|
|
52
|
+
}
|
|
53
|
+
const BASIS = globals.BASIS;
|
|
54
|
+
if (typeof BASIS !== "function") {
|
|
55
|
+
throw new Error("basis_transcoder.js loaded but the BASIS global is missing");
|
|
82
56
|
}
|
|
83
|
-
|
|
57
|
+
// Emscripten MODULARIZE: the object passed to BASIS() becomes the Module;
|
|
58
|
+
// onRuntimeInitialized fires asynchronously once the wasm is compiled. A
|
|
59
|
+
// missing/SPA-fallback wasm aborts through onAbort — without it (and the
|
|
60
|
+
// timeout) this promise never settled and require() hung.
|
|
61
|
+
const moduleConfig = { locateFile: (file) => `${base}${file}` };
|
|
62
|
+
const module = await withDecoderTimeout(new Promise((resolve, reject) => {
|
|
63
|
+
try {
|
|
64
|
+
moduleConfig.onRuntimeInitialized = () => resolve(moduleConfig);
|
|
65
|
+
moduleConfig.onAbort = (reason) => reject(new Error(`basis_transcoder aborted: ${String(reason)}`));
|
|
66
|
+
BASIS(moduleConfig);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
70
|
+
}
|
|
71
|
+
}), "basis_transcoder init");
|
|
72
|
+
module.initializeBasis();
|
|
73
|
+
return module;
|
|
84
74
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
75
|
+
// Computed specifiers: these loads are runtime-optional (Node fallback path)
|
|
76
|
+
// and must stay unresolvable to consumer bundlers at build time — the engine
|
|
77
|
+
// pack does not declare node builtins or `meshoptimizer` as dependencies.
|
|
78
|
+
async function nodeBuiltins() {
|
|
79
|
+
const spec = (name) => `node:${name}`;
|
|
80
|
+
const [fs, mod, url, path] = await Promise.all([import(spec("fs")), import(spec("module")), import(spec("url")), import(spec("path"))]);
|
|
89
81
|
return {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
82
|
+
fs: fs,
|
|
83
|
+
module: mod,
|
|
84
|
+
url: url,
|
|
85
|
+
path: path
|
|
94
86
|
};
|
|
95
87
|
}
|
|
96
|
-
async function
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
return format;
|
|
130
|
-
case "rgba8":
|
|
131
|
-
throw new Error("rgba8 is not a compressed texture target");
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
function toArrayBuffer(bytes) {
|
|
135
|
-
if (bytes instanceof ArrayBuffer)
|
|
136
|
-
return bytes.slice(0);
|
|
137
|
-
const copy = new Uint8Array(bytes.byteLength);
|
|
138
|
-
copy.set(new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength));
|
|
139
|
-
return copy.buffer;
|
|
88
|
+
async function loadBasisModuleNode() {
|
|
89
|
+
const { fs, module: nodeModule, url: nodeUrl, path: nodePath } = await nodeBuiltins();
|
|
90
|
+
const { readFileSync, existsSync } = fs;
|
|
91
|
+
const { createRequire } = nodeModule;
|
|
92
|
+
const { fileURLToPath } = nodeUrl;
|
|
93
|
+
const { dirname } = nodePath;
|
|
94
|
+
const require2 = createRequire(import.meta.url);
|
|
95
|
+
const candidates = [
|
|
96
|
+
new URL("../vendor/basis/basis_transcoder.js", import.meta.url),
|
|
97
|
+
new URL("../../vendor/basis/basis_transcoder.js", import.meta.url)
|
|
98
|
+
];
|
|
99
|
+
const jsUrl = candidates.find((candidate) => existsSync(candidate));
|
|
100
|
+
if (!jsUrl)
|
|
101
|
+
throw new Error("vendored basis_transcoder.js not found next to @aura3d/assets");
|
|
102
|
+
const wasmUrl = new URL("basis_transcoder.wasm", jsUrl);
|
|
103
|
+
const jsPath = fileURLToPath(jsUrl);
|
|
104
|
+
const code = readFileSync(jsUrl, "utf8");
|
|
105
|
+
const box = { exports: {} };
|
|
106
|
+
new Function("module", "exports", "require", "__dirname", "__filename", code)(box, box.exports, require2, dirname(jsPath), jsPath);
|
|
107
|
+
const BASIS = box.exports.BASIS ?? box.exports.default ?? box.exports;
|
|
108
|
+
if (typeof BASIS !== "function")
|
|
109
|
+
throw new Error("vendored basis_transcoder.js did not export BASIS");
|
|
110
|
+
const module = await withDecoderTimeout(new Promise((resolve, reject) => {
|
|
111
|
+
let mod;
|
|
112
|
+
const produced = BASIS({
|
|
113
|
+
wasmBinary: existsSync(wasmUrl) ? readFileSync(wasmUrl) : undefined,
|
|
114
|
+
onRuntimeInitialized: () => resolve(mod),
|
|
115
|
+
onAbort: (reason) => reject(new Error(`basis_transcoder aborted: ${String(reason)}`))
|
|
116
|
+
});
|
|
117
|
+
mod = (produced && typeof produced === "object" ? produced : box.exports);
|
|
118
|
+
}), "basis_transcoder init");
|
|
119
|
+
module.initializeBasis();
|
|
120
|
+
return module;
|
|
140
121
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
const
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
122
|
+
/**
|
|
123
|
+
* Transcodes a KTX2/Basis texture to `options.targetFormat` using the vendored
|
|
124
|
+
* Basis transcoder. In browsers with `Worker` the transcode runs in the
|
|
125
|
+
* blob-worker pool; elsewhere it runs on the calling thread via the vendored
|
|
126
|
+
* module — either way the bytes come from `transcoderUrl`/`vendor/basis`, never
|
|
127
|
+
* a CDN. `maxDimension` skips too-large mip levels during transcode.
|
|
128
|
+
*/
|
|
129
|
+
export async function transcodeKTX2BasisTexture(bytes, options) {
|
|
130
|
+
// Required by contract; legacy callers that omit it get the honest CPU
|
|
131
|
+
// fallback rather than the old silent ETC2 default.
|
|
132
|
+
const targetFormat = options.targetFormat ?? "rgba8";
|
|
133
|
+
const colorSpace = options.colorSpace ?? "linear";
|
|
134
|
+
const transcoderUrl = options.transcoderUrl ?? DEFAULT_TRANSCODER_URL;
|
|
135
|
+
const transcoderFormat = basisTranscoderFormat(targetFormat);
|
|
136
|
+
const workerPath = typeof Worker !== "undefined";
|
|
137
|
+
const run = async (format) => {
|
|
138
|
+
if (workerPath) {
|
|
139
|
+
return workerPool(transcoderUrl, options.workerCount ?? 2).transcode({
|
|
140
|
+
bytes,
|
|
141
|
+
transcoderFormat: format,
|
|
142
|
+
maxDimension: options.maxDimension
|
|
143
|
+
});
|
|
161
144
|
}
|
|
162
|
-
|
|
145
|
+
const module = await loadBasisTranscoderModule(transcoderUrl);
|
|
146
|
+
return transcodeKTX2Levels(module, bytes, format, options.maxDimension);
|
|
163
147
|
};
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
}
|
|
148
|
+
const result = await run(transcoderFormat);
|
|
149
|
+
let fallback;
|
|
150
|
+
if (targetFormat !== "rgba8" && options.includeFallback !== false) {
|
|
151
|
+
fallback = await run(BASIS_TRANSCODER_FORMAT_FALLBACK);
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
width: result.width,
|
|
155
|
+
height: result.height,
|
|
156
|
+
format: targetFormat,
|
|
157
|
+
colorSpace,
|
|
158
|
+
data: result.levels[0]?.data,
|
|
159
|
+
mipLevels: result.levels.map((level) => ({ width: level.width, height: level.height, data: level.data })),
|
|
160
|
+
fallbackData: fallback?.levels[0]?.data,
|
|
161
|
+
fallbackMipLevels: fallback ? fallback.levels.map((level) => ({ width: level.width, height: level.height, data: level.data })) : undefined,
|
|
162
|
+
isUASTC: result.isUASTC,
|
|
163
|
+
hasAlpha: result.hasAlpha
|
|
181
164
|
};
|
|
182
|
-
nodeFileHooksReady = true;
|
|
183
|
-
}
|
|
184
|
-
async function importNodeModule(specifier) {
|
|
185
|
-
return import(/* @vite-ignore */ specifier);
|
|
186
165
|
}
|
|
166
|
+
const BASIS_TRANSCODER_FORMAT_FALLBACK = 13; // TranscoderFormat.RGBA32
|
|
187
167
|
/**
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
168
|
+
* Decoder-capability probe + reporting (PRD-05 §7.4). Defaults: meshopt and
|
|
169
|
+
* KTX2 on (their modules ship with the package/are served at
|
|
170
|
+
* `aura-decoders/`), Draco lazy — reported loaded-once-`require(["draco"])`-ed.
|
|
171
|
+
* `chosenKtx2Target` goes through `selectKTX2TargetFormat` whenever real GPU
|
|
172
|
+
* capability tokens are provided; with no GPU info it reports the requested
|
|
173
|
+
* target unchanged.
|
|
191
174
|
*/
|
|
192
175
|
export async function ensureCompressedTextureSupport(request = {}, probes = {}) {
|
|
193
176
|
const wantDraco = request.draco ?? false;
|
|
194
|
-
const wantMeshopt = request.meshopt ??
|
|
177
|
+
const wantMeshopt = request.meshopt ?? true;
|
|
195
178
|
const wantKtx2 = request.ktx2 ?? true;
|
|
196
|
-
const dracoAvailable = await resolveProbe(probes.dracoAvailable,
|
|
197
|
-
const meshoptAvailable = await resolveProbe(probes.meshoptAvailable,
|
|
198
|
-
const ktx2Available = await resolveProbe(probes.ktx2Available,
|
|
179
|
+
const dracoAvailable = await resolveProbe(probes.dracoAvailable, probeVendoredDraco);
|
|
180
|
+
const meshoptAvailable = await resolveProbe(probes.meshoptAvailable, probeMeshoptPackage);
|
|
181
|
+
const ktx2Available = await resolveProbe(probes.ktx2Available, probeVendoredBasis);
|
|
199
182
|
const gpuCompressedFormats = probes.gpuCompressedFormats ?? [];
|
|
200
183
|
const requestedTarget = request.targetFormat ?? "etc2-rgba8unorm";
|
|
201
|
-
const
|
|
202
|
-
const gpuSet = new Set(gpuCompressedFormats);
|
|
184
|
+
const caps = capabilitiesFromTokens(gpuCompressedFormats);
|
|
203
185
|
const chosenKtx2Target = !wantKtx2 || !ktx2Available
|
|
204
186
|
? "rgba8"
|
|
205
|
-
:
|
|
187
|
+
: gpuCompressedFormats.length === 0
|
|
206
188
|
? requestedTarget
|
|
207
|
-
: (
|
|
189
|
+
: selectKTX2TargetFormat(caps, "uastc", true, "srgb");
|
|
208
190
|
return {
|
|
209
191
|
schema: "a3d-compressed-texture-support",
|
|
210
192
|
draco: {
|
|
211
193
|
requested: wantDraco,
|
|
212
194
|
available: dracoAvailable,
|
|
213
195
|
detail: !wantDraco
|
|
214
|
-
? "Draco not requested."
|
|
196
|
+
? "Draco not requested (lazy — loads on registry.require([\"draco\"]))."
|
|
215
197
|
: dracoAvailable
|
|
216
|
-
? "
|
|
217
|
-
: "Draco requested but
|
|
198
|
+
? "Vendored Draco decoder confirmed by probe."
|
|
199
|
+
: "Draco requested but the vendored decoder did not resolve — geometry decoding will fail closed."
|
|
218
200
|
},
|
|
219
201
|
meshopt: {
|
|
220
202
|
requested: wantMeshopt,
|
|
@@ -222,8 +204,8 @@ export async function ensureCompressedTextureSupport(request = {}, probes = {})
|
|
|
222
204
|
detail: !wantMeshopt
|
|
223
205
|
? "Meshopt not requested."
|
|
224
206
|
: meshoptAvailable
|
|
225
|
-
? "
|
|
226
|
-
: "Meshopt requested but
|
|
207
|
+
? "meshoptimizer package resolved."
|
|
208
|
+
: "Meshopt requested but the meshoptimizer package did not resolve — buffer decoding will fail closed."
|
|
227
209
|
},
|
|
228
210
|
ktx2: {
|
|
229
211
|
requested: wantKtx2,
|
|
@@ -231,8 +213,8 @@ export async function ensureCompressedTextureSupport(request = {}, probes = {})
|
|
|
231
213
|
detail: !wantKtx2
|
|
232
214
|
? "KTX2 not requested; rgba8 fallback path."
|
|
233
215
|
: ktx2Available
|
|
234
|
-
? `KTX2 transcoder resolved; target=${chosenKtx2Target}.`
|
|
235
|
-
: "KTX2 requested but the transcoder
|
|
216
|
+
? `Vendored KTX2 transcoder resolved; target=${chosenKtx2Target}.`
|
|
217
|
+
: "KTX2 requested but the vendored transcoder did not resolve — rgba8 fallback path."
|
|
236
218
|
},
|
|
237
219
|
gpuCompressedFormats,
|
|
238
220
|
chosenKtx2Target
|
|
@@ -245,10 +227,61 @@ async function resolveProbe(probe, fallback) {
|
|
|
245
227
|
return Boolean(await probe());
|
|
246
228
|
return Boolean(await fallback());
|
|
247
229
|
}
|
|
248
|
-
|
|
230
|
+
function capabilitiesFromTokens(tokens) {
|
|
231
|
+
const caps = { astc: false, bptc: false, etc2: false, s3tc: false, s3tcSrgb: false };
|
|
232
|
+
for (const raw of tokens) {
|
|
233
|
+
const token = raw.toLowerCase();
|
|
234
|
+
if (token === "astc" || token === "astc-4x4-rgba-unorm")
|
|
235
|
+
caps.astc = true;
|
|
236
|
+
else if (token === "bptc" || token === "bc7" || token === "bc7-rgba-unorm")
|
|
237
|
+
caps.bptc = true;
|
|
238
|
+
else if (token === "etc2" || token === "etc2-rgba8unorm" || token === "etc2-rgb8unorm")
|
|
239
|
+
caps.etc2 = true;
|
|
240
|
+
else if (token === "s3tc-srgb" || token === "s3tcsrgb")
|
|
241
|
+
caps.s3tcSrgb = true;
|
|
242
|
+
else if (token === "s3tc" || token === "bc1-rgb-unorm" || token === "bc1-rgba-unorm" || token === "bc3-rgba-unorm")
|
|
243
|
+
caps.s3tc = true;
|
|
244
|
+
}
|
|
245
|
+
return caps;
|
|
246
|
+
}
|
|
247
|
+
async function probeMeshoptPackage() {
|
|
248
|
+
// Browsers resolve the same-origin vendored decoder; Node resolves the
|
|
249
|
+
// `meshoptimizer` package (non-static specifier — build-optional).
|
|
250
|
+
if (typeof document !== "undefined")
|
|
251
|
+
return probeVendored("meshopt", "meshopt_decoder.mjs");
|
|
252
|
+
try {
|
|
253
|
+
const pkg = ["mesh", "optimizer"].join("");
|
|
254
|
+
const mod = await import(pkg);
|
|
255
|
+
const decoder = (mod.MeshoptDecoder ?? mod.default?.MeshoptDecoder);
|
|
256
|
+
return decoder !== undefined && typeof decoder === "object";
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
async function probeVendoredBasis() {
|
|
263
|
+
return probeVendored("basis", "basis_transcoder.js");
|
|
264
|
+
}
|
|
265
|
+
async function probeVendoredDraco() {
|
|
266
|
+
return probeVendored("draco", "draco_decoder.js");
|
|
267
|
+
}
|
|
268
|
+
async function probeVendored(dir, file) {
|
|
269
|
+
if (typeof fetch === "function" && typeof document !== "undefined") {
|
|
270
|
+
try {
|
|
271
|
+
const response = await fetch(`/aura-decoders/${dir}/${file}`, { method: "HEAD" });
|
|
272
|
+
if (response.ok)
|
|
273
|
+
return true;
|
|
274
|
+
}
|
|
275
|
+
catch { /* fall through to node probe */ }
|
|
276
|
+
}
|
|
249
277
|
try {
|
|
250
|
-
await
|
|
251
|
-
|
|
278
|
+
const { fs } = await nodeBuiltins();
|
|
279
|
+
const { existsSync } = fs;
|
|
280
|
+
for (const base of ["../vendor", "../../vendor"]) {
|
|
281
|
+
if (existsSync(new URL(`${base}/${dir}/${file}`, import.meta.url)))
|
|
282
|
+
return true;
|
|
283
|
+
}
|
|
284
|
+
return false;
|
|
252
285
|
}
|
|
253
286
|
catch {
|
|
254
287
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KTX2BasisTextureTranscoder.js","sourceRoot":"","sources":["../../../../packages/assets/src/KTX2BasisTextureTranscoder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"KTX2BasisTextureTranscoder.js","sourceRoot":"","sources":["../../../../packages/assets/src/KTX2BasisTextureTranscoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CompressedTextureCapabilities } from "@aura3d/rendering/contracts";
|
|
2
|
+
export type { CompressedTextureCapabilities };
|
|
3
|
+
/**
|
|
4
|
+
* C-16 §7.4 — GPU-compressed targets a KTX2 texture can be transcoded to.
|
|
5
|
+
* "bc1-rgb-unorm" is the opaque ETC1S target; the existing
|
|
6
|
+
* `TextureCompressedFormat` member "bc1-rgba-unorm" covers the same block
|
|
7
|
+
* layout on the render side (DXT1 has no alpha plane).
|
|
8
|
+
*/
|
|
9
|
+
export type KTX2BasisTargetFormat = "astc-4x4-rgba-unorm" | "bc7-rgba-unorm" | "etc2-rgba8unorm" | "etc2-rgb8unorm" | "bc3-rgba-unorm" | "bc1-rgb-unorm" | "rgba8";
|
|
10
|
+
/**
|
|
11
|
+
* KTX2 target selection (PRD-05 §7.4, ASSET_MATRIX §matrix.ktx2).
|
|
12
|
+
*
|
|
13
|
+
* UASTC → astc-4x4 > bc7 > etc2-rgba8 > rgba8
|
|
14
|
+
* ETC1S → etc2-rgb8 (opaque) / etc2-rgba8 (alpha)
|
|
15
|
+
* > bc1 (opaque) / bc3 (alpha) > rgba8
|
|
16
|
+
* sRGB slot on a device with s3tc but not s3tcSrgb never picks bc1/bc3 —
|
|
17
|
+
* it selects bptc when available, else rgba8 (linear BC would decode the
|
|
18
|
+
* sRGB texels incorrectly).
|
|
19
|
+
*
|
|
20
|
+
* ASTC/BPTC/ETC2 each carry sRGB internal-format variants inside the same
|
|
21
|
+
* WebGL extension, so colour space only constrains the S3TC branch (S3TC
|
|
22
|
+
* splits unorm and sRGB support across two extensions).
|
|
23
|
+
*/
|
|
24
|
+
export declare function selectKTX2TargetFormat(caps: CompressedTextureCapabilities, source: "uastc" | "etc1s", hasAlpha: boolean, colorSpace: "srgb" | "linear"): KTX2BasisTargetFormat;
|
|
25
|
+
//# sourceMappingURL=KTX2TargetSelection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KTX2TargetSelection.d.ts","sourceRoot":"","sources":["../../../../packages/assets/src/KTX2TargetSelection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAEjF,YAAY,EAAE,6BAA6B,EAAE,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAC7B,qBAAqB,GACrB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,OAAO,CAAC;AAEZ;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,6BAA6B,EACnC,MAAM,EAAE,OAAO,GAAG,OAAO,EACzB,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAC5B,qBAAqB,CAevB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTX2 target selection (PRD-05 §7.4, ASSET_MATRIX §matrix.ktx2).
|
|
3
|
+
*
|
|
4
|
+
* UASTC → astc-4x4 > bc7 > etc2-rgba8 > rgba8
|
|
5
|
+
* ETC1S → etc2-rgb8 (opaque) / etc2-rgba8 (alpha)
|
|
6
|
+
* > bc1 (opaque) / bc3 (alpha) > rgba8
|
|
7
|
+
* sRGB slot on a device with s3tc but not s3tcSrgb never picks bc1/bc3 —
|
|
8
|
+
* it selects bptc when available, else rgba8 (linear BC would decode the
|
|
9
|
+
* sRGB texels incorrectly).
|
|
10
|
+
*
|
|
11
|
+
* ASTC/BPTC/ETC2 each carry sRGB internal-format variants inside the same
|
|
12
|
+
* WebGL extension, so colour space only constrains the S3TC branch (S3TC
|
|
13
|
+
* splits unorm and sRGB support across two extensions).
|
|
14
|
+
*/
|
|
15
|
+
export function selectKTX2TargetFormat(caps, source, hasAlpha, colorSpace) {
|
|
16
|
+
if (source === "uastc") {
|
|
17
|
+
if (caps.astc)
|
|
18
|
+
return "astc-4x4-rgba-unorm";
|
|
19
|
+
if (caps.bptc)
|
|
20
|
+
return "bc7-rgba-unorm";
|
|
21
|
+
if (caps.etc2)
|
|
22
|
+
return "etc2-rgba8unorm";
|
|
23
|
+
return "rgba8";
|
|
24
|
+
}
|
|
25
|
+
// ETC1S
|
|
26
|
+
if (caps.etc2)
|
|
27
|
+
return hasAlpha ? "etc2-rgba8unorm" : "etc2-rgb8unorm";
|
|
28
|
+
const s3tcUsable = colorSpace === "srgb" ? caps.s3tcSrgb : caps.s3tc;
|
|
29
|
+
if (s3tcUsable)
|
|
30
|
+
return hasAlpha ? "bc3-rgba-unorm" : "bc1-rgb-unorm";
|
|
31
|
+
if (colorSpace === "srgb" && caps.s3tc && !caps.s3tcSrgb && caps.bptc) {
|
|
32
|
+
return "bc7-rgba-unorm";
|
|
33
|
+
}
|
|
34
|
+
return "rgba8";
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=KTX2TargetSelection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KTX2TargetSelection.js","sourceRoot":"","sources":["../../../../packages/assets/src/KTX2TargetSelection.ts"],"names":[],"mappings":"AAmBA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAmC,EACnC,MAAyB,EACzB,QAAiB,EACjB,UAA6B;IAE7B,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,qBAAqB,CAAC;QAC5C,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,gBAAgB,CAAC;QACvC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,iBAAiB,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,QAAQ;IACR,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACtE,MAAM,UAAU,GAAG,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACrE,IAAI,UAAU;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC;IACrE,IAAI,UAAU,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACtE,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|