@galacean/effects-plugin-ktx2 2.8.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +22 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +1484 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +8 -0
- package/dist/index.min.js.map +1 -0
- package/dist/index.mjs +1458 -0
- package/dist/index.mjs.map +1 -0
- package/dist/ktx2-common.d.ts +19 -0
- package/dist/ktx2-container.d.ts +76 -0
- package/dist/ktx2-loader.d.ts +44 -0
- package/dist/transcoder/buffer-reader.d.ts +23 -0
- package/dist/transcoder/khronos-transcoder.d.ts +17 -0
- package/dist/transcoder/khronos-workercode.d.ts +47 -0
- package/dist/transcoder/texture-transcoder.d.ts +58 -0
- package/dist/transcoder/worker-pool.d.ts +1 -0
- package/package.json +43 -0
|
@@ -0,0 +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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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
!/*!
|
|
2
|
+
* Name: @galacean/effects-plugin-ktx2
|
|
3
|
+
* Description: Galacean Effects player Khronos Texture 2.0 plugin
|
|
4
|
+
* Author: Ant Group CO., Ltd.
|
|
5
|
+
* Contributors: 澄弈
|
|
6
|
+
* Version: v2.8.0-alpha.0
|
|
7
|
+
*/function(A,I){"object"==typeof exports&&"undefined"!=typeof module?I(exports,require("@galacean/effects")):"function"==typeof define&&define.amd?define(["exports","@galacean/effects"],I):I(((A="undefined"!=typeof globalThis?globalThis:A||self).ge=A.ge||{},A.ge.ktx2Plugin={}),A.ge)}(this,function(A,I){"use strict";var B,Q,g,C,E,i,t,o,e,n,r=function(A){if(A&&A.__esModule)return A;var I=Object.create(null);return A&&Object.keys(A).forEach(function(B){if("default"!==B){var Q=Object.getOwnPropertyDescriptor(A,B);Object.defineProperty(I,B,Q.get?Q:{enumerable:!0,get:function(){return A[B]}})}}),I.default=A,Object.freeze(I)}(I);function s(A,I,B,Q,g,C,E){try{var i=A[C](E),t=i.value}catch(A){B(A);return}i.done?I(t):Promise.resolve(t).then(Q,g)}function a(A){return function(){var I=this,B=arguments;return new Promise(function(Q,g){var C=A.apply(I,B);function E(A){s(C,Q,g,E,i,"next",A)}function i(A){s(C,Q,g,E,i,"throw",A)}E(void 0)})}}function D(A,I){var B,Q,g,C={label:0,sent:function(){if(1&g[0])throw g[1];return g[1]},trys:[],ops:[]},E=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return E.next=i(0),E.throw=i(1),E.return=i(2),"function"==typeof Symbol&&(E[Symbol.iterator]=function(){return this}),E;function i(i){return function(t){return function(i){if(B)throw TypeError("Generator is already executing.");for(;E&&(E=0,i[0]&&(C=0)),C;)try{if(B=1,Q&&(g=2&i[0]?Q.return:i[0]?Q.throw||((g=Q.return)&&g.call(Q),0):Q.next)&&!(g=g.call(Q,i[1])).done)return g;switch(Q=0,g&&(i=[2&i[0],g.value]),i[0]){case 0:case 1:g=i;break;case 4:return C.label++,{value:i[1],done:!1};case 5:C.label++,Q=i[1],i=[0];continue;case 7:i=C.ops.pop(),C.trys.pop();continue;default:if(!(g=(g=C.trys).length>0&&g[g.length-1])&&(6===i[0]||2===i[0])){C=0;continue}if(3===i[0]&&(!g||i[1]>g[0]&&i[1]<g[3])){C.label=i[1];break}if(6===i[0]&&C.label<g[1]){C.label=g[1],g=i;break}if(g&&C.label<g[2]){C.label=g[2],C.ops.push(i);break}g[2]&&C.ops.pop(),C.trys.pop();continue}i=I.call(A,C)}catch(A){i=[6,A],Q=0}finally{B=g=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,t])}}}function h(A,I){for(var B=0;B<I.length;B++){var Q=I[B];Q.enumerable=Q.enumerable||!1,Q.configurable=!0,"value"in Q&&(Q.writable=!0),Object.defineProperty(A,Q.key,Q)}}function c(A,I,B){return I&&h(A.prototype,I),B&&h(A,B),A}"function"==typeof SuppressedError&&SuppressedError,(B=i||(i={}))[B.ASTC=0]="ASTC",(Q=t||(t={}))[Q.R8G8B8=0]="R8G8B8",Q[Q.R8G8B8A8=1]="R8G8B8A8",Q[Q.ASTC_4x4=2]="ASTC_4x4";var w=function(){function A(A,I){if(void 0===A&&(A=2),this.limitedCount=A,this.workerCreator=I,this.taskQueue=[],this.workerStatus=0,this.initPromises=new Map,this.destroyed=!1,A>8||A<1)throw Error("limitedCount must be between 1 and 8");this.workerItems=Array(A)}var I=A.prototype;return I.prepareWorker=function(){for(var A=this.limitedCount,I=Array(A),B=0;B<A;B++)I.push(this.ensureWorker(B));return Promise.all(I)},I.ensureWorker=function(A){return this.initPromises.has(A)||this.initPromises.set(A,this.initWorker(A)),this.initPromises.get(A)},I.postMessage=function(A){var I=this;return this.destroyed?Promise.reject(Error("Worker Pool destroyed")):new Promise(function(B,Q){var g=I.getIdleWorkerId();-1!==g?I.ensureWorker(g).then(function(){if(I.destroyed)throw Error("Worker Pool destroyed");var C=I.workerItems[g];C.resolve=B,C.reject=Q,C.worker.postMessage(A)}).catch(function(A){I.workerStatus&=~(1<<g),I.initPromises.delete(g),Q(A)}):I.taskQueue.push({resolve:B,reject:Q,message:A})})},I.initWorker=function(A){var I=this;return Promise.resolve(this.workerCreator()).then(function(B){if(I.destroyed)throw B.terminate(),Error("Worker Pool destroyed");var Q=I.onMessage.bind(I,A),g=function(B){var Q=I.workerItems[A];Q&&(Q.reject(B.error||Error(B.message||"Worker error")),I.nextTask(A))};return B.addEventListener("message",Q),B.addEventListener("error",g),I.workerItems[A]={worker:B,resolve:function(){},reject:function(){},onMessage:Q,onError:g},B})},I.getIdleWorkerId=function(){for(var A=0,I=this.limitedCount;A<I;A++)if(!(this.workerStatus&1<<A))return this.workerStatus|=1<<A,A;return -1},I.onMessage=function(A,I){var B=this.workerItems[A];if(B){var Q=I.data.error;Q?B.reject(Q):B.resolve(I.data),this.nextTask(A)}},I.nextTask=function(A){if(this.taskQueue.length){var I=this.taskQueue.shift(),B=this.workerItems[A];if(!B){I.reject(Error("Worker not initialized")),this.workerStatus&=~(1<<A);return}B.resolve=I.resolve,B.reject=I.reject,B.worker.postMessage(I.message)}else this.workerStatus&=~(1<<A)},I.destroy=function(){if(!this.destroyed){this.destroyed=!0;for(var A,I=this.workerItems,B=Error("Worker Pool destroyed"),Q=0,g=I.length;Q<g;Q++){var C=I[Q];C&&(C.onMessage&&C.worker.removeEventListener("message",C.onMessage),C.onError&&C.worker.removeEventListener("error",C.onError),C.worker.terminate(),null==C.reject||C.reject.call(C,B))}for(;this.taskQueue.length;)null==(A=this.taskQueue.shift())||A.reject(B);I.length=0,this.taskQueue.length=0,this.workerStatus=0,this.initPromises.clear()}},A}(),G=function(){function A(A){this.workerLimitCount=A}var I=A.prototype;return I.init=function(){return this.initPromise||(this.initPromise=this.initTranscodeWorkerPool()),this.initPromise},I.destroy=function(){var A;null==(A=this.transcodeWorkerPool)||A.destroy()},I.createTranscodePool=function(A,I){return this.transcodeWorkerPool=new w(this.workerLimitCount,function(){return new Promise(function(B,Q){var g=function(A){var I;E(),C.terminate(),Q(null!=(I=A.error)?I:Error(A.message||"Worker init error"))},C=new Worker(A),E=function(){C.removeEventListener("message",i),C.removeEventListener("error",g)};function i(A){A.data.error?Q(A.data.error):(C.removeEventListener("message",i),B(C))}C.addEventListener("message",i),C.addEventListener("error",g),C.postMessage({type:"init",transcoderWasm:I})})}),this.transcodeWorkerPool.prepareWorker()},A}();function y(A){if("undefined"!=typeof TextDecoder)return new TextDecoder("utf-8").decode(A);for(var I="",B=0,Q=A.length;B<Q;B++)I+=String.fromCharCode(A[B]);return decodeURIComponent(encodeURIComponent(I))}var F=function(){function A(A,I,B,Q){void 0===I&&(I=0),void 0===Q&&(Q=!0),this.data=A,this.dataView=new DataView(A.buffer,A.byteOffset+I,null!=B?B:A.byteLength-I),this.littleEndian=Q,this.pos=0,this.baseOffset=I}var I=A.prototype;return I.nextUint8=function(){var A=this.dataView.getUint8(this.pos);return this.pos+=1,A},I.nextUint16=function(){var A=this.dataView.getUint16(this.pos,this.littleEndian);return this.pos+=2,A},I.nextUint32=function(){var A=this.dataView.getUint32(this.pos,this.littleEndian);return this.pos+=4,A},I.nextInt32=function(){var A=this.dataView.getInt32(this.pos,this.littleEndian);return this.pos+=4,A},I.nextInt32Array=function(A){var I=new Int32Array(this.data.buffer,this.pos+this.dataView.byteOffset,A);return this.pos+=4*A,I},I.nextFloat32=function(){var A=this.dataView.getFloat32(this.pos,this.littleEndian);return this.pos+=4,A},I.nextFloat32Array=function(A){var I=new Float32Array(this.data.buffer,this.pos+this.dataView.byteOffset,A);return this.pos+=4*A,I},I.nextUint32Array=function(A){var I=new Uint32Array(this.data.buffer,this.pos+this.dataView.byteOffset,A);return this.pos+=4*A,I},I.nextUint8Array=function(A){var I=new Uint8Array(this.data.buffer,this.pos+this.dataView.byteOffset,A);return this.pos+=A,I},I.nextUint64=function(){if(!this.littleEndian)throw Error("nextUint64 only supports little-endian");var A=this.dataView.getUint32(this.pos,this.littleEndian),I=this.dataView.getUint32(this.pos+4,this.littleEndian);return this.pos+=8,A+4294967296*I},I.nextStr=function(){var A=this.nextUint16(),I=new Uint8Array(this.data.buffer,this.pos+this.dataView.byteOffset,A);return this.pos+=A,y(I)},I.skip=function(A){return this.pos+=A,this},I.scan=function(A,I){void 0===I&&(I=0);for(var B=this.pos,Q=0;this.dataView.getUint8(this.pos)!==I&&Q<A;)Q++,this.pos++;return Q<A&&this.pos++,new Uint8Array(this.dataView.buffer,this.dataView.byteOffset+B,Q)},c(A,[{key:"position",get:function(){return this.pos}},{key:"offset",get:function(){return this.pos+this.baseOffset}}]),A}();(g=o||(o={}))[g.linear=1]="linear",g[g.sRGB=2]="sRGB",(C=e||(e={}))[C.ETC1S=163]="ETC1S",C[C.UASTC=166]="UASTC",(E=n||(n={}))[E.None=0]="None",E[E.BasisLZ=1]="BasisLZ",E[E.Zstd=2]="Zstd",E[E.ZLib=3]="ZLib";var R=function(){function A(A){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.keyValue={},this.globalData=null,this.parse(A)}return A.prototype.parse=function(A){var I=new Uint8Array([171,75,84,88,32,50,48,187,13,10,26,10]);if(A.length<I.length||!I.every(function(I,B){return A[B]===I}))throw Error("Texture missing KTX2 identifier.");var B=A.buffer,Q=A.byteOffset,g=new F(A,12);this.vkFormat=g.nextUint32(),this.typeSize=g.nextUint32(),this.pixelWidth=g.nextUint32(),this.pixelHeight=g.nextUint32(),this.pixelDepth=g.nextUint32(),this.layerCount=g.nextUint32(),this.faceCount=g.nextUint32();var C=Math.max(1,g.nextUint32());this.supercompressionScheme=g.nextUint32();var E=g.nextUint32(),i=g.nextUint32(),t=g.nextUint32(),o=g.nextUint32(),e=g.nextUint64(),n=g.nextUint64(),r=Array(C),s=24*C,a=new F(A,g.offset,s);this.levels=r;for(var D=0;D<C;D++)r[D]={levelData:new Uint8Array(B,Q+a.nextUint64(),a.nextUint64()),uncompressedByteLength:a.nextUint64()};var h=new F(A,E,i),c={vendorId:h.skip(4).nextUint16(),descriptorType:h.nextUint16(),versionNumber:h.nextUint16(),descriptorBlockSize:h.nextUint16(),colorModel:h.nextUint8(),colorPrimaries:h.nextUint8(),transferFunction:h.nextUint8(),flags:h.nextUint8(),texelBlockDimension:[h.nextUint8(),h.nextUint8(),h.nextUint8(),h.nextUint8()],bytesPlane:[h.nextUint8(),h.nextUint8(),h.nextUint8(),h.nextUint8(),h.nextUint8(),h.nextUint8(),h.nextUint8(),h.nextUint8()],samples:[]};this.dataFormatDescriptor=c;for(var w=(c.descriptorBlockSize/4-6)/4,G=0;G<w;G++){var R={bitOffset:h.nextUint16(),bitLength:h.nextUint8(),channelType:h.nextUint8(),samplePosition:[h.nextUint8(),h.nextUint8(),h.nextUint8(),h.nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&R.channelType?(R.sampleLower=h.nextInt32(),R.sampleUpper=h.nextInt32()):(R.sampleLower=h.nextUint32(),R.sampleUpper=h.nextUint32()),c.samples[G]=R}for(var S=new F(A,t,o,!0);S.position<o;){var k=S.nextUint32(),d=S.scan(k),U=y(d),H=S.nextUint8Array(k-d.byteLength-1);if(/^ktx/i.test(U)){for(var f=y(H);f.length>0&&0===f.charCodeAt(f.length-1);)f=f.slice(0,-1);this.keyValue[U]=f}else this.keyValue[U]=H;var L=k%4?4-k%4:0;S.skip(L)}if(n<=0)return this;for(var N=new F(A,e,n,!0),J=N.nextUint16(),q=N.nextUint16(),M=N.nextUint32(),u=N.nextUint32(),Y=N.nextUint32(),K=N.nextUint32(),l=Array(C),x=0;x<C;x++)l[x]={imageFlags:N.nextUint32(),rgbSliceByteOffset:N.nextUint32(),rgbSliceByteLength:N.nextUint32(),alphaSliceByteOffset:N.nextUint32(),alphaSliceByteLength:N.nextUint32()};var p=e+N.position,m=p+M,b=m+u,P=b+Y,v=new Uint8Array(B,Q+p,M),O=new Uint8Array(B,Q+m,u),X=new Uint8Array(B,Q+b,Y),Z=new Uint8Array(B,Q+P,K);this.globalData={endpointCount:J,selectorCount:q,imageDescs:l,endpointsData:v,selectorsData:O,tablesData:X,extendedData:Z}},c(A,[{key:"isSRGB",get:function(){return 2===this.dataFormatDescriptor.transferFunction}},{key:"isUASTC",get:function(){return 166===this.dataFormatDescriptor.colorModel}},{key:"isNotBasis",get:function(){return 0!=this.vkFormat}}]),A}();function S(A,I){return(S=Object.setPrototypeOf||function(A,I){return A.__proto__=I,A})(A,I)}function k(){var A,I=function(){function A(){}var I=A.prototype;return I.init=function(I){return this.initPromise||(this.initPromise=WebAssembly.instantiate(I,A.IMPORT_OBJECT).then(this.initInstance)),this.initPromise},I.initInstance=function(I){A.instance=I,A.IMPORT_OBJECT.env.emscripten_notify_memory_growth()},I.decode=function(I,B){if(void 0===B&&(B=0),!A.instance)throw Error("ZSTDDecoder: Await .init() before decoding.");var Q=A.instance.exports,g=I.byteLength,C=Q.malloc(g);A.heap.set(I,C),B=B||Number(Q.ZSTD_findDecompressedSize(C,g));var E=Q.malloc(B),i=Q.ZSTD_decompress(E,B,C,g);if(i<0)throw Q.free(C),Q.free(E),Error("ZSTDDecoder: decompression failed.");var t=A.heap.slice(E,E+i);return Q.free(C),Q.free(E),t},A}();function B(A,I,B,Q){var g=(B+3>>2)*(Q+3>>2),C=16*g+65535>>16,E=A.memory,i=C+1-(E.buffer.byteLength>>16);i>0&&E.grow(i);var t=new Uint8Array(E.buffer,65536,16*g);return t.set(I),0===A.transcode(g)?t:null}function Q(I){return A=WebAssembly.instantiate(I,{env:{memory:new WebAssembly.Memory({initial:16})}}).then(function(A){return A.exports})}I.IMPORT_OBJECT={env:{emscripten_notify_memory_growth:function(){I.heap=new Uint8Array(I.instance.exports.memory.buffer)}}};var g=new I;function C(A,I,Q,C){var E=A.length,i=Array(E),t=I?new Map:void 0,o=Promise.resolve();return I&&C&&(g.init(C),o=g.initPromise),o.then(function(){for(var C=0;C<E;C++){for(var o=A[C].length,e=Array(o),n=0;n<o;n++){var r=A[C][n],s=r.buffer,a=r.levelHeight,D=r.levelWidth,h=r.uncompressedByteLength,c=s;if(I){var w=null==t?void 0:t.get(n);w||(w=g.decode(s.slice(),h),null==t||t.set(n,w)),c=w}var G=c.byteLength/E,y=c.byteOffset,F=B(Q,new Uint8Array(c.buffer,y+C*G,G),D,a);if(F)e[n]={data:F.slice(),width:D,height:a};else throw Error("buffer decoded error")}i[C]=e}return i})}return self.onmessage=function(I){var B=I.data;switch(B.type){case"init":Q(B.transcoderWasm).then(function(){self.postMessage("init-completed")}).catch(function(A){self.postMessage({error:A})});break;case"transcode":A.then(function(A){C(B.data,B.needZstd,A,B.zstddecWasmModule).then(function(A){self.postMessage(A)}).catch(function(A){return self.postMessage({error:A})})}).catch(function(A){self.postMessage({error:A})})}},{ZSTDDecoder:I,transcodeASTC:B,initTranscoder:Q,zstdDecoder:g,transcode:C,getWasmPromise:function(){return A}}}function d(A,I,B,Q){var g,C,E,i=null;if("undefined"!=typeof process&&null!=process.versions&&null!=process.versions.node)i=Buffer.from(B,"base64");else{var t=globalThis.atob(B),o=t.length;i=new Uint8Array(new ArrayBuffer(o));for(var e=0;e<o;e++)i[e]=t.charCodeAt(e)}if(A){var n=new WebAssembly.Module(i);return Q?new WebAssembly.Instance(n,Q):n}return g=i,C=WebAssembly.instantiate,E=WebAssembly.compile,Q?C(g,Q):E(g)}function U(A){return d(0,null,"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",A)}var H=function(){function A(){this.context=null}var I=A.prototype;return I.init=function(){var A=this;return a(function(){var I;return D(this,function(B){switch(B.label){case 0:if(A.context)return[3,3];return A.context=k(),[4,U()];case 1:return I=B.sent(),[4,A.context.initTranscoder(I)];case 2:B.sent(),B.label=3;case 3:return[2]}})})()},I.transcode=function(A,I,B){var Q=this;return a(function(){var g,C;return D(this,function(E){switch(E.label){case 0:return[4,Q.init()];case 1:return E.sent(),[4,null==(g=Q.context)?void 0:g.getWasmPromise()];case 2:return C=E.sent(),[2,Q.context.transcode(A,I,C,B)]}})})()},I.destroy=function(){this.context=null},A}(),f=function(A){function I(I,B){var Q;return(Q=A.call(this,I)||this).type=B,Q.mainThreadTranscoder=null,Q}!function(A,I){if("function"!=typeof I&&null!==I)throw TypeError("Super expression must either be null or a function");A.prototype=Object.create(I&&I.prototype,{constructor:{value:A,writable:!0,configurable:!0}}),I&&S(A,I)}(I,A);var B=I.prototype;return B.initTranscodeWorkerPool=function(){var A=this;return a(function(){var I,B,Q,g,C,E;return D(this,function(i){switch(i.label){case 0:if(!(A.workerLimitCount<=0))return[3,2];return A.mainThreadTranscoder=new H,[4,A.mainThreadTranscoder.init()];case 1:return i.sent(),[2,[]];case 2:return[4,U()];case 3:return I=i.sent(),g=(Q=(B=k.toString()).substring(B.indexOf("{")+1,B.lastIndexOf("}"))).lastIndexOf("return {"),C=Q.substring(0,g),E=URL.createObjectURL(new Blob([C],{type:"application/javascript"})),A.workerURL=E,[2,A.createTranscodePool(E,I)]}})})()},B.transcode=function(A){var I=this;return a(function(){var B,Q,g,C,E,i,t,o,e,r,s,a,h,c,w,G,y;return D(this,function(D){switch(D.label){case 0:for(E=0,B=A.supercompressionScheme===n.Zstd,Q=A.levels.length,C=Array(g=A.faceCount);E<g;E++){for(t=0,i=Array(Q);t<Q;t++)o=A.levels[t],e=Math.floor(A.pixelWidth/(1<<t))||1,r=Math.floor(A.pixelHeight/(1<<t))||1,s=o.levelData.buffer,a=o.levelData.byteOffset,h=o.levelData.byteLength,i[t]={buffer:new Uint8Array(s,a,h),levelWidth:e,levelHeight:r,uncompressedByteLength:o.uncompressedByteLength};C[E]=i}if(!B)return[3,2];return[4,d(0,null,"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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",void 0)];case 1:return w=D.sent(),[3,3];case 2:w=void 0,D.label=3;case 3:if(c=w,!(I.workerLimitCount<=0&&I.mainThreadTranscoder))return[3,5];return[4,I.mainThreadTranscoder.transcode(C,B,c)];case 4:return G=D.sent(),[3,7];case 5:return y={type:"transcode",format:0,needZstd:B,data:C,zstddecWasmModule:c},[4,I.transcodeWorkerPool.postMessage(y)];case 6:G=D.sent(),D.label=7;case 7:return[2,{width:A.pixelWidth,height:A.pixelHeight,hasAlpha:!0,format:0,faces:G,faceCount:g}]}})})()},B.destroy=function(){A.prototype.destroy.call(this),this.mainThreadTranscoder&&(this.mainThreadTranscoder.destroy(),this.mainThreadTranscoder=null),this.workerURL&&(URL.revokeObjectURL(this.workerURL),this.workerURL=void 0)},I}(G),L=function(){function A(A){void 0===A&&(A=0),this.workerCount=A,this.khronosTranscoder=null}var B=A.prototype;return B.initKhronosTranscoder=function(){var A=this;return a(function(){var I,B;return D(this,function(Q){switch(Q.label){case 0:if(A.khronosTranscoder)return[2];Q.label=1;case 1:return Q.trys.push([1,3,,4]),[4,(I=new f(A.workerCount,i.ASTC)).init()];case 2:return Q.sent(),A.khronosTranscoder=I,[3,4];case 3:throw console.error("Failed to initialize KhronosTranscoder:",B=Q.sent()),A.khronosTranscoder=null,A.khronosInitPromise=void 0,B;case 4:return[2]}})})()},B.ensureKhronosTranscoder=function(){var A=this;return a(function(){return D(this,function(I){switch(I.label){case 0:if(A.khronosTranscoder)return[2,A.khronosTranscoder];return A.khronosInitPromise||(A.khronosInitPromise=A.initKhronosTranscoder()),[4,A.khronosInitPromise];case 1:if(I.sent(),!A.khronosTranscoder)throw Error("KhronosTranscoder initialization failed");return[2,A.khronosTranscoder]}})})()},B.loadFromBuffer=function(A){var I=this;return a(function(){var B,Q,g,C;return D(this,function(E){switch(E.label){case 0:return B=new Uint8Array(A),[4,I.parseBuffer(B)];case 1:return g=(Q=E.sent()).ktx2Container,C=Q.result,[2,I.createTextureByBuffer(g,C)]}})})()},B.loadFromURL=function(A){var B=this;return a(function(){var Q,g,C,E,i;return D(this,function(t){switch(t.label){case 0:return g=Uint8Array.bind,[4,I.loadBinary(A)];case 1:return Q=new(g.apply(Uint8Array,[void 0,t.sent()])),[4,B.parseBuffer(Q)];case 2:return E=(C=t.sent()).ktx2Container,i=C.result,[2,B.createTextureByBuffer(E,i)]}})})()},B.parseBuffer=function(A){var I=this;return a(function(){var B,Q;return D(this,function(g){switch(g.label){case 0:if(!(B=new R(A)).isUASTC)throw Error("Unsupported KTX2: only UASTC format is supported");return[4,I.ensureKhronosTranscoder()];case 1:return[4,g.sent().transcode(B)];case 2:return Q=g.sent(),[2,{ktx2Container:B,result:Q}]}})})()},B.createTextureByBuffer=function(A,B){var Q,g,C=A.pixelWidth,E=A.pixelHeight,i=A.faceCount,t=this.getASTC4x4TextureDetail(),o=t.internalFormat,e=t.format,n=t.type,r=6===i?I.glContext.TEXTURE_CUBE_MAP:I.glContext.TEXTURE_2D,s=B.faces,a=null!=(g=null==(Q=s[0])?void 0:Q.length)?g:0,D=Math.max(C,E);if(0===D)throw Error("Invalid KTX2 texture: both width and height are zero");for(var h=a>1&&a>=Math.floor(Math.log2(D))+1?a:1,c=[],w=0;w<h;w++)for(var G=0;G<i;G++){var y=s[G][w];c.push({data:y.data,width:y.width,height:y.height})}return{sourceType:I.TextureSourceType.compressed,target:r,internalFormat:o,format:e,type:n,mipmaps:c}},B.getASTC4x4TextureDetail=function(){return{internalFormat:37808,format:0,type:0}},B.dispose=function(){var A;null==(A=this.khronosTranscoder)||A.destroy(),this.khronosTranscoder=null,this.khronosInitPromise=void 0},A}();function N(A){void 0===A&&(A=0),I.textureLoaderRegistry.register("ktx2",function(){return new L(A)})}var J="2.8.0-alpha.0";N(),J!==r.version&&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!"),A.KTX2Loader=L,A.registerKTX2Loader=N,A.unregisterKTX2Loader=function(){I.textureLoaderRegistry.unregister("ktx2")},A.version=J,Object.defineProperty(A,"__esModule",{value:!0})});
|
|
8
|
+
//# sourceMappingURL=index.min.js.map
|