@galacean/effects-plugin-ktx2 2.8.0-alpha.1 → 2.8.0-alpha.2
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/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +4 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Description: Galacean Effects player Khronos Texture 2.0 plugin
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 澄弈
|
|
6
|
-
* Version: v2.8.0-alpha.
|
|
6
|
+
* Version: v2.8.0-alpha.2
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
'use strict';
|
|
@@ -1471,8 +1471,9 @@ function zstddecWasm(imports){return _loadWasmModule(0, null, 'AGFzbQEAAAABpQEVY
|
|
|
1471
1471
|
|
|
1472
1472
|
/**
|
|
1473
1473
|
* 插件版本号
|
|
1474
|
-
*/ var version = "2.8.0-alpha.
|
|
1474
|
+
*/ var version = "2.8.0-alpha.2";
|
|
1475
1475
|
registerKTX2Loader();
|
|
1476
|
+
EFFECTS.logger.info("Plugin ktx2 version: " + version + ".");
|
|
1476
1477
|
if (version !== EFFECTS__namespace.version) {
|
|
1477
1478
|
console.error("注意:请统一 KTX2 插件与 Player 版本,不统一的版本混用会有不可预知的后果!", "\nAttention: Please ensure the KTX2 plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!");
|
|
1478
1479
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_async_to_generator.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/ktx2-common.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../src/transcoder/worker-pool.ts","../src/transcoder/texture-transcoder.ts","../src/transcoder/buffer-reader.ts","../src/ktx2-container.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../src/transcoder/khronos-workercode.ts","../src/transcoder/khronos-transcoder.ts","../src/ktx2-loader.ts","../src/index.ts"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) resolve(value);\n else Promise.resolve(value).then(_next, _throw);\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\nexport { _async_to_generator as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * KTX2 transcode target format.\n * if you modify this file, please also modify KTX2TargetFormat in binomial-workercode.ts\n */\nexport enum KTX2TargetFormat {\n /** RGB(A) compressed format, 128 bits per 4x4 pixel block. */\n ASTC = 0\n}\n\n/**\n * Texture format enumeration.\n */\nexport enum TextureFormat {\n /** RGB format, 8 bits per channel. */\n R8G8B8 = 0,\n /** RGBA format, 8 bits per channel. */\n R8G8B8A8 = 1,\n /** RGB(A) compressed format, 128 bits per 4x4 pixel block. */\n ASTC_4x4 = 2\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","/**\n * @internal\n * WorkerPool, T 为发送消息的类型,U 为返回值的类型。\n */\nexport class WorkerPool<T = any, U = any> {\n private taskQueue: TaskItem<T, U>[] = [];\n private workerStatus: number = 0;\n private workerItems: WorkerItem<U>[];\n private initPromises: Map<number, Promise<Worker>> = new Map();\n private destroyed = false;\n\n /**\n * WorkerPool 的构造函数。\n * @param limitedCount - worker数量上限\n * @param workerCreator - worker创建器\n */\n constructor (\n public readonly limitedCount = 2,\n private readonly workerCreator: () => Worker | Promise<Worker>,\n ) {\n if (limitedCount > 8 || limitedCount < 1) {\n throw new Error('limitedCount must be between 1 and 8');\n }\n this.workerItems = new Array<WorkerItem<U>>(limitedCount);\n }\n\n prepareWorker () {\n const count = this.limitedCount;\n const promises = new Array<Promise<Worker>>(count);\n\n for (let i = 0; i < count; i++) {\n promises.push(this.ensureWorker(i));\n }\n\n return Promise.all(promises);\n }\n\n private ensureWorker (workerId: number): Promise<Worker> {\n if (!this.initPromises.has(workerId)) {\n this.initPromises.set(workerId, this.initWorker(workerId));\n }\n\n return this.initPromises.get(workerId)!;\n }\n\n /**\n * 向 worker 发送消息。\n * @param message - 要发送给 worker 的消息\n * @returns 返回一个消息处理结果的 Promise\n */\n postMessage (message: T): Promise<U> {\n if (this.destroyed) {\n return Promise.reject(new Error('Worker Pool destroyed'));\n }\n\n return new Promise((resolve, reject) => {\n const workerId = this.getIdleWorkerId();\n\n if (workerId !== -1) {\n this.ensureWorker(workerId)\n .then(() => {\n if (this.destroyed) {\n throw new Error('Worker Pool destroyed');\n }\n const workerItem = this.workerItems[workerId];\n\n workerItem.resolve = resolve;\n workerItem.reject = reject;\n workerItem.worker.postMessage(message);\n })\n .catch(error => {\n this.workerStatus &= ~(1 << workerId);\n this.initPromises.delete(workerId);\n reject(error);\n });\n } else {\n this.taskQueue.push({ resolve, reject, message });\n }\n });\n }\n\n private initWorker (workerId: number): Promise<Worker> {\n return Promise.resolve(this.workerCreator()).then(worker => {\n if (this.destroyed) {\n worker.terminate();\n throw new Error('Worker Pool destroyed');\n }\n\n const onMessage = this.onMessage.bind(this, workerId);\n const onError = (event: ErrorEvent) => {\n const workerItem = this.workerItems[workerId];\n\n if (workerItem) {\n workerItem.reject(event.error || new Error(event.message || 'Worker error'));\n this.nextTask(workerId);\n }\n };\n\n worker.addEventListener('message', onMessage);\n worker.addEventListener('error', onError);\n\n this.workerItems[workerId] = {\n worker,\n resolve: () => { },\n reject: () => { },\n onMessage,\n onError,\n };\n\n return worker;\n });\n }\n\n /**\n * 获取空闲的 worker ID,并原子性地标记为忙碌\n * @returns worker ID,如果没有空闲 worker 返回 -1\n */\n private getIdleWorkerId () {\n for (let i = 0, count = this.limitedCount; i < count; i++) {\n if (!(this.workerStatus & (1 << i))) {\n this.workerStatus |= 1 << i; // ✅ 原子性标记\n\n return i;\n }\n }\n\n return -1;\n }\n\n private onMessage (workerId: number, msg: MessageEvent<U>) {\n const workerItem = this.workerItems[workerId];\n\n if (!workerItem) {\n return;\n }\n\n const error = (msg.data as ErrorMessageData).error;\n\n if (error) {\n workerItem.reject(error);\n } else {\n workerItem.resolve(msg.data);\n }\n\n this.nextTask(workerId);\n }\n\n private nextTask (workerId: number) {\n if (this.taskQueue.length) {\n const taskItem = this.taskQueue.shift() as TaskItem<T, U>;\n const workerItem = this.workerItems[workerId];\n\n if (!workerItem) {\n taskItem.reject(new Error('Worker not initialized'));\n this.workerStatus &= ~(1 << workerId);\n\n return;\n }\n\n workerItem.resolve = taskItem.resolve;\n workerItem.reject = taskItem.reject;\n workerItem.worker.postMessage(taskItem.message);\n } else {\n this.workerStatus &= ~(1 << workerId);\n }\n }\n\n destroy (): void {\n if (this.destroyed) {\n return;\n }\n\n this.destroyed = true;\n const workerItems = this.workerItems;\n const error = new Error('Worker Pool destroyed');\n\n for (let i = 0, n = workerItems.length; i < n; i++) {\n const workerItem = workerItems[i];\n\n if (!workerItem) { continue; }\n\n if (workerItem.onMessage) {\n workerItem.worker.removeEventListener('message', workerItem.onMessage);\n }\n if (workerItem.onError) {\n workerItem.worker.removeEventListener('error', workerItem.onError);\n }\n\n workerItem.worker.terminate();\n workerItem.reject?.(error);\n }\n\n while (this.taskQueue.length) {\n this.taskQueue.shift()?.reject(error);\n }\n\n workerItems.length = 0;\n this.taskQueue.length = 0;\n this.workerStatus = 0;\n this.initPromises.clear();\n }\n}\n\ninterface ErrorMessageData {\n error: unknown,\n}\n\ninterface WorkerItem<U> {\n worker: Worker,\n resolve: (item: U | PromiseLike<U>) => void,\n reject: (reason?: any) => void,\n onMessage?: (msg: MessageEvent<U>) => void,\n onError?: (event: ErrorEvent) => void,\n}\n\ninterface TaskItem<T, U> {\n message: T,\n resolve: (item: U | PromiseLike<U>) => void,\n reject: (reason?: any) => void,\n}\n","import { WorkerPool } from './worker-pool';\n\nexport abstract class TextureTranscoder {\n protected transcodeWorkerPool: WorkerPool;\n protected initPromise: Promise<Worker[]>;\n\n constructor (\n public readonly workerLimitCount: number,\n ) { }\n\n init () {\n if (!this.initPromise) {\n this.initPromise = this.initTranscodeWorkerPool();\n }\n\n return this.initPromise;\n }\n\n destroy () {\n this.transcodeWorkerPool?.destroy();\n }\n\n protected abstract initTranscodeWorkerPool (): Promise<Worker[]>;\n\n protected createTranscodePool (workerURL: string, transcoderWasm: WebAssembly.Module) {\n this.transcodeWorkerPool = new WorkerPool(this.workerLimitCount, () => {\n return new Promise<Worker>((resolve, reject) => {\n const worker = new Worker(workerURL);\n const msg: InitMessage = {\n type: 'init',\n transcoderWasm,\n };\n const cleanup = () => {\n worker.removeEventListener('message', onMessage);\n worker.removeEventListener('error', onError);\n };\n\n function onMessage (e: MessageEvent<{ error?: Error }>) {\n if (e.data.error) {\n reject(e.data.error);\n } else {\n worker.removeEventListener('message', onMessage);\n resolve(worker);\n }\n }\n function onError (e: ErrorEvent) {\n cleanup();\n worker.terminate();\n reject(e.error ?? new Error(e.message || 'Worker init error'));\n }\n worker.addEventListener('message', onMessage);\n worker.addEventListener('error', onError);\n worker.postMessage(msg);\n });\n });\n\n return this.transcodeWorkerPool.prepareWorker();\n }\n}\n\ntype MessageType = 'init' | 'transcode';\n\nexport interface BaseMessage {\n type: MessageType,\n}\n\nexport interface InitMessage extends BaseMessage {\n type: 'init',\n transcoderWasm: WebAssembly.Module,\n}\n\nexport interface BinomialTranscodeMessage extends BaseMessage {\n type: 'transcode',\n format: number,\n buffer: Uint8Array,\n}\n\nexport type IBinomialMessage = InitMessage | BinomialTranscodeMessage;\n\nexport type TranscodeResult = {\n width: number,\n height: number,\n hasAlpha: boolean,\n format: number,\n faces: Array<{ data: Uint8Array, width: number, height: number }>[],\n faceCount: number,\n};\n\nexport interface EncodedData {\n buffer: Uint8Array,\n levelWidth: number,\n levelHeight: number,\n uncompressedByteLength: number,\n}\n\nexport interface DecodedData {\n width: number,\n height: number,\n data: Uint8Array,\n}\n\nexport interface KhronosTranscoderMessage extends BaseMessage {\n type: 'transcode',\n format: number,\n needZstd: boolean,\n data: EncodedData[][],\n zstddecWasmModule?: WebAssembly.Module,\n}\n\nexport type IKhronosMessageMessage = InitMessage | KhronosTranscoderMessage;\n\nexport function decodeText (array: Uint8Array): string {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder('utf-8').decode(array);\n }\n\n // TextDecoder polyfill\n let s = '';\n\n for (let i = 0, il = array.length; i < il; i++) {\n s += String.fromCharCode(array[i]);\n }\n\n return decodeURIComponent(encodeURIComponent(s));\n}\n","import { decodeText } from './texture-transcoder';\n\nexport class BufferReader {\n private dataView: DataView;\n private littleEndian: boolean;\n private pos: number;\n private baseOffset: number;\n\n constructor (\n public data: Uint8Array,\n byteOffset = 0,\n byteLength?: number,\n littleEndian = true,\n ) {\n this.dataView = new DataView(\n data.buffer,\n data.byteOffset + byteOffset,\n byteLength ?? data.byteLength - byteOffset,\n );\n this.littleEndian = littleEndian;\n this.pos = 0;\n this.baseOffset = byteOffset;\n }\n\n get position () {\n return this.pos;\n }\n\n get offset () {\n return this.pos + this.baseOffset;\n }\n\n nextUint8 () {\n const value = this.dataView.getUint8(this.pos);\n\n this.pos += 1;\n\n return value;\n }\n\n nextUint16 () {\n const value = this.dataView.getUint16(this.pos, this.littleEndian);\n\n this.pos += 2;\n\n return value;\n }\n\n nextUint32 () {\n const value = this.dataView.getUint32(this.pos, this.littleEndian);\n\n this.pos += 4;\n\n return value;\n }\n\n nextInt32 () {\n const value = this.dataView.getInt32(this.pos, this.littleEndian);\n\n this.pos += 4;\n\n return value;\n }\n\n nextInt32Array (len: number) {\n const value = new Int32Array(this.data.buffer, this.pos + this.dataView.byteOffset, len);\n\n this.pos += 4 * len;\n\n return value;\n }\n\n nextFloat32 () {\n const value = this.dataView.getFloat32(this.pos, this.littleEndian);\n\n this.pos += 4;\n\n return value;\n }\n\n nextFloat32Array (len: number) {\n const value = new Float32Array(this.data.buffer, this.pos + this.dataView.byteOffset, len);\n\n this.pos += 4 * len;\n\n return value;\n }\n\n nextUint32Array (len: number) {\n const value = new Uint32Array(this.data.buffer, this.pos + this.dataView.byteOffset, len);\n\n this.pos += 4 * len;\n\n return value;\n }\n\n nextUint8Array (len: number) {\n const value = new Uint8Array(this.data.buffer, this.pos + this.dataView.byteOffset, len);\n\n this.pos += len;\n\n return value;\n }\n\n nextUint64 () {\n if (!this.littleEndian) {\n throw new Error('nextUint64 only supports little-endian');\n }\n const left = this.dataView.getUint32(this.pos, this.littleEndian);\n const right = this.dataView.getUint32(this.pos + 4, this.littleEndian);\n const value = left + 2 ** 32 * right;\n\n this.pos += 8;\n\n return value;\n }\n\n nextStr (): string {\n const strByteLength = this.nextUint16();\n const uint8Array = new Uint8Array(this.data.buffer, this.pos + this.dataView.byteOffset, strByteLength);\n\n this.pos += strByteLength;\n\n return decodeText(uint8Array);\n }\n\n skip (bytes: number) {\n this.pos += bytes;\n\n return this;\n }\n\n scan (maxByteLength: number, term: number = 0x00): Uint8Array {\n const byteOffset = this.pos;\n let byteLength = 0;\n\n while (this.dataView.getUint8(this.pos) !== term && byteLength < maxByteLength) {\n byteLength++;\n this.pos++;\n }\n\n if (byteLength < maxByteLength) { this.pos++; }\n\n return new Uint8Array(this.dataView.buffer, this.dataView.byteOffset + byteOffset, byteLength);\n }\n}\n","import { BufferReader } from './transcoder/buffer-reader';\nimport { decodeText } from './transcoder/texture-transcoder';\n\nexport enum DFDTransferFunction {\n linear = 1,\n sRGB = 2,\n}\n\nenum ColorModel {\n ETC1S = 163,\n UASTC = 166,\n}\n\nexport enum SupercompressionScheme {\n None,\n BasisLZ,\n Zstd,\n ZLib,\n}\n\nexport class KTX2Container {\n vkFormat = 0;\n\n typeSize = 1;\n\n pixelWidth = 0;\n\n pixelHeight = 0;\n\n pixelDepth = 0;\n\n layerCount = 0;\n\n faceCount = 1;\n\n supercompressionScheme: SupercompressionScheme = SupercompressionScheme.None;\n\n levels: KTX2Level[] = [];\n\n dataFormatDescriptor: KTX2DataFormatDescriptorBasicFormat;\n\n keyValue: Record<string, string | Uint8Array> = {};\n\n globalData: KTX2GlobalDataBasisLZ | null = null;\n\n constructor (buffer: Uint8Array) {\n this.parse(buffer);\n }\n\n get isSRGB () {\n return this.dataFormatDescriptor.transferFunction === DFDTransferFunction.sRGB;\n }\n\n get isUASTC () {\n return this.dataFormatDescriptor.colorModel === ColorModel.UASTC;\n }\n\n get isNotBasis () {\n return this.vkFormat != 0;\n }\n\n private parse (data: Uint8Array) {\n const KTX2_IDENTIFIER = new Uint8Array([\n 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x32, 0x30, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A,\n ]);\n\n if (data.length < KTX2_IDENTIFIER.length || !KTX2_IDENTIFIER.every((v, i) => data[i] === v)) {\n throw new Error('Texture missing KTX2 identifier.');\n }\n\n const buffer = data.buffer;\n const byteOffset = data.byteOffset;\n\n const headerBufferReader = new BufferReader(data, 12);\n\n this.vkFormat = headerBufferReader.nextUint32();\n this.typeSize = headerBufferReader.nextUint32();\n this.pixelWidth = headerBufferReader.nextUint32();\n this.pixelHeight = headerBufferReader.nextUint32();\n\n this.pixelDepth = headerBufferReader.nextUint32();\n this.layerCount = headerBufferReader.nextUint32();\n this.faceCount = headerBufferReader.nextUint32();\n\n const levelCount = Math.max(1, headerBufferReader.nextUint32());\n\n this.supercompressionScheme = headerBufferReader.nextUint32();\n\n const dfdByteOffset = headerBufferReader.nextUint32();\n const dfdByteLength = headerBufferReader.nextUint32();\n\n const kvdByteOffset = headerBufferReader.nextUint32();\n const kvdByteLength = headerBufferReader.nextUint32();\n\n const sgdByteOffset = headerBufferReader.nextUint64();\n const sgdByteLength = headerBufferReader.nextUint64();\n\n // level index\n const ktxLevels = new Array<KTX2Level>(levelCount);\n const levelByteLength = levelCount * 3 * 8;\n const levelReader = new BufferReader(data, headerBufferReader.offset, levelByteLength);\n\n this.levels = ktxLevels;\n\n for (let i = 0; i < levelCount; i++) {\n ktxLevels[i] = {\n levelData: new Uint8Array(buffer, byteOffset + levelReader.nextUint64(), levelReader.nextUint64()),\n uncompressedByteLength: levelReader.nextUint64(),\n };\n }\n\n // Data Format Descriptor (DFD).\n const dfdReader = new BufferReader(data, dfdByteOffset, dfdByteLength);\n\n const dfd: KTX2DataFormatDescriptorBasicFormat = {\n vendorId: dfdReader.skip(4 /* totalSize */).nextUint16(),\n descriptorType: dfdReader.nextUint16(),\n versionNumber: dfdReader.nextUint16(),\n descriptorBlockSize: dfdReader.nextUint16(),\n colorModel: dfdReader.nextUint8(),\n colorPrimaries: dfdReader.nextUint8(),\n transferFunction: dfdReader.nextUint8(),\n flags: dfdReader.nextUint8(),\n texelBlockDimension: [\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n ],\n bytesPlane: [\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n ],\n samples: [],\n };\n\n this.dataFormatDescriptor = dfd;\n\n const sampleStart = 6;\n const sampleWords = 4;\n const numSamples = (dfd.descriptorBlockSize / 4 - sampleStart) / sampleWords;\n\n for (let i = 0; i < numSamples; i++) {\n const sample = {\n bitOffset: dfdReader.nextUint16(),\n bitLength: dfdReader.nextUint8(),\n channelType: dfdReader.nextUint8(),\n samplePosition: [\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n ],\n sampleLower: -Infinity,\n sampleUpper: Infinity,\n };\n\n if (sample.channelType & 0x40) {\n sample.sampleLower = dfdReader.nextInt32();\n sample.sampleUpper = dfdReader.nextInt32();\n } else {\n sample.sampleLower = dfdReader.nextUint32();\n sample.sampleUpper = dfdReader.nextUint32();\n }\n\n dfd.samples[i] = sample;\n }\n\n const kvdReader = new BufferReader(data, kvdByteOffset, kvdByteLength, true);\n\n while (kvdReader.position < kvdByteLength) {\n const keyValueByteLength = kvdReader.nextUint32();\n const keyData = kvdReader.scan(keyValueByteLength);\n const key = decodeText(keyData);\n\n // 4-byte alignment.\n const valueData = kvdReader.nextUint8Array(keyValueByteLength - keyData.byteLength - 1);\n\n if (/^ktx/i.test(key)) {\n const decodedValue = decodeText(valueData);\n let trimmedValue = decodedValue;\n\n while (trimmedValue.length > 0 && trimmedValue.charCodeAt(trimmedValue.length - 1) === 0) {\n trimmedValue = trimmedValue.slice(0, -1);\n }\n this.keyValue[key] = trimmedValue;\n } else {\n this.keyValue[key] = valueData;\n }\n const kvPadding = keyValueByteLength % 4 ? 4 - (keyValueByteLength % 4) : 0; // align(4)\n\n // 4-byte alignment.\n kvdReader.skip(kvPadding);\n }\n\n if (sgdByteLength <= 0) { return this; }\n\n const sgdReader = new BufferReader(data, sgdByteOffset, sgdByteLength, true);\n\n const endpointCount = sgdReader.nextUint16();\n const selectorCount = sgdReader.nextUint16();\n const endpointsByteLength = sgdReader.nextUint32();\n const selectorsByteLength = sgdReader.nextUint32();\n const tablesByteLength = sgdReader.nextUint32();\n const extendedByteLength = sgdReader.nextUint32();\n\n const imageDescs: KTX2GlobalDataBasisLZImageDesc[] = new Array(levelCount);\n\n for (let i = 0; i < levelCount; i++) {\n imageDescs[i] = {\n imageFlags: sgdReader.nextUint32(),\n rgbSliceByteOffset: sgdReader.nextUint32(),\n rgbSliceByteLength: sgdReader.nextUint32(),\n alphaSliceByteOffset: sgdReader.nextUint32(),\n alphaSliceByteLength: sgdReader.nextUint32(),\n };\n }\n\n const endpointsByteOffset = sgdByteOffset + sgdReader.position;\n const selectorsByteOffset = endpointsByteOffset + endpointsByteLength;\n const tablesByteOffset = selectorsByteOffset + selectorsByteLength;\n const extendedByteOffset = tablesByteOffset + tablesByteLength;\n\n const endpointsData = new Uint8Array(buffer, byteOffset + endpointsByteOffset, endpointsByteLength);\n const selectorsData = new Uint8Array(buffer, byteOffset + selectorsByteOffset, selectorsByteLength);\n const tablesData = new Uint8Array(buffer, byteOffset + tablesByteOffset, tablesByteLength);\n const extendedData = new Uint8Array(buffer, byteOffset + extendedByteOffset, extendedByteLength);\n\n this.globalData = {\n endpointCount,\n selectorCount,\n imageDescs,\n endpointsData,\n selectorsData,\n tablesData,\n extendedData,\n };\n }\n}\n\ninterface KTX2Level {\n levelData: Uint8Array,\n uncompressedByteLength: number,\n}\n\ninterface KTX2DataFormatDescriptorBasicFormat {\n vendorId: number,\n descriptorType: number,\n versionNumber: number,\n /** @deprecated Inferred. */\n descriptorBlockSize: number,\n colorModel: ColorModel,\n colorPrimaries: number,\n transferFunction: DFDTransferFunction,\n flags: number,\n texelBlockDimension: [number, number, number, number],\n bytesPlane: [number, number, number, number, number, number, number, number],\n samples: KTX2BasicFormatSample[],\n}\n\ninterface KTX2BasicFormatSample {\n bitOffset: number,\n bitLength: number,\n channelType: number,\n samplePosition: number[],\n sampleLower: number,\n sampleUpper: number,\n}\n\ninterface KTX2GlobalDataBasisLZ {\n endpointCount: number,\n selectorCount: number,\n imageDescs: KTX2GlobalDataBasisLZImageDesc[],\n endpointsData: Uint8Array,\n selectorsData: Uint8Array,\n tablesData: Uint8Array,\n extendedData: Uint8Array,\n}\n\ninterface KTX2GlobalDataBasisLZImageDesc {\n imageFlags: number,\n rgbSliceByteOffset: number,\n rgbSliceByteLength: number,\n alphaSliceByteOffset: number,\n alphaSliceByteLength: number,\n}\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","/* eslint-disable compat/compat */\n/* eslint-disable promise/no-nesting */\nimport type { DecodedData, EncodedData } from './texture-transcoder';\n\n// eslint-disable-next-line compat/compat\nexport interface WasmTranscoder extends WebAssembly.Exports {\n memory: WebAssembly.Memory,\n transcode: (nBlocks: number) => number,\n}\n\nexport interface DecoderExports {\n memory: WebAssembly.Memory,\n ZSTD_findDecompressedSize: (compressedPtr: number, compressedSize: number) => number,\n ZSTD_decompress: (\n uncompressedPtr: number,\n uncompressedSize: number,\n compressedPtr: number,\n compressedSize: number,\n ) => number,\n malloc: (ptr: number) => number,\n free: (ptr: number) => void,\n}\n\nexport interface DecoderInstance {\n readonly exports: DecoderExports,\n}\n\n/**\n * 转码核心代码\n * 主线程调用时会返回 API 对象\n * Worker 中使用时需要拼接消息处理代码\n */\nexport function TranscodeWorkerCode () {\n let wasmPromise: Promise<WebAssembly.Exports>;\n\n /**\n * ZSTD (Zstandard) decoder.\n */\n class ZSTDDecoder {\n public static heap: Uint8Array;\n public static IMPORT_OBJECT = {\n env: {\n emscripten_notify_memory_growth: function (): void {\n ZSTDDecoder.heap = new Uint8Array(ZSTDDecoder.instance.exports.memory.buffer);\n },\n },\n };\n public static instance: DecoderInstance;\n public initPromise: Promise<void> | undefined;\n\n init (zstddecWasmModule: WebAssembly.Module): Promise<void> {\n if (!this.initPromise) {\n this.initPromise = WebAssembly\n .instantiate(zstddecWasmModule, ZSTDDecoder.IMPORT_OBJECT)\n .then(this.initInstance);\n }\n\n return this.initPromise;\n }\n\n initInstance (result: WebAssembly.Instance): void {\n ZSTDDecoder.instance = result as unknown as DecoderInstance;\n ZSTDDecoder.IMPORT_OBJECT.env.emscripten_notify_memory_growth();\n }\n\n decode (array: Uint8Array, uncompressedSize = 0): Uint8Array {\n if (!ZSTDDecoder.instance) {\n throw new Error('ZSTDDecoder: Await .init() before decoding.');\n }\n\n const exports = ZSTDDecoder.instance.exports;\n const compressedSize = array.byteLength;\n const compressedPtr = exports.malloc(compressedSize);\n\n ZSTDDecoder.heap.set(array, compressedPtr);\n\n uncompressedSize = uncompressedSize || Number(exports.ZSTD_findDecompressedSize(compressedPtr, compressedSize));\n const uncompressedPtr = exports.malloc(uncompressedSize);\n const actualSize = exports.ZSTD_decompress(uncompressedPtr, uncompressedSize, compressedPtr, compressedSize);\n\n if (actualSize < 0) {\n exports.free(compressedPtr);\n exports.free(uncompressedPtr);\n throw new Error('ZSTDDecoder: decompression failed.');\n }\n\n // Read decompressed data and free WASM memory\n const dec = ZSTDDecoder.heap.slice(uncompressedPtr, uncompressedPtr + actualSize);\n\n exports.free(compressedPtr);\n exports.free(uncompressedPtr);\n\n return dec;\n }\n }\n\n function transcodeASTC (\n wasmTranscoder: WasmTranscoder,\n compressedData: Uint8Array,\n width: number,\n height: number,\n ) {\n const nBlocks = ((width + 3) >> 2) * ((height + 3) >> 2);\n const texMemoryPages = (nBlocks * 16 + 65535) >> 16;\n const memory = wasmTranscoder.memory;\n const delta = texMemoryPages + 1 - (memory.buffer.byteLength >> 16);\n\n if (delta > 0) { memory.grow(delta); }\n\n const textureView = new Uint8Array(memory.buffer, 65536, nBlocks * 16);\n\n textureView.set(compressedData);\n\n return wasmTranscoder.transcode(nBlocks) === 0 ? textureView : null;\n }\n\n function initTranscoder (transcoderWasmModule: WebAssembly.Module) {\n wasmPromise = WebAssembly\n .instantiate(transcoderWasmModule, {\n env: { memory: new WebAssembly.Memory({ initial: 16 }) },\n })\n .then(moduleWrapper => moduleWrapper.exports);\n\n return wasmPromise;\n }\n\n const zstdDecoder = new ZSTDDecoder();\n\n function transcode (\n data: EncodedData[][],\n needZstd: boolean,\n transcoderWasmModule: WasmTranscoder,\n zstddecWasmModule?: WebAssembly.Module,\n ) {\n const faceCount = data.length;\n const result: DecodedData[][] = new Array(faceCount);\n const decodedLevelCache = needZstd ? new Map() : undefined;\n let promise = Promise.resolve();\n\n if (needZstd && zstddecWasmModule) {\n void zstdDecoder.init(zstddecWasmModule);\n promise = zstdDecoder.initPromise!;\n }\n\n return promise.then(() => {\n for (let faceIndex = 0; faceIndex < faceCount; faceIndex++) {\n const mipmapCount = data[faceIndex].length;\n const decodedData: DecodedData[] = new Array(mipmapCount);\n\n for (let i = 0; i < mipmapCount; i++) {\n const { buffer, levelHeight, levelWidth, uncompressedByteLength } = data[faceIndex][i];\n let levelBuffer = buffer;\n\n if (needZstd) {\n let decoded = decodedLevelCache?.get(i);\n\n if (!decoded) {\n decoded = zstdDecoder.decode(buffer.slice(), uncompressedByteLength);\n decodedLevelCache?.set(i, decoded);\n }\n levelBuffer = decoded;\n }\n\n const faceByteLength = levelBuffer.byteLength / faceCount;\n const originByteOffset = levelBuffer.byteOffset;\n const decodedBuffer = transcodeASTC(\n transcoderWasmModule,\n new Uint8Array(levelBuffer.buffer, originByteOffset + faceIndex * faceByteLength, faceByteLength),\n levelWidth,\n levelHeight\n );\n\n if (decodedBuffer) {\n decodedData[i] = {\n // use wasm memory as buffer, should slice to avoid duplicate\n data: decodedBuffer.slice(),\n width: levelWidth,\n height: levelHeight,\n };\n } else {\n throw new Error('buffer decoded error');\n }\n }\n result[faceIndex] = decodedData;\n }\n\n return result;\n });\n }\n\n self.onmessage = function onmessage (event) {\n const message = event.data;\n\n switch (message.type) {\n case 'init':\n initTranscoder(message.transcoderWasm)\n .then(() => {\n self.postMessage('init-completed');\n })\n .catch(error => {\n self.postMessage({ error });\n });\n\n break;\n case 'transcode':\n wasmPromise\n .then(transcoderWasmModule => {\n transcode(\n message.data,\n message.needZstd,\n transcoderWasmModule as unknown as WasmTranscoder,\n message.zstddecWasmModule,\n ).then(decodedData => {\n self.postMessage(decodedData);\n }).catch(error => self.postMessage({ error }));\n })\n .catch(error => {\n self.postMessage({ error });\n });\n\n break;\n }\n };\n\n // 主线程使用\n return {\n ZSTDDecoder,\n transcodeASTC,\n initTranscoder,\n zstdDecoder,\n transcode,\n getWasmPromise: () => wasmPromise,\n };\n}\n","/* eslint-disable promise/no-nesting */\nimport type { KTX2Container } from '../ktx2-container';\nimport { SupercompressionScheme } from '../ktx2-container';\nimport type { KTX2TargetFormat } from '../ktx2-common';\nimport type { DecodedData, EncodedData, KhronosTranscoderMessage, TranscodeResult } from './texture-transcoder';\nimport { TextureTranscoder } from './texture-transcoder';\nimport type { WasmTranscoder } from './khronos-workercode';\nimport { TranscodeWorkerCode } from './khronos-workercode';\nimport uastcAstcWasm from '../libs/uastc_astc.wasm';\nimport zstddecWasm from '../libs/zstddec.wasm';\n\n/**\n * 主线程 ASTC/UASTC 转码器\n */\nclass KhronosMainThreadTranscoder {\n private context: ReturnType<typeof TranscodeWorkerCode> | null = null;\n\n async init (): Promise<void> {\n if (!this.context) {\n this.context = TranscodeWorkerCode();\n\n const transcoderWasmModule = await uastcAstcWasm();\n\n await this.context.initTranscoder(transcoderWasmModule);\n }\n }\n\n async transcode (\n data: EncodedData[][],\n needZstd: boolean,\n zstddecWasmModule?: WebAssembly.Module,\n ): Promise<DecodedData[][]> {\n await this.init();\n\n const wasmModule = await this.context?.getWasmPromise() as unknown as WasmTranscoder;\n\n return this.context!.transcode(data, needZstd, wasmModule, zstddecWasmModule);\n }\n\n destroy (): void {\n this.context = null;\n }\n}\n\n/**\n * KTX2 Khronos ASTC/UASTC 转码器\n * 支持主线程和 Worker 两种执行模式\n */\nexport class KhronosTranscoder extends TextureTranscoder {\n private mainThreadTranscoder: KhronosMainThreadTranscoder | null = null;\n private workerURL?: string;\n\n constructor (\n workerLimitCount: number,\n public readonly type: KTX2TargetFormat,\n ) {\n super(workerLimitCount);\n }\n\n async initTranscodeWorkerPool () {\n // 主线程模式\n if (this.workerLimitCount <= 0) {\n this.mainThreadTranscoder = new KhronosMainThreadTranscoder();\n await this.mainThreadTranscoder.init();\n\n return [];\n }\n\n // Worker 模式\n const transcoderWasm = await uastcAstcWasm();\n const funcCode = TranscodeWorkerCode.toString();\n const funcBody = funcCode.substring(funcCode.indexOf('{') + 1, funcCode.lastIndexOf('}'));\n\n // 移除主线程的 return 语句,添加 Worker 消息处理\n const returnIndex = funcBody.lastIndexOf('return {');\n const workerCode = funcBody.substring(0, returnIndex);\n\n const workerURL = URL.createObjectURL(\n new Blob([workerCode], {\n type: 'application/javascript',\n })\n );\n\n this.workerURL = workerURL;\n\n return this.createTranscodePool(workerURL, transcoderWasm);\n }\n\n async transcode (ktx2Container: KTX2Container): Promise<TranscodeResult> {\n const needZstd = ktx2Container.supercompressionScheme === SupercompressionScheme.Zstd;\n const levelCount = ktx2Container.levels.length;\n const faceCount = ktx2Container.faceCount;\n\n // 准备编码数据\n const encodedData: EncodedData[][] = new Array<EncodedData[]>(faceCount);\n\n for (let faceIndex = 0; faceIndex < faceCount; faceIndex++) {\n const mipmapData = new Array(levelCount);\n\n for (let mipmapIndex = 0; mipmapIndex < levelCount; mipmapIndex++) {\n const level = ktx2Container.levels[mipmapIndex];\n const levelWidth = Math.floor(ktx2Container.pixelWidth / (1 << mipmapIndex)) || 1;\n const levelHeight = Math.floor(ktx2Container.pixelHeight / (1 << mipmapIndex)) || 1;\n const originBuffer = level.levelData.buffer;\n const originOffset = level.levelData.byteOffset;\n const originByteLength = level.levelData.byteLength;\n\n mipmapData[mipmapIndex] = {\n buffer: new Uint8Array(originBuffer, originOffset, originByteLength),\n levelWidth,\n levelHeight,\n uncompressedByteLength: level.uncompressedByteLength,\n };\n }\n encodedData[faceIndex] = mipmapData;\n }\n\n const zstddecWasmModule = needZstd ? await zstddecWasm() : undefined;\n\n let faces: Array<{ width: number, height: number, data: Uint8Array }[]>;\n\n // 主线程模式\n if (this.workerLimitCount <= 0 && this.mainThreadTranscoder) {\n faces = await this.mainThreadTranscoder.transcode(encodedData, needZstd, zstddecWasmModule);\n } else {\n // WebWorker 模式\n const postMessageData: KhronosTranscoderMessage = {\n type: 'transcode',\n format: 0,\n needZstd,\n data: encodedData,\n zstddecWasmModule,\n };\n\n faces = await this.transcodeWorkerPool.postMessage(postMessageData);\n }\n\n return {\n width: ktx2Container.pixelWidth,\n height: ktx2Container.pixelHeight,\n hasAlpha: true,\n format: 0,\n faces,\n faceCount,\n };\n }\n\n override destroy (): void {\n super.destroy();\n\n if (this.mainThreadTranscoder) {\n this.mainThreadTranscoder.destroy();\n this.mainThreadTranscoder = null;\n }\n\n if (this.workerURL) {\n URL.revokeObjectURL(this.workerURL);\n this.workerURL = undefined;\n }\n }\n}\n\n","import type {\n Texture2DSourceOptionsCompressed, TextureDataType, TextureLoader,\n} from '@galacean/effects';\nimport {\n TextureSourceType, loadBinary, glContext, textureLoaderRegistry,\n} from '@galacean/effects';\nimport { KTX2TargetFormat } from './ktx2-common';\nimport { KTX2Container } from './ktx2-container';\nimport type { TranscodeResult } from './transcoder/texture-transcoder';\nimport { KhronosTranscoder } from './transcoder/khronos-transcoder';\n\n/**\n * KTX2 加载器 - 专用于 UASTC 转 ASTC\n */\nexport class KTX2Loader implements TextureLoader {\n private khronosTranscoder: KhronosTranscoder | null = null;\n private khronosInitPromise?: Promise<void>;\n\n /**\n * KTX2 加载器\n * - workerCount 大于 0 时使用 WebWorker\n * - 默认使用主线程\n */\n constructor (\n private readonly workerCount = 0,\n ) { }\n\n /**\n * 初始化 Khronos Transcoder\n */\n private async initKhronosTranscoder (): Promise<void> {\n if (this.khronosTranscoder) {\n return;\n }\n\n try {\n const transcoder = new KhronosTranscoder(this.workerCount, KTX2TargetFormat.ASTC);\n\n await transcoder.init();\n this.khronosTranscoder = transcoder;\n } catch (error) {\n console.error('Failed to initialize KhronosTranscoder:', error);\n this.khronosTranscoder = null;\n this.khronosInitPromise = undefined;\n throw error;\n }\n }\n\n /**\n * 确保 Khronos Transcoder 已初始化\n */\n private async ensureKhronosTranscoder (): Promise<KhronosTranscoder> {\n if (this.khronosTranscoder) {\n return this.khronosTranscoder;\n }\n\n if (!this.khronosInitPromise) {\n this.khronosInitPromise = this.initKhronosTranscoder();\n }\n\n await this.khronosInitPromise;\n\n if (!this.khronosTranscoder) {\n throw new Error('KhronosTranscoder initialization failed');\n }\n\n return this.khronosTranscoder;\n }\n\n /**\n * 从 ArrayBuffer 加载 KTX2 纹理并返回压缩纹理源选项\n */\n async loadFromBuffer (arrBuffer: ArrayBuffer) {\n const buffer = new Uint8Array(arrBuffer);\n const { ktx2Container, result } = await this.parseBuffer(buffer);\n\n return this.createTextureByBuffer(ktx2Container, result);\n }\n\n /**\n * 从 URL 加载 KTX2 纹理并返回压缩纹理源选项\n */\n async loadFromURL (url: string) {\n\n const buffer = new Uint8Array(await loadBinary(url));\n const { ktx2Container, result } = await this.parseBuffer(buffer);\n\n return this.createTextureByBuffer(ktx2Container, result);\n }\n\n /**\n * @internal\n * 解析并转码 KTX2 文件\n */\n private async parseBuffer (buffer: Uint8Array) {\n const ktx2Container = new KTX2Container(buffer);\n\n // 验证格式支持\n if (!ktx2Container.isUASTC) {\n throw new Error('Unsupported KTX2: only UASTC format is supported');\n }\n\n // 前置在gpucapability已经检测过可用 直接转码\n const transcoder = await this.ensureKhronosTranscoder();\n const result = await transcoder.transcode(ktx2Container);\n\n return {\n ktx2Container,\n result,\n };\n }\n\n /**\n * @internal\n * 根据转码结果创建引擎所需的压缩纹理源选项\n */\n private createTextureByBuffer (\n ktx2Container: KTX2Container,\n transcodeResult: TranscodeResult\n ): Texture2DSourceOptionsCompressed {\n const { pixelWidth, pixelHeight, faceCount } = ktx2Container;\n const { internalFormat, format, type } = this.getASTC4x4TextureDetail();\n\n const target = faceCount === 6 ? glContext.TEXTURE_CUBE_MAP : glContext.TEXTURE_2D;\n\n const faces = transcodeResult.faces;\n const transLevels = faces[0]?.length ?? 0;\n const maxDimension = Math.max(pixelWidth, pixelHeight);\n\n if (maxDimension === 0) {\n throw new Error('Invalid KTX2 texture: both width and height are zero');\n }\n\n const fullChainCount = Math.floor(Math.log2(maxDimension)) + 1;\n const useMipmaps = transLevels > 1 && transLevels >= fullChainCount;\n const levelCount = useMipmaps ? transLevels : 1;\n\n const mipmaps: TextureDataType[] = [];\n\n for (let level = 0; level < levelCount; level++) {\n for (let face = 0; face < faceCount; face++) {\n const src = faces[face][level];\n\n mipmaps.push({\n data: src.data,\n width: src.width,\n height: src.height,\n });\n }\n }\n\n return {\n sourceType: TextureSourceType.compressed,\n target,\n internalFormat,\n format,\n type,\n mipmaps,\n };\n }\n\n /**\n * @internal\n * 获取 ASTC 4x4 的 WebGL 格式信息\n */\n private getASTC4x4TextureDetail () {\n const COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93b0;\n\n return {\n internalFormat: COMPRESSED_RGBA_ASTC_4x4_KHR,\n format: 0,\n type: 0,\n };\n }\n\n /**\n * 销毁加载器,释放资源\n */\n dispose (): void {\n this.khronosTranscoder?.destroy();\n this.khronosTranscoder = null;\n this.khronosInitPromise = undefined;\n }\n}\n\n/**\n * 注册 KTX2 加载器到全局注册表\n * @param workerCount - 大于 0 时使用 WebWorker,默认使用主线程\n */\nexport function registerKTX2Loader (workerCount = 0) {\n textureLoaderRegistry.register('ktx2', () => {\n return new KTX2Loader(workerCount);\n });\n}\n\n/**\n * 注销 KTX2 加载器\n */\nexport function unregisterKTX2Loader () {\n textureLoaderRegistry.unregister('ktx2');\n}\n","import * as EFFECTS from '@galacean/effects';\nimport { registerKTX2Loader } from './ktx2-loader';\n\nexport * from './ktx2-loader';\n\n/**\n * 插件版本号\n */\nexport const version = __VERSION__;\n\nregisterKTX2Loader();\n\nif (version !== EFFECTS.version) {\n console.error(\n '注意:请统一 KTX2 插件与 Player 版本,不统一的版本混用会有不可预知的后果!',\n '\\nAttention: Please ensure the KTX2 plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!'\n );\n}\n"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_async_to_generator","fn","self","args","arguments","apply","err","undefined","__generator","thisArg","body","_","label","sent","t","trys","ops","f","y","g","Object","create","Iterator","prototype","next","verb","Symbol","iterator","n","v","step","op","TypeError","call","pop","length","push","e","SuppressedError","suppressed","message","Error","name","KTX2TargetFormat","TextureFormat","_defineProperties","target","props","i","descriptor","enumerable","configurable","writable","defineProperty","_create_class","Constructor","protoProps","staticProps","WorkerPool","workerCreator","limitedCount","taskQueue","workerStatus","initPromises","Map","destroyed","workerItems","Array","prepareWorker","count","promises","ensureWorker","all","workerId","has","set","initWorker","get","postMessage","getIdleWorkerId","workerItem","worker","catch","delete","terminate","onMessage","bind","onError","event","nextTask","addEventListener","msg","data","taskItem","shift","destroy","removeEventListener","clear","TextureTranscoder","workerLimitCount","init","initPromise","initTranscodeWorkerPool","transcodeWorkerPool","createTranscodePool","workerURL","transcoderWasm","cleanup","Worker","type","decodeText","array","TextDecoder","decode","s","il","String","fromCharCode","decodeURIComponent","encodeURIComponent","BufferReader","byteOffset","byteLength","littleEndian","dataView","DataView","buffer","pos","baseOffset","nextUint8","getUint8","nextUint16","getUint16","nextUint32","getUint32","nextInt32","getInt32","nextInt32Array","len","Int32Array","nextFloat32","getFloat32","nextFloat32Array","Float32Array","nextUint32Array","Uint32Array","nextUint8Array","Uint8Array","nextUint64","left","right","nextStr","strByteLength","uint8Array","skip","bytes","scan","maxByteLength","term","position","offset","DFDTransferFunction","ColorModel","SupercompressionScheme","KTX2Container","vkFormat","typeSize","pixelWidth","pixelHeight","pixelDepth","layerCount","faceCount","supercompressionScheme","levels","keyValue","globalData","parse","KTX2_IDENTIFIER","every","headerBufferReader","levelCount","Math","max","dfdByteOffset","dfdByteLength","kvdByteOffset","kvdByteLength","sgdByteOffset","sgdByteLength","ktxLevels","levelByteLength","levelReader","levelData","uncompressedByteLength","dfdReader","dfd","vendorId","descriptorType","versionNumber","descriptorBlockSize","colorModel","colorPrimaries","transferFunction","flags","texelBlockDimension","bytesPlane","samples","dataFormatDescriptor","sampleStart","sampleWords","numSamples","sample","bitOffset","bitLength","channelType","samplePosition","sampleLower","Infinity","sampleUpper","kvdReader","keyValueByteLength","keyData","valueData","test","decodedValue","trimmedValue","charCodeAt","slice","kvPadding","sgdReader","endpointCount","selectorCount","endpointsByteLength","selectorsByteLength","tablesByteLength","extendedByteLength","imageDescs","imageFlags","rgbSliceByteOffset","rgbSliceByteLength","alphaSliceByteOffset","alphaSliceByteLength","endpointsByteOffset","selectorsByteOffset","tablesByteOffset","extendedByteOffset","endpointsData","selectorsData","tablesData","extendedData","isSRGB","isUASTC","isNotBasis","_set_prototype_of","o","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","constructor","TranscodeWorkerCode","wasmPromise","ZSTDDecoder","zstddecWasmModule","WebAssembly","instantiate","IMPORT_OBJECT","initInstance","result","instance","env","emscripten_notify_memory_growth","uncompressedSize","exports","compressedSize","compressedPtr","malloc","heap","Number","ZSTD_findDecompressedSize","uncompressedPtr","actualSize","ZSTD_decompress","free","dec","memory","transcodeASTC","wasmTranscoder","compressedData","width","height","nBlocks","texMemoryPages","delta","grow","textureView","transcode","initTranscoder","transcoderWasmModule","Memory","initial","moduleWrapper","zstdDecoder","needZstd","decodedLevelCache","promise","faceIndex","mipmapCount","decodedData","levelHeight","levelWidth","levelBuffer","decoded","faceByteLength","originByteOffset","decodedBuffer","onmessage","getWasmPromise","KhronosMainThreadTranscoder","context","uastcAstcWasm","wasmModule","KhronosTranscoder","mainThreadTranscoder","funcCode","funcBody","returnIndex","workerCode","toString","substring","indexOf","lastIndexOf","URL","createObjectURL","Blob","ktx2Container","encodedData","mipmapData","mipmapIndex","level","originBuffer","originOffset","originByteLength","faces","postMessageData","Zstd","floor","zstddecWasm","format","hasAlpha","revokeObjectURL","KTX2Loader","workerCount","khronosTranscoder","initKhronosTranscoder","transcoder","ASTC","console","khronosInitPromise","ensureKhronosTranscoder","loadFromBuffer","arrBuffer","parseBuffer","createTextureByBuffer","loadFromURL","url","loadBinary","transcodeResult","getASTC4x4TextureDetail","internalFormat","glContext","TEXTURE_CUBE_MAP","TEXTURE_2D","transLevels","maxDimension","fullChainCount","log2","useMipmaps","mipmaps","face","src","sourceType","TextureSourceType","compressed","COMPRESSED_RGBA_ASTC_4x4_KHR","dispose","registerKTX2Loader","textureLoaderRegistry","register","unregisterKTX2Loader","unregister","version","EFFECTS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_async_to_generator.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/ktx2-common.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../src/transcoder/worker-pool.ts","../src/transcoder/texture-transcoder.ts","../src/transcoder/buffer-reader.ts","../src/ktx2-container.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../src/transcoder/khronos-workercode.ts","../src/transcoder/khronos-transcoder.ts","../src/ktx2-loader.ts","../src/index.ts"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) resolve(value);\n else Promise.resolve(value).then(_next, _throw);\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\nexport { _async_to_generator as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * KTX2 transcode target format.\n * if you modify this file, please also modify KTX2TargetFormat in binomial-workercode.ts\n */\nexport enum KTX2TargetFormat {\n /** RGB(A) compressed format, 128 bits per 4x4 pixel block. */\n ASTC = 0\n}\n\n/**\n * Texture format enumeration.\n */\nexport enum TextureFormat {\n /** RGB format, 8 bits per channel. */\n R8G8B8 = 0,\n /** RGBA format, 8 bits per channel. */\n R8G8B8A8 = 1,\n /** RGB(A) compressed format, 128 bits per 4x4 pixel block. */\n ASTC_4x4 = 2\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","/**\n * @internal\n * WorkerPool, T 为发送消息的类型,U 为返回值的类型。\n */\nexport class WorkerPool<T = any, U = any> {\n private taskQueue: TaskItem<T, U>[] = [];\n private workerStatus: number = 0;\n private workerItems: WorkerItem<U>[];\n private initPromises: Map<number, Promise<Worker>> = new Map();\n private destroyed = false;\n\n /**\n * WorkerPool 的构造函数。\n * @param limitedCount - worker数量上限\n * @param workerCreator - worker创建器\n */\n constructor (\n public readonly limitedCount = 2,\n private readonly workerCreator: () => Worker | Promise<Worker>,\n ) {\n if (limitedCount > 8 || limitedCount < 1) {\n throw new Error('limitedCount must be between 1 and 8');\n }\n this.workerItems = new Array<WorkerItem<U>>(limitedCount);\n }\n\n prepareWorker () {\n const count = this.limitedCount;\n const promises = new Array<Promise<Worker>>(count);\n\n for (let i = 0; i < count; i++) {\n promises.push(this.ensureWorker(i));\n }\n\n return Promise.all(promises);\n }\n\n private ensureWorker (workerId: number): Promise<Worker> {\n if (!this.initPromises.has(workerId)) {\n this.initPromises.set(workerId, this.initWorker(workerId));\n }\n\n return this.initPromises.get(workerId)!;\n }\n\n /**\n * 向 worker 发送消息。\n * @param message - 要发送给 worker 的消息\n * @returns 返回一个消息处理结果的 Promise\n */\n postMessage (message: T): Promise<U> {\n if (this.destroyed) {\n return Promise.reject(new Error('Worker Pool destroyed'));\n }\n\n return new Promise((resolve, reject) => {\n const workerId = this.getIdleWorkerId();\n\n if (workerId !== -1) {\n this.ensureWorker(workerId)\n .then(() => {\n if (this.destroyed) {\n throw new Error('Worker Pool destroyed');\n }\n const workerItem = this.workerItems[workerId];\n\n workerItem.resolve = resolve;\n workerItem.reject = reject;\n workerItem.worker.postMessage(message);\n })\n .catch(error => {\n this.workerStatus &= ~(1 << workerId);\n this.initPromises.delete(workerId);\n reject(error);\n });\n } else {\n this.taskQueue.push({ resolve, reject, message });\n }\n });\n }\n\n private initWorker (workerId: number): Promise<Worker> {\n return Promise.resolve(this.workerCreator()).then(worker => {\n if (this.destroyed) {\n worker.terminate();\n throw new Error('Worker Pool destroyed');\n }\n\n const onMessage = this.onMessage.bind(this, workerId);\n const onError = (event: ErrorEvent) => {\n const workerItem = this.workerItems[workerId];\n\n if (workerItem) {\n workerItem.reject(event.error || new Error(event.message || 'Worker error'));\n this.nextTask(workerId);\n }\n };\n\n worker.addEventListener('message', onMessage);\n worker.addEventListener('error', onError);\n\n this.workerItems[workerId] = {\n worker,\n resolve: () => { },\n reject: () => { },\n onMessage,\n onError,\n };\n\n return worker;\n });\n }\n\n /**\n * 获取空闲的 worker ID,并原子性地标记为忙碌\n * @returns worker ID,如果没有空闲 worker 返回 -1\n */\n private getIdleWorkerId () {\n for (let i = 0, count = this.limitedCount; i < count; i++) {\n if (!(this.workerStatus & (1 << i))) {\n this.workerStatus |= 1 << i; // ✅ 原子性标记\n\n return i;\n }\n }\n\n return -1;\n }\n\n private onMessage (workerId: number, msg: MessageEvent<U>) {\n const workerItem = this.workerItems[workerId];\n\n if (!workerItem) {\n return;\n }\n\n const error = (msg.data as ErrorMessageData).error;\n\n if (error) {\n workerItem.reject(error);\n } else {\n workerItem.resolve(msg.data);\n }\n\n this.nextTask(workerId);\n }\n\n private nextTask (workerId: number) {\n if (this.taskQueue.length) {\n const taskItem = this.taskQueue.shift() as TaskItem<T, U>;\n const workerItem = this.workerItems[workerId];\n\n if (!workerItem) {\n taskItem.reject(new Error('Worker not initialized'));\n this.workerStatus &= ~(1 << workerId);\n\n return;\n }\n\n workerItem.resolve = taskItem.resolve;\n workerItem.reject = taskItem.reject;\n workerItem.worker.postMessage(taskItem.message);\n } else {\n this.workerStatus &= ~(1 << workerId);\n }\n }\n\n destroy (): void {\n if (this.destroyed) {\n return;\n }\n\n this.destroyed = true;\n const workerItems = this.workerItems;\n const error = new Error('Worker Pool destroyed');\n\n for (let i = 0, n = workerItems.length; i < n; i++) {\n const workerItem = workerItems[i];\n\n if (!workerItem) { continue; }\n\n if (workerItem.onMessage) {\n workerItem.worker.removeEventListener('message', workerItem.onMessage);\n }\n if (workerItem.onError) {\n workerItem.worker.removeEventListener('error', workerItem.onError);\n }\n\n workerItem.worker.terminate();\n workerItem.reject?.(error);\n }\n\n while (this.taskQueue.length) {\n this.taskQueue.shift()?.reject(error);\n }\n\n workerItems.length = 0;\n this.taskQueue.length = 0;\n this.workerStatus = 0;\n this.initPromises.clear();\n }\n}\n\ninterface ErrorMessageData {\n error: unknown,\n}\n\ninterface WorkerItem<U> {\n worker: Worker,\n resolve: (item: U | PromiseLike<U>) => void,\n reject: (reason?: any) => void,\n onMessage?: (msg: MessageEvent<U>) => void,\n onError?: (event: ErrorEvent) => void,\n}\n\ninterface TaskItem<T, U> {\n message: T,\n resolve: (item: U | PromiseLike<U>) => void,\n reject: (reason?: any) => void,\n}\n","import { WorkerPool } from './worker-pool';\n\nexport abstract class TextureTranscoder {\n protected transcodeWorkerPool: WorkerPool;\n protected initPromise: Promise<Worker[]>;\n\n constructor (\n public readonly workerLimitCount: number,\n ) { }\n\n init () {\n if (!this.initPromise) {\n this.initPromise = this.initTranscodeWorkerPool();\n }\n\n return this.initPromise;\n }\n\n destroy () {\n this.transcodeWorkerPool?.destroy();\n }\n\n protected abstract initTranscodeWorkerPool (): Promise<Worker[]>;\n\n protected createTranscodePool (workerURL: string, transcoderWasm: WebAssembly.Module) {\n this.transcodeWorkerPool = new WorkerPool(this.workerLimitCount, () => {\n return new Promise<Worker>((resolve, reject) => {\n const worker = new Worker(workerURL);\n const msg: InitMessage = {\n type: 'init',\n transcoderWasm,\n };\n const cleanup = () => {\n worker.removeEventListener('message', onMessage);\n worker.removeEventListener('error', onError);\n };\n\n function onMessage (e: MessageEvent<{ error?: Error }>) {\n if (e.data.error) {\n reject(e.data.error);\n } else {\n worker.removeEventListener('message', onMessage);\n resolve(worker);\n }\n }\n function onError (e: ErrorEvent) {\n cleanup();\n worker.terminate();\n reject(e.error ?? new Error(e.message || 'Worker init error'));\n }\n worker.addEventListener('message', onMessage);\n worker.addEventListener('error', onError);\n worker.postMessage(msg);\n });\n });\n\n return this.transcodeWorkerPool.prepareWorker();\n }\n}\n\ntype MessageType = 'init' | 'transcode';\n\nexport interface BaseMessage {\n type: MessageType,\n}\n\nexport interface InitMessage extends BaseMessage {\n type: 'init',\n transcoderWasm: WebAssembly.Module,\n}\n\nexport interface BinomialTranscodeMessage extends BaseMessage {\n type: 'transcode',\n format: number,\n buffer: Uint8Array,\n}\n\nexport type IBinomialMessage = InitMessage | BinomialTranscodeMessage;\n\nexport type TranscodeResult = {\n width: number,\n height: number,\n hasAlpha: boolean,\n format: number,\n faces: Array<{ data: Uint8Array, width: number, height: number }>[],\n faceCount: number,\n};\n\nexport interface EncodedData {\n buffer: Uint8Array,\n levelWidth: number,\n levelHeight: number,\n uncompressedByteLength: number,\n}\n\nexport interface DecodedData {\n width: number,\n height: number,\n data: Uint8Array,\n}\n\nexport interface KhronosTranscoderMessage extends BaseMessage {\n type: 'transcode',\n format: number,\n needZstd: boolean,\n data: EncodedData[][],\n zstddecWasmModule?: WebAssembly.Module,\n}\n\nexport type IKhronosMessageMessage = InitMessage | KhronosTranscoderMessage;\n\nexport function decodeText (array: Uint8Array): string {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder('utf-8').decode(array);\n }\n\n // TextDecoder polyfill\n let s = '';\n\n for (let i = 0, il = array.length; i < il; i++) {\n s += String.fromCharCode(array[i]);\n }\n\n return decodeURIComponent(encodeURIComponent(s));\n}\n","import { decodeText } from './texture-transcoder';\n\nexport class BufferReader {\n private dataView: DataView;\n private littleEndian: boolean;\n private pos: number;\n private baseOffset: number;\n\n constructor (\n public data: Uint8Array,\n byteOffset = 0,\n byteLength?: number,\n littleEndian = true,\n ) {\n this.dataView = new DataView(\n data.buffer,\n data.byteOffset + byteOffset,\n byteLength ?? data.byteLength - byteOffset,\n );\n this.littleEndian = littleEndian;\n this.pos = 0;\n this.baseOffset = byteOffset;\n }\n\n get position () {\n return this.pos;\n }\n\n get offset () {\n return this.pos + this.baseOffset;\n }\n\n nextUint8 () {\n const value = this.dataView.getUint8(this.pos);\n\n this.pos += 1;\n\n return value;\n }\n\n nextUint16 () {\n const value = this.dataView.getUint16(this.pos, this.littleEndian);\n\n this.pos += 2;\n\n return value;\n }\n\n nextUint32 () {\n const value = this.dataView.getUint32(this.pos, this.littleEndian);\n\n this.pos += 4;\n\n return value;\n }\n\n nextInt32 () {\n const value = this.dataView.getInt32(this.pos, this.littleEndian);\n\n this.pos += 4;\n\n return value;\n }\n\n nextInt32Array (len: number) {\n const value = new Int32Array(this.data.buffer, this.pos + this.dataView.byteOffset, len);\n\n this.pos += 4 * len;\n\n return value;\n }\n\n nextFloat32 () {\n const value = this.dataView.getFloat32(this.pos, this.littleEndian);\n\n this.pos += 4;\n\n return value;\n }\n\n nextFloat32Array (len: number) {\n const value = new Float32Array(this.data.buffer, this.pos + this.dataView.byteOffset, len);\n\n this.pos += 4 * len;\n\n return value;\n }\n\n nextUint32Array (len: number) {\n const value = new Uint32Array(this.data.buffer, this.pos + this.dataView.byteOffset, len);\n\n this.pos += 4 * len;\n\n return value;\n }\n\n nextUint8Array (len: number) {\n const value = new Uint8Array(this.data.buffer, this.pos + this.dataView.byteOffset, len);\n\n this.pos += len;\n\n return value;\n }\n\n nextUint64 () {\n if (!this.littleEndian) {\n throw new Error('nextUint64 only supports little-endian');\n }\n const left = this.dataView.getUint32(this.pos, this.littleEndian);\n const right = this.dataView.getUint32(this.pos + 4, this.littleEndian);\n const value = left + 2 ** 32 * right;\n\n this.pos += 8;\n\n return value;\n }\n\n nextStr (): string {\n const strByteLength = this.nextUint16();\n const uint8Array = new Uint8Array(this.data.buffer, this.pos + this.dataView.byteOffset, strByteLength);\n\n this.pos += strByteLength;\n\n return decodeText(uint8Array);\n }\n\n skip (bytes: number) {\n this.pos += bytes;\n\n return this;\n }\n\n scan (maxByteLength: number, term: number = 0x00): Uint8Array {\n const byteOffset = this.pos;\n let byteLength = 0;\n\n while (this.dataView.getUint8(this.pos) !== term && byteLength < maxByteLength) {\n byteLength++;\n this.pos++;\n }\n\n if (byteLength < maxByteLength) { this.pos++; }\n\n return new Uint8Array(this.dataView.buffer, this.dataView.byteOffset + byteOffset, byteLength);\n }\n}\n","import { BufferReader } from './transcoder/buffer-reader';\nimport { decodeText } from './transcoder/texture-transcoder';\n\nexport enum DFDTransferFunction {\n linear = 1,\n sRGB = 2,\n}\n\nenum ColorModel {\n ETC1S = 163,\n UASTC = 166,\n}\n\nexport enum SupercompressionScheme {\n None,\n BasisLZ,\n Zstd,\n ZLib,\n}\n\nexport class KTX2Container {\n vkFormat = 0;\n\n typeSize = 1;\n\n pixelWidth = 0;\n\n pixelHeight = 0;\n\n pixelDepth = 0;\n\n layerCount = 0;\n\n faceCount = 1;\n\n supercompressionScheme: SupercompressionScheme = SupercompressionScheme.None;\n\n levels: KTX2Level[] = [];\n\n dataFormatDescriptor: KTX2DataFormatDescriptorBasicFormat;\n\n keyValue: Record<string, string | Uint8Array> = {};\n\n globalData: KTX2GlobalDataBasisLZ | null = null;\n\n constructor (buffer: Uint8Array) {\n this.parse(buffer);\n }\n\n get isSRGB () {\n return this.dataFormatDescriptor.transferFunction === DFDTransferFunction.sRGB;\n }\n\n get isUASTC () {\n return this.dataFormatDescriptor.colorModel === ColorModel.UASTC;\n }\n\n get isNotBasis () {\n return this.vkFormat != 0;\n }\n\n private parse (data: Uint8Array) {\n const KTX2_IDENTIFIER = new Uint8Array([\n 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x32, 0x30, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A,\n ]);\n\n if (data.length < KTX2_IDENTIFIER.length || !KTX2_IDENTIFIER.every((v, i) => data[i] === v)) {\n throw new Error('Texture missing KTX2 identifier.');\n }\n\n const buffer = data.buffer;\n const byteOffset = data.byteOffset;\n\n const headerBufferReader = new BufferReader(data, 12);\n\n this.vkFormat = headerBufferReader.nextUint32();\n this.typeSize = headerBufferReader.nextUint32();\n this.pixelWidth = headerBufferReader.nextUint32();\n this.pixelHeight = headerBufferReader.nextUint32();\n\n this.pixelDepth = headerBufferReader.nextUint32();\n this.layerCount = headerBufferReader.nextUint32();\n this.faceCount = headerBufferReader.nextUint32();\n\n const levelCount = Math.max(1, headerBufferReader.nextUint32());\n\n this.supercompressionScheme = headerBufferReader.nextUint32();\n\n const dfdByteOffset = headerBufferReader.nextUint32();\n const dfdByteLength = headerBufferReader.nextUint32();\n\n const kvdByteOffset = headerBufferReader.nextUint32();\n const kvdByteLength = headerBufferReader.nextUint32();\n\n const sgdByteOffset = headerBufferReader.nextUint64();\n const sgdByteLength = headerBufferReader.nextUint64();\n\n // level index\n const ktxLevels = new Array<KTX2Level>(levelCount);\n const levelByteLength = levelCount * 3 * 8;\n const levelReader = new BufferReader(data, headerBufferReader.offset, levelByteLength);\n\n this.levels = ktxLevels;\n\n for (let i = 0; i < levelCount; i++) {\n ktxLevels[i] = {\n levelData: new Uint8Array(buffer, byteOffset + levelReader.nextUint64(), levelReader.nextUint64()),\n uncompressedByteLength: levelReader.nextUint64(),\n };\n }\n\n // Data Format Descriptor (DFD).\n const dfdReader = new BufferReader(data, dfdByteOffset, dfdByteLength);\n\n const dfd: KTX2DataFormatDescriptorBasicFormat = {\n vendorId: dfdReader.skip(4 /* totalSize */).nextUint16(),\n descriptorType: dfdReader.nextUint16(),\n versionNumber: dfdReader.nextUint16(),\n descriptorBlockSize: dfdReader.nextUint16(),\n colorModel: dfdReader.nextUint8(),\n colorPrimaries: dfdReader.nextUint8(),\n transferFunction: dfdReader.nextUint8(),\n flags: dfdReader.nextUint8(),\n texelBlockDimension: [\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n ],\n bytesPlane: [\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n ],\n samples: [],\n };\n\n this.dataFormatDescriptor = dfd;\n\n const sampleStart = 6;\n const sampleWords = 4;\n const numSamples = (dfd.descriptorBlockSize / 4 - sampleStart) / sampleWords;\n\n for (let i = 0; i < numSamples; i++) {\n const sample = {\n bitOffset: dfdReader.nextUint16(),\n bitLength: dfdReader.nextUint8(),\n channelType: dfdReader.nextUint8(),\n samplePosition: [\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n ],\n sampleLower: -Infinity,\n sampleUpper: Infinity,\n };\n\n if (sample.channelType & 0x40) {\n sample.sampleLower = dfdReader.nextInt32();\n sample.sampleUpper = dfdReader.nextInt32();\n } else {\n sample.sampleLower = dfdReader.nextUint32();\n sample.sampleUpper = dfdReader.nextUint32();\n }\n\n dfd.samples[i] = sample;\n }\n\n const kvdReader = new BufferReader(data, kvdByteOffset, kvdByteLength, true);\n\n while (kvdReader.position < kvdByteLength) {\n const keyValueByteLength = kvdReader.nextUint32();\n const keyData = kvdReader.scan(keyValueByteLength);\n const key = decodeText(keyData);\n\n // 4-byte alignment.\n const valueData = kvdReader.nextUint8Array(keyValueByteLength - keyData.byteLength - 1);\n\n if (/^ktx/i.test(key)) {\n const decodedValue = decodeText(valueData);\n let trimmedValue = decodedValue;\n\n while (trimmedValue.length > 0 && trimmedValue.charCodeAt(trimmedValue.length - 1) === 0) {\n trimmedValue = trimmedValue.slice(0, -1);\n }\n this.keyValue[key] = trimmedValue;\n } else {\n this.keyValue[key] = valueData;\n }\n const kvPadding = keyValueByteLength % 4 ? 4 - (keyValueByteLength % 4) : 0; // align(4)\n\n // 4-byte alignment.\n kvdReader.skip(kvPadding);\n }\n\n if (sgdByteLength <= 0) { return this; }\n\n const sgdReader = new BufferReader(data, sgdByteOffset, sgdByteLength, true);\n\n const endpointCount = sgdReader.nextUint16();\n const selectorCount = sgdReader.nextUint16();\n const endpointsByteLength = sgdReader.nextUint32();\n const selectorsByteLength = sgdReader.nextUint32();\n const tablesByteLength = sgdReader.nextUint32();\n const extendedByteLength = sgdReader.nextUint32();\n\n const imageDescs: KTX2GlobalDataBasisLZImageDesc[] = new Array(levelCount);\n\n for (let i = 0; i < levelCount; i++) {\n imageDescs[i] = {\n imageFlags: sgdReader.nextUint32(),\n rgbSliceByteOffset: sgdReader.nextUint32(),\n rgbSliceByteLength: sgdReader.nextUint32(),\n alphaSliceByteOffset: sgdReader.nextUint32(),\n alphaSliceByteLength: sgdReader.nextUint32(),\n };\n }\n\n const endpointsByteOffset = sgdByteOffset + sgdReader.position;\n const selectorsByteOffset = endpointsByteOffset + endpointsByteLength;\n const tablesByteOffset = selectorsByteOffset + selectorsByteLength;\n const extendedByteOffset = tablesByteOffset + tablesByteLength;\n\n const endpointsData = new Uint8Array(buffer, byteOffset + endpointsByteOffset, endpointsByteLength);\n const selectorsData = new Uint8Array(buffer, byteOffset + selectorsByteOffset, selectorsByteLength);\n const tablesData = new Uint8Array(buffer, byteOffset + tablesByteOffset, tablesByteLength);\n const extendedData = new Uint8Array(buffer, byteOffset + extendedByteOffset, extendedByteLength);\n\n this.globalData = {\n endpointCount,\n selectorCount,\n imageDescs,\n endpointsData,\n selectorsData,\n tablesData,\n extendedData,\n };\n }\n}\n\ninterface KTX2Level {\n levelData: Uint8Array,\n uncompressedByteLength: number,\n}\n\ninterface KTX2DataFormatDescriptorBasicFormat {\n vendorId: number,\n descriptorType: number,\n versionNumber: number,\n /** @deprecated Inferred. */\n descriptorBlockSize: number,\n colorModel: ColorModel,\n colorPrimaries: number,\n transferFunction: DFDTransferFunction,\n flags: number,\n texelBlockDimension: [number, number, number, number],\n bytesPlane: [number, number, number, number, number, number, number, number],\n samples: KTX2BasicFormatSample[],\n}\n\ninterface KTX2BasicFormatSample {\n bitOffset: number,\n bitLength: number,\n channelType: number,\n samplePosition: number[],\n sampleLower: number,\n sampleUpper: number,\n}\n\ninterface KTX2GlobalDataBasisLZ {\n endpointCount: number,\n selectorCount: number,\n imageDescs: KTX2GlobalDataBasisLZImageDesc[],\n endpointsData: Uint8Array,\n selectorsData: Uint8Array,\n tablesData: Uint8Array,\n extendedData: Uint8Array,\n}\n\ninterface KTX2GlobalDataBasisLZImageDesc {\n imageFlags: number,\n rgbSliceByteOffset: number,\n rgbSliceByteLength: number,\n alphaSliceByteOffset: number,\n alphaSliceByteLength: number,\n}\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","/* eslint-disable compat/compat */\n/* eslint-disable promise/no-nesting */\nimport type { DecodedData, EncodedData } from './texture-transcoder';\n\n// eslint-disable-next-line compat/compat\nexport interface WasmTranscoder extends WebAssembly.Exports {\n memory: WebAssembly.Memory,\n transcode: (nBlocks: number) => number,\n}\n\nexport interface DecoderExports {\n memory: WebAssembly.Memory,\n ZSTD_findDecompressedSize: (compressedPtr: number, compressedSize: number) => number,\n ZSTD_decompress: (\n uncompressedPtr: number,\n uncompressedSize: number,\n compressedPtr: number,\n compressedSize: number,\n ) => number,\n malloc: (ptr: number) => number,\n free: (ptr: number) => void,\n}\n\nexport interface DecoderInstance {\n readonly exports: DecoderExports,\n}\n\n/**\n * 转码核心代码\n * 主线程调用时会返回 API 对象\n * Worker 中使用时需要拼接消息处理代码\n */\nexport function TranscodeWorkerCode () {\n let wasmPromise: Promise<WebAssembly.Exports>;\n\n /**\n * ZSTD (Zstandard) decoder.\n */\n class ZSTDDecoder {\n public static heap: Uint8Array;\n public static IMPORT_OBJECT = {\n env: {\n emscripten_notify_memory_growth: function (): void {\n ZSTDDecoder.heap = new Uint8Array(ZSTDDecoder.instance.exports.memory.buffer);\n },\n },\n };\n public static instance: DecoderInstance;\n public initPromise: Promise<void> | undefined;\n\n init (zstddecWasmModule: WebAssembly.Module): Promise<void> {\n if (!this.initPromise) {\n this.initPromise = WebAssembly\n .instantiate(zstddecWasmModule, ZSTDDecoder.IMPORT_OBJECT)\n .then(this.initInstance);\n }\n\n return this.initPromise;\n }\n\n initInstance (result: WebAssembly.Instance): void {\n ZSTDDecoder.instance = result as unknown as DecoderInstance;\n ZSTDDecoder.IMPORT_OBJECT.env.emscripten_notify_memory_growth();\n }\n\n decode (array: Uint8Array, uncompressedSize = 0): Uint8Array {\n if (!ZSTDDecoder.instance) {\n throw new Error('ZSTDDecoder: Await .init() before decoding.');\n }\n\n const exports = ZSTDDecoder.instance.exports;\n const compressedSize = array.byteLength;\n const compressedPtr = exports.malloc(compressedSize);\n\n ZSTDDecoder.heap.set(array, compressedPtr);\n\n uncompressedSize = uncompressedSize || Number(exports.ZSTD_findDecompressedSize(compressedPtr, compressedSize));\n const uncompressedPtr = exports.malloc(uncompressedSize);\n const actualSize = exports.ZSTD_decompress(uncompressedPtr, uncompressedSize, compressedPtr, compressedSize);\n\n if (actualSize < 0) {\n exports.free(compressedPtr);\n exports.free(uncompressedPtr);\n throw new Error('ZSTDDecoder: decompression failed.');\n }\n\n // Read decompressed data and free WASM memory\n const dec = ZSTDDecoder.heap.slice(uncompressedPtr, uncompressedPtr + actualSize);\n\n exports.free(compressedPtr);\n exports.free(uncompressedPtr);\n\n return dec;\n }\n }\n\n function transcodeASTC (\n wasmTranscoder: WasmTranscoder,\n compressedData: Uint8Array,\n width: number,\n height: number,\n ) {\n const nBlocks = ((width + 3) >> 2) * ((height + 3) >> 2);\n const texMemoryPages = (nBlocks * 16 + 65535) >> 16;\n const memory = wasmTranscoder.memory;\n const delta = texMemoryPages + 1 - (memory.buffer.byteLength >> 16);\n\n if (delta > 0) { memory.grow(delta); }\n\n const textureView = new Uint8Array(memory.buffer, 65536, nBlocks * 16);\n\n textureView.set(compressedData);\n\n return wasmTranscoder.transcode(nBlocks) === 0 ? textureView : null;\n }\n\n function initTranscoder (transcoderWasmModule: WebAssembly.Module) {\n wasmPromise = WebAssembly\n .instantiate(transcoderWasmModule, {\n env: { memory: new WebAssembly.Memory({ initial: 16 }) },\n })\n .then(moduleWrapper => moduleWrapper.exports);\n\n return wasmPromise;\n }\n\n const zstdDecoder = new ZSTDDecoder();\n\n function transcode (\n data: EncodedData[][],\n needZstd: boolean,\n transcoderWasmModule: WasmTranscoder,\n zstddecWasmModule?: WebAssembly.Module,\n ) {\n const faceCount = data.length;\n const result: DecodedData[][] = new Array(faceCount);\n const decodedLevelCache = needZstd ? new Map() : undefined;\n let promise = Promise.resolve();\n\n if (needZstd && zstddecWasmModule) {\n void zstdDecoder.init(zstddecWasmModule);\n promise = zstdDecoder.initPromise!;\n }\n\n return promise.then(() => {\n for (let faceIndex = 0; faceIndex < faceCount; faceIndex++) {\n const mipmapCount = data[faceIndex].length;\n const decodedData: DecodedData[] = new Array(mipmapCount);\n\n for (let i = 0; i < mipmapCount; i++) {\n const { buffer, levelHeight, levelWidth, uncompressedByteLength } = data[faceIndex][i];\n let levelBuffer = buffer;\n\n if (needZstd) {\n let decoded = decodedLevelCache?.get(i);\n\n if (!decoded) {\n decoded = zstdDecoder.decode(buffer.slice(), uncompressedByteLength);\n decodedLevelCache?.set(i, decoded);\n }\n levelBuffer = decoded;\n }\n\n const faceByteLength = levelBuffer.byteLength / faceCount;\n const originByteOffset = levelBuffer.byteOffset;\n const decodedBuffer = transcodeASTC(\n transcoderWasmModule,\n new Uint8Array(levelBuffer.buffer, originByteOffset + faceIndex * faceByteLength, faceByteLength),\n levelWidth,\n levelHeight\n );\n\n if (decodedBuffer) {\n decodedData[i] = {\n // use wasm memory as buffer, should slice to avoid duplicate\n data: decodedBuffer.slice(),\n width: levelWidth,\n height: levelHeight,\n };\n } else {\n throw new Error('buffer decoded error');\n }\n }\n result[faceIndex] = decodedData;\n }\n\n return result;\n });\n }\n\n self.onmessage = function onmessage (event) {\n const message = event.data;\n\n switch (message.type) {\n case 'init':\n initTranscoder(message.transcoderWasm)\n .then(() => {\n self.postMessage('init-completed');\n })\n .catch(error => {\n self.postMessage({ error });\n });\n\n break;\n case 'transcode':\n wasmPromise\n .then(transcoderWasmModule => {\n transcode(\n message.data,\n message.needZstd,\n transcoderWasmModule as unknown as WasmTranscoder,\n message.zstddecWasmModule,\n ).then(decodedData => {\n self.postMessage(decodedData);\n }).catch(error => self.postMessage({ error }));\n })\n .catch(error => {\n self.postMessage({ error });\n });\n\n break;\n }\n };\n\n // 主线程使用\n return {\n ZSTDDecoder,\n transcodeASTC,\n initTranscoder,\n zstdDecoder,\n transcode,\n getWasmPromise: () => wasmPromise,\n };\n}\n","/* eslint-disable promise/no-nesting */\nimport type { KTX2Container } from '../ktx2-container';\nimport { SupercompressionScheme } from '../ktx2-container';\nimport type { KTX2TargetFormat } from '../ktx2-common';\nimport type { DecodedData, EncodedData, KhronosTranscoderMessage, TranscodeResult } from './texture-transcoder';\nimport { TextureTranscoder } from './texture-transcoder';\nimport type { WasmTranscoder } from './khronos-workercode';\nimport { TranscodeWorkerCode } from './khronos-workercode';\nimport uastcAstcWasm from '../libs/uastc_astc.wasm';\nimport zstddecWasm from '../libs/zstddec.wasm';\n\n/**\n * 主线程 ASTC/UASTC 转码器\n */\nclass KhronosMainThreadTranscoder {\n private context: ReturnType<typeof TranscodeWorkerCode> | null = null;\n\n async init (): Promise<void> {\n if (!this.context) {\n this.context = TranscodeWorkerCode();\n\n const transcoderWasmModule = await uastcAstcWasm();\n\n await this.context.initTranscoder(transcoderWasmModule);\n }\n }\n\n async transcode (\n data: EncodedData[][],\n needZstd: boolean,\n zstddecWasmModule?: WebAssembly.Module,\n ): Promise<DecodedData[][]> {\n await this.init();\n\n const wasmModule = await this.context?.getWasmPromise() as unknown as WasmTranscoder;\n\n return this.context!.transcode(data, needZstd, wasmModule, zstddecWasmModule);\n }\n\n destroy (): void {\n this.context = null;\n }\n}\n\n/**\n * KTX2 Khronos ASTC/UASTC 转码器\n * 支持主线程和 Worker 两种执行模式\n */\nexport class KhronosTranscoder extends TextureTranscoder {\n private mainThreadTranscoder: KhronosMainThreadTranscoder | null = null;\n private workerURL?: string;\n\n constructor (\n workerLimitCount: number,\n public readonly type: KTX2TargetFormat,\n ) {\n super(workerLimitCount);\n }\n\n async initTranscodeWorkerPool () {\n // 主线程模式\n if (this.workerLimitCount <= 0) {\n this.mainThreadTranscoder = new KhronosMainThreadTranscoder();\n await this.mainThreadTranscoder.init();\n\n return [];\n }\n\n // Worker 模式\n const transcoderWasm = await uastcAstcWasm();\n const funcCode = TranscodeWorkerCode.toString();\n const funcBody = funcCode.substring(funcCode.indexOf('{') + 1, funcCode.lastIndexOf('}'));\n\n // 移除主线程的 return 语句,添加 Worker 消息处理\n const returnIndex = funcBody.lastIndexOf('return {');\n const workerCode = funcBody.substring(0, returnIndex);\n\n const workerURL = URL.createObjectURL(\n new Blob([workerCode], {\n type: 'application/javascript',\n })\n );\n\n this.workerURL = workerURL;\n\n return this.createTranscodePool(workerURL, transcoderWasm);\n }\n\n async transcode (ktx2Container: KTX2Container): Promise<TranscodeResult> {\n const needZstd = ktx2Container.supercompressionScheme === SupercompressionScheme.Zstd;\n const levelCount = ktx2Container.levels.length;\n const faceCount = ktx2Container.faceCount;\n\n // 准备编码数据\n const encodedData: EncodedData[][] = new Array<EncodedData[]>(faceCount);\n\n for (let faceIndex = 0; faceIndex < faceCount; faceIndex++) {\n const mipmapData = new Array(levelCount);\n\n for (let mipmapIndex = 0; mipmapIndex < levelCount; mipmapIndex++) {\n const level = ktx2Container.levels[mipmapIndex];\n const levelWidth = Math.floor(ktx2Container.pixelWidth / (1 << mipmapIndex)) || 1;\n const levelHeight = Math.floor(ktx2Container.pixelHeight / (1 << mipmapIndex)) || 1;\n const originBuffer = level.levelData.buffer;\n const originOffset = level.levelData.byteOffset;\n const originByteLength = level.levelData.byteLength;\n\n mipmapData[mipmapIndex] = {\n buffer: new Uint8Array(originBuffer, originOffset, originByteLength),\n levelWidth,\n levelHeight,\n uncompressedByteLength: level.uncompressedByteLength,\n };\n }\n encodedData[faceIndex] = mipmapData;\n }\n\n const zstddecWasmModule = needZstd ? await zstddecWasm() : undefined;\n\n let faces: Array<{ width: number, height: number, data: Uint8Array }[]>;\n\n // 主线程模式\n if (this.workerLimitCount <= 0 && this.mainThreadTranscoder) {\n faces = await this.mainThreadTranscoder.transcode(encodedData, needZstd, zstddecWasmModule);\n } else {\n // WebWorker 模式\n const postMessageData: KhronosTranscoderMessage = {\n type: 'transcode',\n format: 0,\n needZstd,\n data: encodedData,\n zstddecWasmModule,\n };\n\n faces = await this.transcodeWorkerPool.postMessage(postMessageData);\n }\n\n return {\n width: ktx2Container.pixelWidth,\n height: ktx2Container.pixelHeight,\n hasAlpha: true,\n format: 0,\n faces,\n faceCount,\n };\n }\n\n override destroy (): void {\n super.destroy();\n\n if (this.mainThreadTranscoder) {\n this.mainThreadTranscoder.destroy();\n this.mainThreadTranscoder = null;\n }\n\n if (this.workerURL) {\n URL.revokeObjectURL(this.workerURL);\n this.workerURL = undefined;\n }\n }\n}\n\n","import type {\n Texture2DSourceOptionsCompressed, TextureDataType, TextureLoader,\n} from '@galacean/effects';\nimport {\n TextureSourceType, loadBinary, glContext, textureLoaderRegistry,\n} from '@galacean/effects';\nimport { KTX2TargetFormat } from './ktx2-common';\nimport { KTX2Container } from './ktx2-container';\nimport type { TranscodeResult } from './transcoder/texture-transcoder';\nimport { KhronosTranscoder } from './transcoder/khronos-transcoder';\n\n/**\n * KTX2 加载器 - 专用于 UASTC 转 ASTC\n */\nexport class KTX2Loader implements TextureLoader {\n private khronosTranscoder: KhronosTranscoder | null = null;\n private khronosInitPromise?: Promise<void>;\n\n /**\n * KTX2 加载器\n * - workerCount 大于 0 时使用 WebWorker\n * - 默认使用主线程\n */\n constructor (\n private readonly workerCount = 0,\n ) { }\n\n /**\n * 初始化 Khronos Transcoder\n */\n private async initKhronosTranscoder (): Promise<void> {\n if (this.khronosTranscoder) {\n return;\n }\n\n try {\n const transcoder = new KhronosTranscoder(this.workerCount, KTX2TargetFormat.ASTC);\n\n await transcoder.init();\n this.khronosTranscoder = transcoder;\n } catch (error) {\n console.error('Failed to initialize KhronosTranscoder:', error);\n this.khronosTranscoder = null;\n this.khronosInitPromise = undefined;\n throw error;\n }\n }\n\n /**\n * 确保 Khronos Transcoder 已初始化\n */\n private async ensureKhronosTranscoder (): Promise<KhronosTranscoder> {\n if (this.khronosTranscoder) {\n return this.khronosTranscoder;\n }\n\n if (!this.khronosInitPromise) {\n this.khronosInitPromise = this.initKhronosTranscoder();\n }\n\n await this.khronosInitPromise;\n\n if (!this.khronosTranscoder) {\n throw new Error('KhronosTranscoder initialization failed');\n }\n\n return this.khronosTranscoder;\n }\n\n /**\n * 从 ArrayBuffer 加载 KTX2 纹理并返回压缩纹理源选项\n */\n async loadFromBuffer (arrBuffer: ArrayBuffer) {\n const buffer = new Uint8Array(arrBuffer);\n const { ktx2Container, result } = await this.parseBuffer(buffer);\n\n return this.createTextureByBuffer(ktx2Container, result);\n }\n\n /**\n * 从 URL 加载 KTX2 纹理并返回压缩纹理源选项\n */\n async loadFromURL (url: string) {\n\n const buffer = new Uint8Array(await loadBinary(url));\n const { ktx2Container, result } = await this.parseBuffer(buffer);\n\n return this.createTextureByBuffer(ktx2Container, result);\n }\n\n /**\n * @internal\n * 解析并转码 KTX2 文件\n */\n private async parseBuffer (buffer: Uint8Array) {\n const ktx2Container = new KTX2Container(buffer);\n\n // 验证格式支持\n if (!ktx2Container.isUASTC) {\n throw new Error('Unsupported KTX2: only UASTC format is supported');\n }\n\n // 前置在gpucapability已经检测过可用 直接转码\n const transcoder = await this.ensureKhronosTranscoder();\n const result = await transcoder.transcode(ktx2Container);\n\n return {\n ktx2Container,\n result,\n };\n }\n\n /**\n * @internal\n * 根据转码结果创建引擎所需的压缩纹理源选项\n */\n private createTextureByBuffer (\n ktx2Container: KTX2Container,\n transcodeResult: TranscodeResult\n ): Texture2DSourceOptionsCompressed {\n const { pixelWidth, pixelHeight, faceCount } = ktx2Container;\n const { internalFormat, format, type } = this.getASTC4x4TextureDetail();\n\n const target = faceCount === 6 ? glContext.TEXTURE_CUBE_MAP : glContext.TEXTURE_2D;\n\n const faces = transcodeResult.faces;\n const transLevels = faces[0]?.length ?? 0;\n const maxDimension = Math.max(pixelWidth, pixelHeight);\n\n if (maxDimension === 0) {\n throw new Error('Invalid KTX2 texture: both width and height are zero');\n }\n\n const fullChainCount = Math.floor(Math.log2(maxDimension)) + 1;\n const useMipmaps = transLevels > 1 && transLevels >= fullChainCount;\n const levelCount = useMipmaps ? transLevels : 1;\n\n const mipmaps: TextureDataType[] = [];\n\n for (let level = 0; level < levelCount; level++) {\n for (let face = 0; face < faceCount; face++) {\n const src = faces[face][level];\n\n mipmaps.push({\n data: src.data,\n width: src.width,\n height: src.height,\n });\n }\n }\n\n return {\n sourceType: TextureSourceType.compressed,\n target,\n internalFormat,\n format,\n type,\n mipmaps,\n };\n }\n\n /**\n * @internal\n * 获取 ASTC 4x4 的 WebGL 格式信息\n */\n private getASTC4x4TextureDetail () {\n const COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93b0;\n\n return {\n internalFormat: COMPRESSED_RGBA_ASTC_4x4_KHR,\n format: 0,\n type: 0,\n };\n }\n\n /**\n * 销毁加载器,释放资源\n */\n dispose (): void {\n this.khronosTranscoder?.destroy();\n this.khronosTranscoder = null;\n this.khronosInitPromise = undefined;\n }\n}\n\n/**\n * 注册 KTX2 加载器到全局注册表\n * @param workerCount - 大于 0 时使用 WebWorker,默认使用主线程\n */\nexport function registerKTX2Loader (workerCount = 0) {\n textureLoaderRegistry.register('ktx2', () => {\n return new KTX2Loader(workerCount);\n });\n}\n\n/**\n * 注销 KTX2 加载器\n */\nexport function unregisterKTX2Loader () {\n textureLoaderRegistry.unregister('ktx2');\n}\n","import * as EFFECTS from '@galacean/effects';\nimport { logger } from '@galacean/effects';\nimport { registerKTX2Loader } from './ktx2-loader';\n\nexport * from './ktx2-loader';\n\n/**\n * 插件版本号\n */\nexport const version = __VERSION__;\n\nregisterKTX2Loader();\n\nlogger.info(`Plugin ktx2 version: ${version}.`);\n\nif (version !== EFFECTS.version) {\n console.error(\n '注意:请统一 KTX2 插件与 Player 版本,不统一的版本混用会有不可预知的后果!',\n '\\nAttention: Please ensure the KTX2 plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!'\n );\n}\n"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_async_to_generator","fn","self","args","arguments","apply","err","undefined","__generator","thisArg","body","_","label","sent","t","trys","ops","f","y","g","Object","create","Iterator","prototype","next","verb","Symbol","iterator","n","v","step","op","TypeError","call","pop","length","push","e","SuppressedError","suppressed","message","Error","name","KTX2TargetFormat","TextureFormat","_defineProperties","target","props","i","descriptor","enumerable","configurable","writable","defineProperty","_create_class","Constructor","protoProps","staticProps","WorkerPool","workerCreator","limitedCount","taskQueue","workerStatus","initPromises","Map","destroyed","workerItems","Array","prepareWorker","count","promises","ensureWorker","all","workerId","has","set","initWorker","get","postMessage","getIdleWorkerId","workerItem","worker","catch","delete","terminate","onMessage","bind","onError","event","nextTask","addEventListener","msg","data","taskItem","shift","destroy","removeEventListener","clear","TextureTranscoder","workerLimitCount","init","initPromise","initTranscodeWorkerPool","transcodeWorkerPool","createTranscodePool","workerURL","transcoderWasm","cleanup","Worker","type","decodeText","array","TextDecoder","decode","s","il","String","fromCharCode","decodeURIComponent","encodeURIComponent","BufferReader","byteOffset","byteLength","littleEndian","dataView","DataView","buffer","pos","baseOffset","nextUint8","getUint8","nextUint16","getUint16","nextUint32","getUint32","nextInt32","getInt32","nextInt32Array","len","Int32Array","nextFloat32","getFloat32","nextFloat32Array","Float32Array","nextUint32Array","Uint32Array","nextUint8Array","Uint8Array","nextUint64","left","right","nextStr","strByteLength","uint8Array","skip","bytes","scan","maxByteLength","term","position","offset","DFDTransferFunction","ColorModel","SupercompressionScheme","KTX2Container","vkFormat","typeSize","pixelWidth","pixelHeight","pixelDepth","layerCount","faceCount","supercompressionScheme","levels","keyValue","globalData","parse","KTX2_IDENTIFIER","every","headerBufferReader","levelCount","Math","max","dfdByteOffset","dfdByteLength","kvdByteOffset","kvdByteLength","sgdByteOffset","sgdByteLength","ktxLevels","levelByteLength","levelReader","levelData","uncompressedByteLength","dfdReader","dfd","vendorId","descriptorType","versionNumber","descriptorBlockSize","colorModel","colorPrimaries","transferFunction","flags","texelBlockDimension","bytesPlane","samples","dataFormatDescriptor","sampleStart","sampleWords","numSamples","sample","bitOffset","bitLength","channelType","samplePosition","sampleLower","Infinity","sampleUpper","kvdReader","keyValueByteLength","keyData","valueData","test","decodedValue","trimmedValue","charCodeAt","slice","kvPadding","sgdReader","endpointCount","selectorCount","endpointsByteLength","selectorsByteLength","tablesByteLength","extendedByteLength","imageDescs","imageFlags","rgbSliceByteOffset","rgbSliceByteLength","alphaSliceByteOffset","alphaSliceByteLength","endpointsByteOffset","selectorsByteOffset","tablesByteOffset","extendedByteOffset","endpointsData","selectorsData","tablesData","extendedData","isSRGB","isUASTC","isNotBasis","_set_prototype_of","o","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","constructor","TranscodeWorkerCode","wasmPromise","ZSTDDecoder","zstddecWasmModule","WebAssembly","instantiate","IMPORT_OBJECT","initInstance","result","instance","env","emscripten_notify_memory_growth","uncompressedSize","exports","compressedSize","compressedPtr","malloc","heap","Number","ZSTD_findDecompressedSize","uncompressedPtr","actualSize","ZSTD_decompress","free","dec","memory","transcodeASTC","wasmTranscoder","compressedData","width","height","nBlocks","texMemoryPages","delta","grow","textureView","transcode","initTranscoder","transcoderWasmModule","Memory","initial","moduleWrapper","zstdDecoder","needZstd","decodedLevelCache","promise","faceIndex","mipmapCount","decodedData","levelHeight","levelWidth","levelBuffer","decoded","faceByteLength","originByteOffset","decodedBuffer","onmessage","getWasmPromise","KhronosMainThreadTranscoder","context","uastcAstcWasm","wasmModule","KhronosTranscoder","mainThreadTranscoder","funcCode","funcBody","returnIndex","workerCode","toString","substring","indexOf","lastIndexOf","URL","createObjectURL","Blob","ktx2Container","encodedData","mipmapData","mipmapIndex","level","originBuffer","originOffset","originByteLength","faces","postMessageData","Zstd","floor","zstddecWasm","format","hasAlpha","revokeObjectURL","KTX2Loader","workerCount","khronosTranscoder","initKhronosTranscoder","transcoder","ASTC","console","khronosInitPromise","ensureKhronosTranscoder","loadFromBuffer","arrBuffer","parseBuffer","createTextureByBuffer","loadFromURL","url","loadBinary","transcodeResult","getASTC4x4TextureDetail","internalFormat","glContext","TEXTURE_CUBE_MAP","TEXTURE_2D","transLevels","maxDimension","fullChainCount","log2","useMipmaps","mipmaps","face","src","sourceType","TextureSourceType","compressed","COMPRESSED_RGBA_ASTC_4x4_KHR","dispose","registerKTX2Loader","textureLoaderRegistry","register","unregisterKTX2Loader","unregister","version","logger","EFFECTS"],"mappings":"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"}
|