@loaders.gl/textures 3.1.0-alpha.5 → 3.1.0-beta.5
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/basis-loader.d.ts +1 -0
- package/dist/basis-loader.d.ts.map +1 -0
- package/dist/basis-loader.js +40 -0
- package/dist/basis-worker.js +675 -2
- package/dist/bundle.d.ts +1 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +2107 -0
- package/dist/compressed-texture-loader.d.ts +1 -0
- package/dist/compressed-texture-loader.d.ts.map +1 -0
- package/dist/compressed-texture-loader.js +64 -0
- package/dist/compressed-texture-worker.js +1179 -2
- package/dist/compressed-texture-writer.d.ts +1 -0
- package/dist/compressed-texture-writer.d.ts.map +1 -0
- package/dist/compressed-texture-writer.js +28 -0
- package/dist/crunch-loader.d.ts +1 -0
- package/dist/crunch-loader.d.ts.map +1 -0
- package/dist/crunch-loader.js +25 -0
- package/dist/crunch-worker.js +486 -2
- package/dist/es5/index.js +3 -3
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/{gl-constants.js → gl-extensions.js} +4 -4
- package/dist/es5/lib/gl-extensions.js.map +1 -0
- package/dist/es5/lib/parsers/basis-module-loader.js +1 -1
- package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -1
- package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -1
- package/dist/es5/lib/parsers/parse-basis.js +9 -9
- package/dist/es5/lib/parsers/parse-basis.js.map +1 -1
- package/dist/es5/lib/parsers/parse-crunch.js +4 -4
- package/dist/es5/lib/parsers/parse-crunch.js.map +1 -1
- package/dist/es5/lib/parsers/parse-dds.js +23 -23
- package/dist/es5/lib/parsers/parse-dds.js.map +1 -1
- package/dist/es5/lib/parsers/parse-ktx.js +2 -2
- package/dist/es5/lib/parsers/parse-ktx.js.map +1 -1
- package/dist/es5/lib/parsers/parse-npy.js +3 -1
- package/dist/es5/lib/parsers/parse-npy.js.map +1 -1
- package/dist/es5/lib/parsers/parse-pvr.js +28 -28
- package/dist/es5/lib/parsers/parse-pvr.js.map +1 -1
- package/dist/es5/lib/texture-api/async-deep-map.js.map +1 -1
- package/dist/es5/lib/texture-api/deep-load.js.map +1 -1
- package/dist/es5/lib/texture-api/generate-url.js +4 -12
- package/dist/es5/lib/texture-api/generate-url.js.map +1 -1
- package/dist/es5/lib/texture-api/load-image-array.js.map +1 -1
- package/dist/es5/lib/texture-api/load-image-cube.js.map +1 -1
- package/dist/es5/lib/texture-api/load-image.js +2 -5
- package/dist/es5/lib/texture-api/load-image.js.map +1 -1
- package/dist/es5/lib/texture-api/texture-api-types.js +2 -0
- package/dist/es5/lib/texture-api/texture-api-types.js.map +1 -0
- package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -1
- package/dist/es5/lib/utils/ktx-format-helper.js +67 -67
- package/dist/es5/lib/utils/ktx-format-helper.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/libs/README.md +2 -2
- package/dist/es5/libs/basis_encoder.js +1 -1
- package/dist/es5/libs/basis_transcoder.js +1 -1
- package/dist/es5/libs/crunch.js +1 -0
- package/dist/es5/npy-loader.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/{gl-constants.js → gl-extensions.js} +2 -2
- package/dist/esm/lib/gl-extensions.js.map +1 -0
- package/dist/esm/lib/parsers/basis-module-loader.js +1 -1
- package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -1
- package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -1
- package/dist/esm/lib/parsers/parse-basis.js +8 -8
- package/dist/esm/lib/parsers/parse-basis.js.map +1 -1
- package/dist/esm/lib/parsers/parse-crunch.js +4 -4
- package/dist/esm/lib/parsers/parse-crunch.js.map +1 -1
- package/dist/esm/lib/parsers/parse-dds.js +23 -23
- package/dist/esm/lib/parsers/parse-dds.js.map +1 -1
- package/dist/esm/lib/parsers/parse-ktx.js +2 -2
- package/dist/esm/lib/parsers/parse-ktx.js.map +1 -1
- package/dist/esm/lib/parsers/parse-npy.js +3 -1
- package/dist/esm/lib/parsers/parse-npy.js.map +1 -1
- package/dist/esm/lib/parsers/parse-pvr.js +28 -28
- package/dist/esm/lib/parsers/parse-pvr.js.map +1 -1
- package/dist/esm/lib/texture-api/async-deep-map.js.map +1 -1
- package/dist/esm/lib/texture-api/deep-load.js.map +1 -1
- package/dist/esm/lib/texture-api/generate-url.js +5 -13
- package/dist/esm/lib/texture-api/generate-url.js.map +1 -1
- package/dist/esm/lib/texture-api/load-image-array.js.map +1 -1
- package/dist/esm/lib/texture-api/load-image-cube.js.map +1 -1
- package/dist/esm/lib/texture-api/load-image.js +2 -5
- package/dist/esm/lib/texture-api/load-image.js.map +1 -1
- package/dist/esm/lib/texture-api/texture-api-types.js +2 -0
- package/dist/esm/lib/texture-api/texture-api-types.js.map +1 -0
- package/dist/esm/lib/utils/extract-mipmap-images.js.map +1 -1
- package/dist/esm/lib/utils/ktx-format-helper.js +67 -67
- package/dist/esm/lib/utils/ktx-format-helper.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/libs/README.md +2 -2
- package/dist/esm/libs/basis_encoder.js +1 -1
- package/dist/esm/libs/basis_transcoder.js +1 -1
- package/dist/esm/libs/crunch.js +1 -0
- package/dist/esm/npy-loader.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/ktx2-basis-universal-texture-writer.d.ts +1 -0
- package/dist/ktx2-basis-universal-texture-writer.d.ts.map +1 -0
- package/dist/ktx2-basis-universal-texture-writer.js +25 -0
- package/dist/lib/encoders/encode-ktx.d.ts +1 -0
- package/dist/lib/encoders/encode-ktx.d.ts.map +1 -0
- package/dist/lib/encoders/encode-ktx.js +10 -0
- package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts +1 -0
- package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -0
- package/dist/lib/encoders/encode-ktx2-basis-texture.js +41 -0
- package/dist/lib/encoders/encode-texture.d.ts +1 -0
- package/dist/lib/encoders/encode-texture.d.ts.map +1 -0
- package/dist/lib/encoders/encode-texture.js +30 -0
- package/dist/lib/{gl-constants.d.ts → gl-extensions.d.ts} +2 -1
- package/dist/lib/gl-extensions.d.ts.map +1 -0
- package/dist/lib/gl-extensions.js +72 -0
- package/dist/lib/parsers/basis-module-loader.d.ts +1 -0
- package/dist/lib/parsers/basis-module-loader.d.ts.map +1 -0
- package/dist/lib/parsers/basis-module-loader.js +114 -0
- package/dist/lib/parsers/crunch-module-loader.d.ts +1 -0
- package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -0
- package/dist/lib/parsers/crunch-module-loader.js +35 -0
- package/dist/lib/parsers/parse-basis.d.ts +1 -0
- package/dist/lib/parsers/parse-basis.d.ts.map +1 -0
- package/dist/lib/parsers/parse-basis.js +245 -0
- package/dist/lib/parsers/parse-compressed-texture.d.ts +1 -0
- package/dist/lib/parsers/parse-compressed-texture.d.ts.map +1 -0
- package/dist/lib/parsers/parse-compressed-texture.js +26 -0
- package/dist/lib/parsers/parse-crunch.d.ts +1 -0
- package/dist/lib/parsers/parse-crunch.d.ts.map +1 -0
- package/dist/lib/parsers/parse-crunch.js +105 -0
- package/dist/lib/parsers/parse-dds.d.ts +1 -0
- package/dist/lib/parsers/parse-dds.d.ts.map +1 -0
- package/dist/lib/parsers/parse-dds.js +108 -0
- package/dist/lib/parsers/parse-ktx.d.ts +3 -2
- package/dist/lib/parsers/parse-ktx.d.ts.map +1 -0
- package/dist/lib/parsers/parse-ktx.js +46 -0
- package/dist/lib/parsers/parse-npy.d.ts +8 -2
- package/dist/lib/parsers/parse-npy.d.ts.map +1 -0
- package/dist/lib/parsers/parse-npy.js +85 -0
- package/dist/lib/parsers/parse-pvr.d.ts +1 -0
- package/dist/lib/parsers/parse-pvr.d.ts.map +1 -0
- package/dist/lib/parsers/parse-pvr.js +250 -0
- package/dist/lib/texture-api/async-deep-map.d.ts +5 -2
- package/dist/lib/texture-api/async-deep-map.d.ts.map +1 -0
- package/dist/lib/texture-api/async-deep-map.js +41 -0
- package/dist/lib/texture-api/deep-load.d.ts +5 -2
- package/dist/lib/texture-api/deep-load.d.ts.map +1 -0
- package/dist/lib/texture-api/deep-load.js +16 -0
- package/dist/lib/texture-api/generate-url.d.ts +3 -1
- package/dist/lib/texture-api/generate-url.d.ts.map +1 -0
- package/dist/lib/texture-api/generate-url.js +17 -0
- package/dist/lib/texture-api/load-image-array.d.ts +4 -2
- package/dist/lib/texture-api/load-image-array.d.ts.map +1 -0
- package/dist/lib/texture-api/load-image-array.js +21 -0
- package/dist/lib/texture-api/load-image-cube.d.ts +12 -2
- package/dist/lib/texture-api/load-image-cube.d.ts.map +1 -0
- package/dist/lib/texture-api/load-image-cube.js +47 -0
- package/dist/lib/texture-api/load-image.d.ts +7 -5
- package/dist/lib/texture-api/load-image.d.ts.map +1 -0
- package/dist/lib/texture-api/load-image.js +43 -0
- package/dist/lib/texture-api/texture-api-types.d.ts +10 -0
- package/dist/lib/texture-api/texture-api-types.d.ts.map +1 -0
- package/dist/lib/texture-api/texture-api-types.js +3 -0
- package/dist/lib/utils/extract-mipmap-images.d.ts +2 -1
- package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -0
- package/dist/lib/utils/extract-mipmap-images.js +50 -0
- package/dist/lib/utils/ktx-format-helper.d.ts +4 -3
- package/dist/lib/utils/ktx-format-helper.d.ts.map +1 -0
- package/dist/lib/utils/ktx-format-helper.js +125 -0
- package/dist/lib/utils/texture-formats.d.ts +1 -0
- package/dist/lib/utils/texture-formats.d.ts.map +1 -0
- package/dist/lib/utils/texture-formats.js +51 -0
- package/dist/lib/utils/version.d.ts +1 -0
- package/dist/lib/utils/version.d.ts.map +1 -0
- package/dist/lib/utils/version.js +8 -0
- package/dist/libs/README.md +2 -2
- package/dist/libs/basis_encoder.js +1 -1
- package/dist/libs/basis_transcoder.js +1 -1
- package/dist/libs/crunch.js +1 -0
- package/dist/npy-loader.d.ts +7 -3
- package/dist/npy-loader.d.ts.map +1 -0
- package/dist/npy-loader.js +34 -0
- package/dist/npy-worker.js +240 -2
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/workers/basis-worker.d.ts +1 -0
- package/dist/workers/basis-worker.d.ts.map +1 -0
- package/dist/workers/basis-worker.js +5 -0
- package/dist/workers/compressed-texture-worker.d.ts +1 -0
- package/dist/workers/compressed-texture-worker.d.ts.map +1 -0
- package/dist/workers/compressed-texture-worker.js +5 -0
- package/dist/workers/crunch-worker.d.ts +1 -0
- package/dist/workers/crunch-worker.d.ts.map +1 -0
- package/dist/workers/crunch-worker.js +14 -0
- package/dist/workers/npy-worker.d.ts +1 -0
- package/dist/workers/npy-worker.d.ts.map +1 -0
- package/dist/workers/npy-worker.js +5 -0
- package/package.json +10 -11
- package/src/index.ts +1 -1
- package/src/lib/{gl-constants.ts → gl-extensions.ts} +1 -1
- package/src/lib/parsers/crunch-module-loader.ts +1 -0
- package/src/lib/parsers/parse-basis.js +32 -8
- package/src/lib/parsers/parse-crunch.ts +4 -4
- package/src/lib/parsers/parse-dds.ts +29 -26
- package/src/lib/parsers/parse-ktx.js +3 -6
- package/src/lib/parsers/parse-ktx.ts +47 -0
- package/src/lib/parsers/parse-npy.js +3 -17
- package/src/lib/parsers/parse-npy.ts +98 -0
- package/src/lib/parsers/parse-pvr.ts +90 -48
- package/src/lib/texture-api/async-deep-map.ts +15 -8
- package/src/lib/texture-api/deep-load.ts +7 -3
- package/src/lib/texture-api/generate-url.ts +10 -8
- package/src/lib/texture-api/load-image-array.ts +8 -2
- package/src/lib/texture-api/load-image-cube.ts +18 -4
- package/src/lib/texture-api/load-image.ts +15 -5
- package/src/lib/texture-api/texture-api-types.ts +12 -0
- package/src/lib/utils/extract-mipmap-images.ts +16 -3
- package/src/lib/utils/ktx-format-helper.ts +71 -71
- package/src/libs/README.md +2 -2
- package/src/libs/basis_encoder.js +1 -1
- package/src/libs/basis_transcoder.js +1 -1
- package/src/libs/crunch.js +1 -0
- package/src/npy-loader.ts +2 -2
- package/dist/basis-worker.js.map +0 -1
- package/dist/compressed-texture-worker.js.map +0 -1
- package/dist/crunch-worker.js.map +0 -1
- package/dist/dist.min.js +0 -2
- package/dist/dist.min.js.map +0 -1
- package/dist/es5/lib/gl-constants.js.map +0 -1
- package/dist/esm/lib/gl-constants.js.map +0 -1
- package/dist/npy-worker.js.map +0 -1
|
@@ -1,2 +1,1179 @@
|
|
|
1
|
-
!function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=19)}([function(t,e,r){t.exports=r(11)},function(t,e){function r(t,e,r,n,o,i,a){try{var s=t[i](a),_=s.value}catch(t){return void r(t)}s.done?e(_):Promise.resolve(_).then(n,o)}t.exports=function(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var a=t.apply(e,n);function s(t){r(a,o,i,s,_,"next",t)}function _(t){r(a,o,i,s,_,"throw",t)}s(void 0)}))}},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,r){"use strict";(function(t,n){r.d(e,"a",(function(){return a})),r.d(e,"b",(function(){return s})),r.d(e,"c",(function(){return _}));var o=r(3),i={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:void 0!==t&&t,document:"undefined"!=typeof document&&document},a=i.global||i.self||i.window||{},s="object"!==(void 0===n?"undefined":r.n(o)()(n))||"[object process]"!==String(n)||n.browser,_="function"==typeof importScripts,u=("undefined"!=typeof window&&window.orientation,void 0!==n&&n.version&&/v([0-9]*)/.exec(n.version));u&&parseFloat(u[1])}).call(this,r(17),r(18))},function(t,e){function r(e){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(t.exports=r=function(t){return typeof t},t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=r=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.default=t.exports,t.exports.__esModule=!0),r(e)}t.exports=r,t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){},function(t,e){t.exports=function(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,r){var n=r(12),o=r(13),i=r(14),a=r(16);t.exports=function(t,e){return n(t)||o(t,e)||i(t,e)||a()},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){function r(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}t.exports=function(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t},t.exports.default=t.exports,t.exports.__esModule=!0},,,function(t,e,r){var n=function(t){"use strict";var e=Object.prototype,r=e.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function _(t,e,r,n){var o=e&&e.prototype instanceof f?e:f,i=Object.create(o.prototype),a=new m(n||[]);return i._invoke=function(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return x()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=d(a,r);if(s){if(s===c)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var _=u(t,e,r);if("normal"===_.type){if(n=r.done?"completed":"suspendedYield",_.arg===c)continue;return{value:_.arg,done:r.done}}"throw"===_.type&&(n="completed",r.method="throw",r.arg=_.arg)}}}(t,r,a),i}function u(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=_;var c={};function f(){}function S(){}function l(){}var E={};E[o]=function(){return this};var R=Object.getPrototypeOf,p=R&&R(R(D([])));p&&p!==e&&r.call(p,o)&&(E=p);var A=l.prototype=f.prototype=Object.create(E);function C(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function h(t,e){var n;this._invoke=function(o,i){function a(){return new e((function(n,a){!function n(o,i,a,s){var _=u(t[o],t,i);if("throw"!==_.type){var c=_.arg,f=c.value;return f&&"object"==typeof f&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(f).then((function(t){c.value=t,a(c)}),(function(t){return n("throw",t,a,s)}))}s(_.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function d(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,d(t,e),"throw"===e.method))return c;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var n=u(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,c;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,c):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,c)}function P(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function T(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function m(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function D(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return i.next=i}}return{next:x}}function x(){return{value:void 0,done:!0}}return S.prototype=A.constructor=l,l.constructor=S,S.displayName=s(l,a,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===S||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,l):(t.__proto__=l,s(t,a,"GeneratorFunction")),t.prototype=Object.create(A),t},t.awrap=function(t){return{__await:t}},C(h.prototype),h.prototype[i]=function(){return this},t.AsyncIterator=h,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new h(_(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},C(A),s(A,a,"Generator"),A[o]=function(){return this},A.toString=function(){return"[object Generator]"},t.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},t.values=D,m.prototype={constructor:m,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(T),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),_=r.call(i,"finallyLoc");if(s&&_){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!_)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,c):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),c},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),T(r),c}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;T(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:D(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),c}},t}(t.exports);try{regeneratorRuntime=n}catch(t){Function("r","regeneratorRuntime = r")(n)}},function(t,e){t.exports=function(t){if(Array.isArray(t))return t},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t,e){var r=t&&("undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"]);if(null!=r){var n,o,i=[],a=!0,s=!1;try{for(r=r.call(t);!(a=(n=r.next()).done)&&(i.push(n.value),!e||i.length!==e);a=!0);}catch(t){s=!0,o=t}finally{try{a||null==r.return||r.return()}finally{if(s)throw o}}return i}},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,r){var n=r(15);t.exports=function(t,e){if(t){if("string"==typeof t)return n(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e){var r,n,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(r===setTimeout)return setTimeout(t,0);if((r===i||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:i}catch(t){r=i}try{n="function"==typeof clearTimeout?clearTimeout:a}catch(t){n=a}}();var _,u=[],c=!1,f=-1;function S(){c&&_&&(c=!1,_.length?u=_.concat(u):f=-1,u.length&&l())}function l(){if(!c){var t=s(S);c=!0;for(var e=u.length;e;){for(_=u,u=[];++f<e;)_&&_[f].run();f=-1,e=u.length}_=null,c=!1,function(t){if(n===clearTimeout)return clearTimeout(t);if((n===a||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(t);try{n(t)}catch(e){try{return n.call(null,t)}catch(e){return n.call(this,t)}}}(t)}}function E(t,e){this.fun=t,this.array=e}function R(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];u.push(new E(t,e)),1!==u.length||c||s(l)},E.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=R,o.addListener=R,o.once=R,o.off=R,o.removeListener=R,o.removeAllListeners=R,o.emit=R,o.prependListener=R,o.prependOnceListener=R,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(t,e,r){"use strict";r.r(e);var n=r(5),o=r.n(n),i=r(1),a=r.n(i),s=r(0),_=r.n(s),u=r(7),c=r.n(u),f=r(8),S=r.n(f),l=r(3),E=r.n(l);function R(t){return!!t&&(t instanceof ArrayBuffer||("undefined"!=typeof MessagePort&&t instanceof MessagePort||("undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas)))}var p=new Map,A=function(){function t(){c()(this,t)}return S()(t,null,[{key:"onmessage",set:function(t){self.onmessage=function(e){if(C(e)){var r=e.data,n=r.type,o=r.payload;t(n,o)}}}},{key:"addEventListener",value:function(t){var e=p.get(t);e||(e=function(e){if(C(e)){var r=e.data,n=r.type,o=r.payload;t(n,o)}}),self.addEventListener("message",e)}},{key:"removeEventListener",value:function(t){var e=p.get(t);p.delete(t),self.removeEventListener("message",e)}},{key:"postMessage",value:function(t,e){if(self){var r={source:"loaders.gl",type:t,payload:e},n=function t(e){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2?arguments[2]:void 0,o=n||new Set;if(e){if(R(e))o.add(e);else if(R(e.buffer))o.add(e.buffer);else if(ArrayBuffer.isView(e));else if(r&&"object"===E()(e))for(var i in e)t(e[i],r,o)}else;return void 0===n?Array.from(o):[]}(e);self.postMessage(r,n)}}}]),t}();function C(t){var e=t.type,r=t.data;return"message"===e&&r&&"string"==typeof r.source&&r.source.startsWith("loaders.gl")}function h(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function d(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?h(Object(r),!0).forEach((function(e){o()(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):h(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var P=0;function T(t,e){return new Promise((function(r,n){var o=P++;A.addEventListener((function t(e,i){if(i.id===o)switch(e){case"done":A.removeEventListener(t),r(i.result);break;case"error":A.removeEventListener(t),n(i.error)}}));var i={id:o,input:t,options:e};A.postMessage("process",i)}))}function m(t){return D.apply(this,arguments)}function D(){return(D=a()(_.a.mark((function t(e){var r,n,o,i,a,s,u;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.loader,n=e.arrayBuffer,o=e.options,i=e.context,!r.parseSync&&!r.parse){t.next=6;break}a=n,s=r.parseSync||r.parse,t.next=13;break;case 6:if(!r.parseTextSync){t.next=12;break}u=new TextDecoder,a=u.decode(n),s=r.parseTextSync,t.next=13;break;case 12:throw new Error("Could not load data with ".concat(r.name," loader"));case 13:return o=d(d({},o),{},{modules:r&&r.options&&r.options.modules||{},worker:!1}),t.next=16,s(a,d({},o),i,r);case 16:return t.abrupt("return",t.sent);case 17:case"end":return t.stop()}}),t)})))).apply(this,arguments)}new Uint8Array([0]);const x=[171,75,84,88,32,50,48,187,13,10,26,10];var y,M,O,v,G,b,B,g;!function(t){t[t.NONE=0]="NONE",t[t.BASISLZ=1]="BASISLZ",t[t.ZSTD=2]="ZSTD",t[t.ZLIB=3]="ZLIB"}(y||(y={})),function(t){t[t.BASICFORMAT=0]="BASICFORMAT"}(M||(M={})),function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.ETC1S=163]="ETC1S",t[t.UASTC=166]="UASTC"}(O||(O={})),function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.SRGB=1]="SRGB"}(v||(v={})),function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.LINEAR=1]="LINEAR",t[t.SRGB=2]="SRGB",t[t.ITU=3]="ITU",t[t.NTSC=4]="NTSC",t[t.SLOG=5]="SLOG",t[t.SLOG2=6]="SLOG2"}(G||(G={})),function(t){t[t.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",t[t.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED"}(b||(b={})),function(t){t[t.RGB=0]="RGB",t[t.RRR=3]="RRR",t[t.GGG=4]="GGG",t[t.AAA=15]="AAA"}(B||(B={})),function(t){t[t.RGB=0]="RGB",t[t.RGBA=3]="RGBA",t[t.RRR=4]="RRR",t[t.RRRG=5]="RRRG"}(g||(g={}));class H{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=y.NONE,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:M.BASICFORMAT,versionNumber:2,descriptorBlockSize:40,colorModel:O.UNSPECIFIED,colorPrimaries:v.SRGB,transferFunction:v.SRGB,flags:b.ALPHA_STRAIGHT,texelBlockDimension:{x:4,y:4,z:1,w:1},bytesPlane:[],samples:[]}],this.keyValue={},this.globalData=null}}class w{constructor(t,e,r,n){this._dataView=new DataView(t.buffer,t.byteOffset+e,r),this._littleEndian=n,this._offset=0}_nextUint8(){const t=this._dataView.getUint8(this._offset);return this._offset+=1,t}_nextUint16(){const t=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,t}_nextUint32(){const t=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,t}_nextUint64(){const t=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,t}_skip(t){return this._offset+=t,this}_scan(t,e=0){const r=this._offset;let n=0;for(;this._dataView.getUint8(this._offset)!==e&&n<t;)n++,this._offset++;return n<t&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+r,n)}}function L(t){return"undefined"!=typeof TextDecoder?(new TextDecoder).decode(t):Buffer.from(t).toString("utf8")}function X(t,e){for(var r=new Array(e.mipMapLevels),n=e.width,o=e.height,i=0,a=0;a<e.mipMapLevels;++a){var s=I(e,n,o,t,a),_=U(t,a,i,s);r[a]={compressed:!0,format:e.internalFormat,data:_,width:n,height:o,levelSize:s},n=Math.max(1,n>>1),o=Math.max(1,o>>1),i+=s}return r}function U(t,e,r,n){return Array.isArray(t)?t[e].levelData:new Uint8Array(t.buffer,t.byteOffset+r,n)}function I(t,e,r,n,o){return Array.isArray(n)?t.sizeFunction(n[o]):t.sizeFunction(e,r)}var K={COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_RGBA8_ETC2_EAC:37493,COMPRESSED_SRGB8_ETC2:37494,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37495,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37496,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37497,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGB_ATC_WEBGL:35986,COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL:35987,COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL:34798,COMPRESSED_RGBA_ASTC_4X4_KHR:37808,COMPRESSED_RGBA_ASTC_5X4_KHR:37809,COMPRESSED_RGBA_ASTC_5X5_KHR:37810,COMPRESSED_RGBA_ASTC_6X5_KHR:37811,COMPRESSED_RGBA_ASTC_6X6_KHR:37812,COMPRESSED_RGBA_ASTC_8X5_KHR:37813,COMPRESSED_RGBA_ASTC_8X6_KHR:37814,COMPRESSED_RGBA_ASTC_8X8_KHR:37815,COMPRESSED_RGBA_ASTC_10X5_KHR:37816,COMPRESSED_RGBA_ASTC_10X6_KHR:37817,COMPRESSED_RGBA_ASTC_10X8_KHR:37818,COMPRESSED_RGBA_ASTC_10X10_KHR:37819,COMPRESSED_RGBA_ASTC_12X10_KHR:37820,COMPRESSED_RGBA_ASTC_12X12_KHR:37821,COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR:37840,COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR:37841,COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR:37842,COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR:37843,COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR:37844,COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR:37845,COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR:37846,COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR:37847,COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR:37848,COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR:37849,COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR:37850,COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR:37851,COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR:37852,COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR:37853,COMPRESSED_RED_RGTC1_EXT:36283,COMPRESSED_SIGNED_RED_RGTC1_EXT:36284,COMPRESSED_RED_GREEN_RGTC2_EXT:36285,COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:36286,COMPRESSED_SRGB_S3TC_DXT1_EXT:35916,COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:35917,COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:35918,COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:35919},F={131:K.COMPRESSED_RGB_S3TC_DXT1_EXT,132:K.COMPRESSED_SRGB_S3TC_DXT1_EXT,133:K.COMPRESSED_RGBA_S3TC_DXT1_EXT,134:K.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,135:K.COMPRESSED_RGBA_S3TC_DXT3_EXT,136:K.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,137:K.COMPRESSED_RGBA_S3TC_DXT5_EXT,138:K.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,139:K.COMPRESSED_RED_RGTC1_EXT,140:K.COMPRESSED_SIGNED_RED_RGTC1_EXT,141:K.COMPRESSED_RED_GREEN_RGTC2_EXT,142:K.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,147:K.COMPRESSED_RGB8_ETC2,148:K.COMPRESSED_SRGB8_ETC2,149:K.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,150:K.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,151:K.COMPRESSED_RGBA8_ETC2_EAC,152:K.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,153:K.COMPRESSED_R11_EAC,154:K.COMPRESSED_SIGNED_R11_EAC,155:K.COMPRESSED_RG11_EAC,156:K.COMPRESSED_SIGNED_RG11_EAC,157:K.COMPRESSED_RGBA_ASTC_4x4_KHR,158:K.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,159:K.COMPRESSED_RGBA_ASTC_5x4_KHR,160:K.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,161:K.COMPRESSED_RGBA_ASTC_5x5_KHR,162:K.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,163:K.COMPRESSED_RGBA_ASTC_6x5_KHR,164:K.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,165:K.COMPRESSED_RGBA_ASTC_6x6_KHR,166:K.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,167:K.COMPRESSED_RGBA_ASTC_8x5_KHR,168:K.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,169:K.COMPRESSED_RGBA_ASTC_8x6_KHR,170:K.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,171:K.COMPRESSED_RGBA_ASTC_8x8_KHR,172:K.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,173:K.COMPRESSED_RGBA_ASTC_10x5_KHR,174:K.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,175:K.COMPRESSED_RGBA_ASTC_10x6_KHR,176:K.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,177:K.COMPRESSED_RGBA_ASTC_10x8_KHR,178:K.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,179:K.COMPRESSED_RGBA_ASTC_10x10_KHR,180:K.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,181:K.COMPRESSED_RGBA_ASTC_12x10_KHR,182:K.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,183:K.COMPRESSED_RGBA_ASTC_12x12_KHR,184:K.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,1000054e3:K.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,1000054001:K.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,1000066e3:K.COMPRESSED_RGBA_ASTC_4x4_KHR,1000066001:K.COMPRESSED_RGBA_ASTC_5x4_KHR,1000066002:K.COMPRESSED_RGBA_ASTC_5x5_KHR,1000066003:K.COMPRESSED_RGBA_ASTC_6x5_KHR,1000066004:K.COMPRESSED_RGBA_ASTC_6x6_KHR,1000066005:K.COMPRESSED_RGBA_ASTC_8x5_KHR,1000066006:K.COMPRESSED_RGBA_ASTC_8x6_KHR,1000066007:K.COMPRESSED_RGBA_ASTC_8x8_KHR,1000066008:K.COMPRESSED_RGBA_ASTC_10x5_KHR,1000066009:K.COMPRESSED_RGBA_ASTC_10x6_KHR,1000066010:K.COMPRESSED_RGBA_ASTC_10x8_KHR,1000066011:K.COMPRESSED_RGBA_ASTC_10x10_KHR,1000066012:K.COMPRESSED_RGBA_ASTC_12x10_KHR,1000066013:K.COMPRESSED_RGBA_ASTC_12x12_KHR};var N=[171,75,84,88,32,50,48,187,13,10,26,10];function k(t){var e=new Uint8Array(t.buffer||t,t.byteOffset||0,N.length);return!(e[0]!==N[0]||e[1]!==N[1]||e[2]!==N[2]||e[3]!==N[3]||e[4]!==N[4]||e[5]!==N[5]||e[6]!==N[6]||e[7]!==N[7]||e[8]!==N[8]||e[9]!==N[9]||e[10]!==N[10]||e[11]!==N[11])}function j(t){var e,r=function(t){const e=new Uint8Array(t.buffer,t.byteOffset,x.length);if(e[0]!==x[0]||e[1]!==x[1]||e[2]!==x[2]||e[3]!==x[3]||e[4]!==x[4]||e[5]!==x[5]||e[6]!==x[6]||e[7]!==x[7]||e[8]!==x[8]||e[9]!==x[9]||e[10]!==x[10]||e[11]!==x[11])throw new Error("Missing KTX 2.0 identifier.");const r=new H,n=17*Uint32Array.BYTES_PER_ELEMENT,o=new w(t,x.length,n,!0);r.vkFormat=o._nextUint32(),r.typeSize=o._nextUint32(),r.pixelWidth=o._nextUint32(),r.pixelHeight=o._nextUint32(),r.pixelDepth=o._nextUint32(),r.layerCount=o._nextUint32(),r.faceCount=o._nextUint32();const i=o._nextUint32();r.supercompressionScheme=o._nextUint32();const a=o._nextUint32(),s=o._nextUint32(),_=o._nextUint32(),u=o._nextUint32(),c=o._nextUint64(),f=o._nextUint64(),S=new w(t,x.length+n,3*i*8,!0);for(let e=0;e<i;e++)r.levels.push({levelData:new Uint8Array(t.buffer,t.byteOffset+S._nextUint64(),S._nextUint64()),uncompressedByteLength:S._nextUint64()});const l=new w(t,a,s,!0),E={vendorId:l._skip(4)._nextUint16(),descriptorType:l._nextUint16(),versionNumber:l._nextUint16(),descriptorBlockSize:l._nextUint16(),colorModel:l._nextUint8(),colorPrimaries:l._nextUint8(),transferFunction:l._nextUint8(),flags:l._nextUint8(),texelBlockDimension:{x:l._nextUint8()+1,y:l._nextUint8()+1,z:l._nextUint8()+1,w:l._nextUint8()+1},bytesPlane:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],samples:[]},R=(E.descriptorBlockSize/4-6)/4;for(let t=0;t<R;t++)E.samples[t]={bitOffset:l._nextUint16(),bitLength:l._nextUint8(),channelID:l._nextUint8(),samplePosition:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],sampleLower:l._nextUint32(),sampleUpper:l._nextUint32()};r.dataFormatDescriptor.length=0,r.dataFormatDescriptor.push(E);const p=new w(t,_,u,!0);for(;p._offset<u;){const t=p._nextUint32(),e=p._scan(t),n=L(e),o=p._scan(t-e.byteLength);r.keyValue[n]=n.match(/^ktx/i)?L(o):o,t%4&&p._skip(4-t%4)}if(f<=0)return r;const A=new w(t,c,f,!0),C=A._nextUint16(),h=A._nextUint16(),d=A._nextUint32(),P=A._nextUint32(),T=A._nextUint32(),m=A._nextUint32(),D=[];for(let t=0;t<i;t++)D.push({imageFlags:A._nextUint32(),rgbSliceByteOffset:A._nextUint32(),rgbSliceByteLength:A._nextUint32(),alphaSliceByteOffset:A._nextUint32(),alphaSliceByteLength:A._nextUint32()});const y=c+A._offset,M=y+d,O=M+P,v=O+T,G=new Uint8Array(t.buffer,t.byteOffset+y,d),b=new Uint8Array(t.buffer,t.byteOffset+M,P),B=new Uint8Array(t.buffer,t.byteOffset+O,T),g=new Uint8Array(t.buffer,t.byteOffset+v,m);return r.globalData={endpointCount:C,selectorCount:h,imageDescs:D,endpointsData:G,selectorsData:b,tablesData:B,extendedData:g},r}(new Uint8Array(t)),n=Math.max(1,r.levels.length),o=r.pixelWidth,i=r.pixelHeight,a=(e=r.vkFormat,F[e]);return X(r.levels,{mipMapLevels:n,width:o,height:i,sizeFunction:function(t){return t.uncompressedByteLength},internalFormat:a})}function V(t,e){if(!t)throw new Error(e||"loader assertion failed.")}var W={MAGIC_NUMBER:542327876,HEADER_LENGTH:31,MAGIC_NUMBER_INDEX:0,HEADER_SIZE_INDEX:1,HEADER_FLAGS_INDEX:2,HEADER_HEIGHT_INDEX:3,HEADER_WIDTH_INDEX:4,MIPMAPCOUNT_INDEX:7,HEADER_PF_FLAGS_INDEX:20,HEADER_PF_FOURCC_INDEX:21,DDSD_MIPMAPCOUNT:131072,DDPF_FOURCC:4,PIXEL_FORMATS:{DXT1:K.COMPRESSED_RGB_S3TC_DXT1_EXT,DXT3:K.COMPRESSED_RGBA_S3TC_DXT3_EXT,DXT5:K.COMPRESSED_RGBA_S3TC_DXT5_EXT,"ATC ":K.COMPRESSED_RGB_ATC_WEBGL,ATCA:K.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,ATCI:K.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL},SIZE_FUNCTIONS:{DXT1:Z,DXT3:q,DXT5:q,"ATC ":Z,ATCA:q,ATCI:q}};function z(t){var e=new Int32Array(t,0,W.HEADER_LENGTH),r=e[W.HEADER_PF_FOURCC_INDEX];V(Boolean(e[W.HEADER_PF_FLAGS_INDEX]&W.DDPF_FOURCC),"DDS: Unsupported format, must contain a FourCC code");var n,o=(n=r,String.fromCharCode(255&n,n>>8&255,n>>16&255,n>>24&255)),i=W.PIXEL_FORMATS[o],a=W.SIZE_FUNCTIONS[o];V(i&&a,"DDS: Unknown pixel format ".concat(r));var s=1;e[W.HEADER_FLAGS_INDEX]&W.DDSD_MIPMAPCOUNT&&(s=Math.max(1,e[W.MIPMAPCOUNT_INDEX]));var _=e[W.HEADER_WIDTH_INDEX],u=e[W.HEADER_HEIGHT_INDEX],c=e[W.HEADER_SIZE_INDEX]+4;return X(new Uint8Array(t,c),{mipMapLevels:s,width:_,height:u,sizeFunction:a,internalFormat:i})}function Z(t,e){return(t+3>>2)*(e+3>>2)*8}function q(t,e){return(t+3>>2)*(e+3>>2)*16}var Y=55727696,$=1347834371,J=13,Q=52,tt=0,et=2,rt=4,nt=6,ot=7,it=11,at=12,st={0:[K.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],1:[K.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],2:[K.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],3:[K.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],6:[K.COMPRESSED_RGB_ETC1_WEBGL],7:[K.COMPRESSED_RGB_S3TC_DXT1_EXT],9:[K.COMPRESSED_RGBA_S3TC_DXT3_EXT],11:[K.COMPRESSED_RGBA_S3TC_DXT5_EXT],22:[K.COMPRESSED_RGB8_ETC2],23:[K.COMPRESSED_RGBA8_ETC2_EAC],24:[K.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],25:[K.COMPRESSED_R11_EAC],26:[K.COMPRESSED_RG11_EAC],27:[K.COMPRESSED_RGBA_ASTC_4X4_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR],28:[K.COMPRESSED_RGBA_ASTC_5X4_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR],29:[K.COMPRESSED_RGBA_ASTC_5X5_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR],30:[K.COMPRESSED_RGBA_ASTC_6X5_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR],31:[K.COMPRESSED_RGBA_ASTC_6X6_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR],32:[K.COMPRESSED_RGBA_ASTC_8X5_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR],33:[K.COMPRESSED_RGBA_ASTC_8X6_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR],34:[K.COMPRESSED_RGBA_ASTC_8X8_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR],35:[K.COMPRESSED_RGBA_ASTC_10X5_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR],36:[K.COMPRESSED_RGBA_ASTC_10X6_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR],37:[K.COMPRESSED_RGBA_ASTC_10X8_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR],38:[K.COMPRESSED_RGBA_ASTC_10X10_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR],39:[K.COMPRESSED_RGBA_ASTC_12X10_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR],40:[K.COMPRESSED_RGBA_ASTC_12X12_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR]},_t={0:ut,1:ut,2:ct,3:ct,6:ft,7:ft,9:St,11:St,22:ft,23:St,24:ft,25:ft,26:St,27:St,28:function(t,e){return Math.floor((t+4)/5)*Math.floor((e+3)/4)*16},29:function(t,e){return Math.floor((t+4)/5)*Math.floor((e+4)/5)*16},30:function(t,e){return Math.floor((t+5)/6)*Math.floor((e+4)/5)*16},31:function(t,e){return Math.floor((t+5)/6)*Math.floor((e+5)/6)*16},32:function(t,e){return Math.floor((t+7)/8)*Math.floor((e+4)/5)*16},33:function(t,e){return Math.floor((t+7)/8)*Math.floor((e+5)/6)*16},34:function(t,e){return Math.floor((t+7)/8)*Math.floor((e+7)/8)*16},35:function(t,e){return Math.floor((t+9)/10)*Math.floor((e+4)/5)*16},36:function(t,e){return Math.floor((t+9)/10)*Math.floor((e+5)/6)*16},37:function(t,e){return Math.floor((t+9)/10)*Math.floor((e+7)/8)*16},38:function(t,e){return Math.floor((t+9)/10)*Math.floor((e+9)/10)*16},39:function(t,e){return Math.floor((t+11)/12)*Math.floor((e+9)/10)*16},40:function(t,e){return Math.floor((t+11)/12)*Math.floor((e+11)/12)*16}};function ut(t,e){return(t=Math.max(t,16))*(e=Math.max(e,8))/4}function ct(t,e){return(t=Math.max(t,8))*(e=Math.max(e,8))/2}function ft(t,e){return Math.floor((t+3)/4)*Math.floor((e+3)/4)*8}function St(t,e){return Math.floor((t+3)/4)*Math.floor((e+3)/4)*16}function lt(t){if(k(t))return j(t);if(function(t){return new Uint32Array(t,0,W.HEADER_LENGTH)[W.MAGIC_NUMBER_INDEX]===W.MAGIC_NUMBER}(t))return z(t);if(function(t){var e=new Uint32Array(t,0,J)[tt];return e===Y||e===$}(t))return function(t){var e=new Uint32Array(t,0,J),r=e[et],n=e[rt],o=st[r]||[],i=o.length>1&&n?o[1]:o[0],a=_t[r],s=e[it],_=e[ot],u=e[nt],c=Q+e[at];return X(new Uint8Array(t,c),{mipMapLevels:s,width:_,height:u,sizeFunction:a,internalFormat:i})}(t);throw new Error("Texture container format not recognized")}var Et=r(6),Rt=r.n(Et),pt=r(2),At=r(4);var Ct={};function ht(t){return dt.apply(this,arguments)}function dt(){return(dt=a()(_.a.mark((function t(e){var r,n,o=arguments;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:null,n=o.length>2&&void 0!==o[2]?o[2]:{},r&&(e=Pt(e,r,n)),Ct[e]=Ct[e]||Tt(e),t.next=6,Ct[e];case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Pt(t,e,r){if(t.startsWith("http"))return t;var n=r.modules||{};return n[t]?n[t]:pt.b?r.CDN?(function(t,e){if(!t)throw new Error(e||"loaders.gl assertion failed.")}(r.CDN.startsWith("http")),"".concat(r.CDN,"/").concat(e,"@").concat("3.1.0-alpha.5","/dist/libs/").concat(t)):pt.c?"../src/libs/".concat(t):"modules/".concat(e,"/src/libs/").concat(t):"modules/".concat(e,"/dist/libs/").concat(t)}function Tt(t){return mt.apply(this,arguments)}function mt(){return(mt=a()(_.a.mark((function t(e){var r,n,o;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e.endsWith("wasm")){t.next=7;break}return t.next=3,fetch(e);case 3:return r=t.sent,t.next=6,r.arrayBuffer();case 6:return t.abrupt("return",t.sent);case 7:if(pt.b){t.next=14;break}if(t.t0=At.requireFromFile,!t.t0){t.next=13;break}return t.next=12,At.requireFromFile(e);case 12:t.t0=t.sent;case 13:return t.abrupt("return",t.t0);case 14:if(!pt.c){t.next=16;break}return t.abrupt("return",importScripts(e));case 16:return t.next=18,fetch(e);case 18:return n=t.sent,t.next=21,n.text();case 21:return o=t.sent,t.abrupt("return",Dt(o,e));case 23:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Dt(t,e){if(!pt.b)return At.requireFromString&&At.requireFromString(t,e);if(pt.c)return eval.call(pt.a,t),null;var r=document.createElement("script");r.id=e;try{r.appendChild(document.createTextNode(t))}catch(e){r.text=t}return document.body.appendChild(r),null}var xt,yt,Mt="https://unpkg.com/@loaders.gl/textures@".concat("3.1.0-alpha.5","/dist/libs/basis_encoder.wasm"),Ot="https://unpkg.com/@loaders.gl/textures@".concat("3.1.0-alpha.5","/dist/libs/basis_encoder.js");function vt(t){return Gt.apply(this,arguments)}function Gt(){return(Gt=a()(_.a.mark((function t(e){var r;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(r=e.modules||{}).basis){t.next=3;break}return t.abrupt("return",r.basis);case 3:return xt=xt||bt(e),t.next=6,xt;case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function bt(t){return Bt.apply(this,arguments)}function Bt(){return(Bt=a()(_.a.mark((function t(e){var r,n,o,i;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=null,n=null,t.t0=Promise,t.next=5,ht("basis_transcoder.js","textures",e);case 5:return t.t1=t.sent,t.next=8,ht("basis_transcoder.wasm","textures",e);case 8:return t.t2=t.sent,t.t3=[t.t1,t.t2],t.next=12,t.t0.all.call(t.t0,t.t3);case 12:return o=t.sent,i=Rt()(o,2),r=i[0],n=i[1],r=r||globalThis.BASIS,t.next=19,gt(r,n);case 19:return t.abrupt("return",t.sent);case 20:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function gt(t,e){var r={};return e&&(r.wasmBinary=e),new Promise((function(e){t(r).then((function(t){var r=t.BasisFile;(0,t.initializeBasis)(),e({BasisFile:r})}))}))}function Ht(t){return wt.apply(this,arguments)}function wt(){return(wt=a()(_.a.mark((function t(e){var r;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(r=e.modules||{}).basisEncoder){t.next=3;break}return t.abrupt("return",r.basisEncoder);case 3:return yt=yt||Lt(e),t.next=6,yt;case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Lt(t){return Xt.apply(this,arguments)}function Xt(){return(Xt=a()(_.a.mark((function t(e){var r,n,o,i;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=null,n=null,t.t0=Promise,t.next=5,ht(Ot,"textures",e);case 5:return t.t1=t.sent,t.next=8,ht(Mt,"textures",e);case 8:return t.t2=t.sent,t.t3=[t.t1,t.t2],t.next=12,t.t0.all.call(t.t0,t.t3);case 12:return o=t.sent,i=Rt()(o,2),r=i[0],n=i[1],r=r||globalThis.BASIS,t.next=19,Ut(r,n);case 19:return t.abrupt("return",t.sent);case 20:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Ut(t,e){var r={};return e&&(r.wasmBinary=e),new Promise((function(e){t(r).then((function(t){var r=t.BasisFile,n=t.KTX2File,o=t.initializeBasis,i=t.BasisEncoder;o(),e({BasisFile:r,KTX2File:n,BasisEncoder:i})}))}))}function It(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return Kt(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Kt(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Kt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}var Ft=["","WEBKIT_","MOZ_"],Nt={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"},kt=null;function jt(t){if(!kt){t=t||function(){try{return document.createElement("canvas").getContext("webgl")}catch(t){return null}}()||void 0,kt=new Set;var e,r=It(Ft);try{for(r.s();!(e=r.n()).done;){var n=e.value;for(var o in Nt)if(t&&t.getExtension("".concat(n).concat(o))){var i=Nt[o];kt.add(i)}}}catch(t){r.e(t)}finally{r.f()}}return kt}var Vt={etc1:{basisFormat:0,compressed:!0,format:K.COMPRESSED_RGB_ETC1_WEBGL},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:K.COMPRESSED_RGB_S3TC_DXT1_EXT},bc3:{basisFormat:3,compressed:!0,format:K.COMPRESSED_RGBA_S3TC_DXT5_EXT},bc4:{basisFormat:4,compressed:!0},bc5:{basisFormat:5,compressed:!0},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0},"bc7-m5":{basisFormat:7,compressed:!0},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:K.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:K.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},"astc-4x4":{basisFormat:10,compressed:!0,format:K.COMPRESSED_RGBA_ASTC_4X4_KHR},"atc-rgb":{basisFormat:11,compressed:!0},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0},rgba32:{basisFormat:13,compressed:!1},rgb565:{basisFormat:14,compressed:!1},bgr565:{basisFormat:15,compressed:!1},rgba4444:{basisFormat:16,compressed:!1}};function Wt(t,e){return zt.apply(this,arguments)}function zt(){return(zt=a()(_.a.mark((function t(e,r){var n,o,i,a,s,u;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if("auto"!==r.basis.containerFormat){t.next=11;break}if(!k(e)){t.next=6;break}return t.next=4,Ht(r);case 4:return n=t.sent,t.abrupt("return",Yt(n.KTX2File,e,r));case 6:return t.next=8,vt(r);case 8:return o=t.sent,i=o.BasisFile,t.abrupt("return",Zt(i,e,r));case 11:t.t0=r.basis.module,t.next="encoder"===t.t0?14:(t.t0,22);break;case 14:return t.next=16,Ht(r);case 16:a=t.sent,t.t1=r.basis.containerFormat,t.next="ktx2"===t.t1?20:(t.t1,21);break;case 20:return t.abrupt("return",Yt(a.KTX2File,e,r));case 21:return t.abrupt("return",Zt(a.BasisFile,e,r));case 22:return t.next=24,vt(r);case 24:return s=t.sent,u=s.BasisFile,t.abrupt("return",Zt(u,e,r));case 27:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Zt(t,e,r){var n=new t(new Uint8Array(e));try{if(!n.startTranscoding())return null;for(var o=n.getNumImages(),i=[],a=0;a<o;a++){for(var s=n.getNumLevels(a),_=[],u=0;u<s;u++)_.push(qt(n,a,u,r));i.push(_)}return i}finally{n.close(),n.delete()}}function qt(t,e,r,n){var o=t.getImageWidth(e,r),i=t.getImageHeight(e,r),a=t.getHasAlpha(),s=Jt(n,a),_=s.compressed,u=s.format,c=s.basisFormat,f=t.getImageTranscodedSizeInBytes(e,r,c),S=new Uint8Array(f);return t.transcodeImage(S,e,r,c,0,0)?{width:o,height:i,data:S,compressed:_,hasAlpha:a,format:u}:null}function Yt(t,e,r){var n=new t(new Uint8Array(e));try{if(!n.startTranscoding())return null;for(var o=n.getLevels(),i=[],a=0;a<o;a++){i.push($t(n,a,r));break}return i}finally{n.close(),n.delete()}}function $t(t,e,r){var n=t.getImageLevelInfo(e,0,0),o=n.alphaFlag,i=n.height,a=n.width,s=Jt(r,o),_=s.compressed,u=s.format,c=s.basisFormat,f=t.getImageTranscodedSizeInBytes(e,0,0,c),S=new Uint8Array(f);return t.transcodeImage(S,e,0,0,c,0,-1,-1)?{width:a,height:i,data:S,compressed:_,alphaFlag:o,format:u}:null}function Jt(t,e){var r=t&&t.basis&&t.basis.format;return"auto"===r&&(r=function(){var t=jt();if(t.has("astc"))return"astc-4x4";if(t.has("dxt"))return{alpha:"bc3",noAlpha:"bc1"};if(t.has("pvrtc"))return{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"};if(t.has("etc1"))return"etc1";if(t.has("etc2"))return"etc2";return"rgb565"}()),"object"===E()(r)&&(r=e?r.alpha:r.noAlpha),r=r.toLowerCase(),Vt[r]}function Qt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function te(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Qt(Object(r),!0).forEach((function(e){o()(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Qt(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var ee,re,ne={name:"Texture Containers",id:"compressed-texture",module:"textures",version:"3.1.0-alpha.5",worker:!0,extensions:["ktx","ktx2","dds","pvr"],mimeTypes:["image/ktx2","image/ktx","image/vnd-ms.dds","image/x-dds","application/octet-stream"],binary:!0,options:{"compressed-texture":{libraryPath:"libs/",useBasis:!1}}},oe=te(te({},ne),{},{parse:(ee=a()(_.a.mark((function t(e,r){return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!r["compressed-texture"].useBasis){t.next=5;break}return r.basis=te(te({format:{alpha:"BC3",noAlpha:"BC1"}},r.basis),{},{containerFormat:"ktx2",module:"encoder"}),t.next=4,Wt(e,r);case 4:return t.abrupt("return",t.sent);case 5:return t.abrupt("return",lt(e));case 6:case"end":return t.stop()}}),t)}))),function(t,e){return ee.apply(this,arguments)})});re=oe,"undefined"!=typeof self&&(A.onmessage=function(){var t=a()(_.a.mark((function t(e,r){var n,o,i,a,s;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:t.t0=e,t.next="process"===t.t0?3:16;break;case 3:return t.prev=3,n=r.input,o=r.options,i=void 0===o?{}:o,t.next=7,m({loader:re,arrayBuffer:n,options:i,context:{parse:T}});case 7:a=t.sent,A.postMessage("done",{result:a}),t.next=15;break;case 11:t.prev=11,t.t1=t.catch(3),s=t.t1 instanceof Error?t.t1.message:"",A.postMessage("error",{error:s});case 15:return t.abrupt("break",16);case 16:case"end":return t.stop()}}),t,null,[[3,11]])})));return function(e,r){return t.apply(this,arguments)}}())}]);
|
|
2
|
-
|
|
1
|
+
(() => {
|
|
2
|
+
// ../loader-utils/src/lib/env-utils/assert.ts
|
|
3
|
+
function assert(condition, message) {
|
|
4
|
+
if (!condition) {
|
|
5
|
+
throw new Error(message || "loader assertion failed.");
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// ../worker-utils/src/lib/env-utils/version.ts
|
|
10
|
+
var DEFAULT_VERSION = "beta";
|
|
11
|
+
var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : DEFAULT_VERSION;
|
|
12
|
+
if (typeof __VERSION__ === "undefined") {
|
|
13
|
+
console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// ../worker-utils/src/lib/env-utils/assert.ts
|
|
17
|
+
function assert2(condition, message) {
|
|
18
|
+
if (!condition) {
|
|
19
|
+
throw new Error(message || "loaders.gl assertion failed.");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// ../worker-utils/src/lib/env-utils/globals.ts
|
|
24
|
+
var globals = {
|
|
25
|
+
self: typeof self !== "undefined" && self,
|
|
26
|
+
window: typeof window !== "undefined" && window,
|
|
27
|
+
global: typeof global !== "undefined" && global,
|
|
28
|
+
document: typeof document !== "undefined" && document
|
|
29
|
+
};
|
|
30
|
+
var self_ = globals.self || globals.window || globals.global || {};
|
|
31
|
+
var window_ = globals.window || globals.self || globals.global || {};
|
|
32
|
+
var global_ = globals.global || globals.self || globals.window || {};
|
|
33
|
+
var document_ = globals.document || {};
|
|
34
|
+
var isBrowser = typeof process !== "object" || String(process) !== "[object process]" || process.browser;
|
|
35
|
+
var isWorker = typeof importScripts === "function";
|
|
36
|
+
var isMobile = typeof window !== "undefined" && typeof window.orientation !== "undefined";
|
|
37
|
+
var matches = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
|
|
38
|
+
var nodeVersion = matches && parseFloat(matches[1]) || 0;
|
|
39
|
+
|
|
40
|
+
// ../worker-utils/src/lib/worker-utils/get-transfer-list.ts
|
|
41
|
+
function getTransferList(object, recursive = true, transfers) {
|
|
42
|
+
const transfersSet = transfers || new Set();
|
|
43
|
+
if (!object) {
|
|
44
|
+
} else if (isTransferable(object)) {
|
|
45
|
+
transfersSet.add(object);
|
|
46
|
+
} else if (isTransferable(object.buffer)) {
|
|
47
|
+
transfersSet.add(object.buffer);
|
|
48
|
+
} else if (ArrayBuffer.isView(object)) {
|
|
49
|
+
} else if (recursive && typeof object === "object") {
|
|
50
|
+
for (const key in object) {
|
|
51
|
+
getTransferList(object[key], recursive, transfersSet);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return transfers === void 0 ? Array.from(transfersSet) : [];
|
|
55
|
+
}
|
|
56
|
+
function isTransferable(object) {
|
|
57
|
+
if (!object) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
if (object instanceof ArrayBuffer) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
if (typeof MessagePort !== "undefined" && object instanceof MessagePort) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
if (typeof ImageBitmap !== "undefined" && object instanceof ImageBitmap) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
if (typeof OffscreenCanvas !== "undefined" && object instanceof OffscreenCanvas) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// ../worker-utils/src/lib/worker-farm/worker-body.ts
|
|
76
|
+
var onMessageWrapperMap = new Map();
|
|
77
|
+
var WorkerBody = class {
|
|
78
|
+
static set onmessage(onMessage) {
|
|
79
|
+
self.onmessage = (message) => {
|
|
80
|
+
if (!isKnownMessage(message)) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const { type, payload } = message.data;
|
|
84
|
+
onMessage(type, payload);
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
static addEventListener(onMessage) {
|
|
88
|
+
let onMessageWrapper = onMessageWrapperMap.get(onMessage);
|
|
89
|
+
if (!onMessageWrapper) {
|
|
90
|
+
onMessageWrapper = (message) => {
|
|
91
|
+
if (!isKnownMessage(message)) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const { type, payload } = message.data;
|
|
95
|
+
onMessage(type, payload);
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
self.addEventListener("message", onMessageWrapper);
|
|
99
|
+
}
|
|
100
|
+
static removeEventListener(onMessage) {
|
|
101
|
+
const onMessageWrapper = onMessageWrapperMap.get(onMessage);
|
|
102
|
+
onMessageWrapperMap.delete(onMessage);
|
|
103
|
+
self.removeEventListener("message", onMessageWrapper);
|
|
104
|
+
}
|
|
105
|
+
static postMessage(type, payload) {
|
|
106
|
+
if (self) {
|
|
107
|
+
const data = { source: "loaders.gl", type, payload };
|
|
108
|
+
const transferList = getTransferList(payload);
|
|
109
|
+
self.postMessage(data, transferList);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
function isKnownMessage(message) {
|
|
114
|
+
const { type, data } = message;
|
|
115
|
+
return type === "message" && data && typeof data.source === "string" && data.source.startsWith("loaders.gl");
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// ../worker-utils/src/lib/library-utils/library-utils.ts
|
|
119
|
+
var LATEST = "beta";
|
|
120
|
+
var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
|
|
121
|
+
var loadLibraryPromises = {};
|
|
122
|
+
async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
|
|
123
|
+
if (moduleName) {
|
|
124
|
+
libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);
|
|
125
|
+
}
|
|
126
|
+
loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
|
|
127
|
+
return await loadLibraryPromises[libraryUrl];
|
|
128
|
+
}
|
|
129
|
+
function getLibraryUrl(library, moduleName, options) {
|
|
130
|
+
if (library.startsWith("http")) {
|
|
131
|
+
return library;
|
|
132
|
+
}
|
|
133
|
+
const modules = options.modules || {};
|
|
134
|
+
if (modules[library]) {
|
|
135
|
+
return modules[library];
|
|
136
|
+
}
|
|
137
|
+
if (!isBrowser) {
|
|
138
|
+
return `modules/${moduleName}/dist/libs/${library}`;
|
|
139
|
+
}
|
|
140
|
+
if (options.CDN) {
|
|
141
|
+
assert2(options.CDN.startsWith("http"));
|
|
142
|
+
return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${library}`;
|
|
143
|
+
}
|
|
144
|
+
if (isWorker) {
|
|
145
|
+
return `../src/libs/${library}`;
|
|
146
|
+
}
|
|
147
|
+
return `modules/${moduleName}/src/libs/${library}`;
|
|
148
|
+
}
|
|
149
|
+
async function loadLibraryFromFile(libraryUrl) {
|
|
150
|
+
if (libraryUrl.endsWith("wasm")) {
|
|
151
|
+
const response2 = await fetch(libraryUrl);
|
|
152
|
+
return await response2.arrayBuffer();
|
|
153
|
+
}
|
|
154
|
+
if (!isBrowser) {
|
|
155
|
+
return node.requireFromFile && await node.requireFromFile(libraryUrl);
|
|
156
|
+
}
|
|
157
|
+
if (isWorker) {
|
|
158
|
+
return importScripts(libraryUrl);
|
|
159
|
+
}
|
|
160
|
+
const response = await fetch(libraryUrl);
|
|
161
|
+
const scriptSource = await response.text();
|
|
162
|
+
return loadLibraryFromString(scriptSource, libraryUrl);
|
|
163
|
+
}
|
|
164
|
+
function loadLibraryFromString(scriptSource, id) {
|
|
165
|
+
if (!isBrowser) {
|
|
166
|
+
return node.requireFromString && node.requireFromString(scriptSource, id);
|
|
167
|
+
}
|
|
168
|
+
if (isWorker) {
|
|
169
|
+
eval.call(global_, scriptSource);
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
const script = document.createElement("script");
|
|
173
|
+
script.id = id;
|
|
174
|
+
try {
|
|
175
|
+
script.appendChild(document.createTextNode(scriptSource));
|
|
176
|
+
} catch (e2) {
|
|
177
|
+
script.text = scriptSource;
|
|
178
|
+
}
|
|
179
|
+
document.body.appendChild(script);
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
|
|
184
|
+
var requestId = 0;
|
|
185
|
+
function createLoaderWorker(loader) {
|
|
186
|
+
if (typeof self === "undefined") {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
WorkerBody.onmessage = async (type, payload) => {
|
|
190
|
+
switch (type) {
|
|
191
|
+
case "process":
|
|
192
|
+
try {
|
|
193
|
+
const { input, options = {} } = payload;
|
|
194
|
+
const result = await parseData({
|
|
195
|
+
loader,
|
|
196
|
+
arrayBuffer: input,
|
|
197
|
+
options,
|
|
198
|
+
context: {
|
|
199
|
+
parse: parseOnMainThread
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
WorkerBody.postMessage("done", { result });
|
|
203
|
+
} catch (error) {
|
|
204
|
+
const message = error instanceof Error ? error.message : "";
|
|
205
|
+
WorkerBody.postMessage("error", { error: message });
|
|
206
|
+
}
|
|
207
|
+
break;
|
|
208
|
+
default:
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
function parseOnMainThread(arrayBuffer, options) {
|
|
213
|
+
return new Promise((resolve, reject) => {
|
|
214
|
+
const id = requestId++;
|
|
215
|
+
const onMessage = (type, payload2) => {
|
|
216
|
+
if (payload2.id !== id) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
switch (type) {
|
|
220
|
+
case "done":
|
|
221
|
+
WorkerBody.removeEventListener(onMessage);
|
|
222
|
+
resolve(payload2.result);
|
|
223
|
+
break;
|
|
224
|
+
case "error":
|
|
225
|
+
WorkerBody.removeEventListener(onMessage);
|
|
226
|
+
reject(payload2.error);
|
|
227
|
+
break;
|
|
228
|
+
default:
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
WorkerBody.addEventListener(onMessage);
|
|
232
|
+
const payload = { id, input: arrayBuffer, options };
|
|
233
|
+
WorkerBody.postMessage("process", payload);
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
async function parseData({ loader, arrayBuffer, options, context }) {
|
|
237
|
+
let data;
|
|
238
|
+
let parser;
|
|
239
|
+
if (loader.parseSync || loader.parse) {
|
|
240
|
+
data = arrayBuffer;
|
|
241
|
+
parser = loader.parseSync || loader.parse;
|
|
242
|
+
} else if (loader.parseTextSync) {
|
|
243
|
+
const textDecoder = new TextDecoder();
|
|
244
|
+
data = textDecoder.decode(arrayBuffer);
|
|
245
|
+
parser = loader.parseTextSync;
|
|
246
|
+
} else {
|
|
247
|
+
throw new Error(`Could not load data with ${loader.name} loader`);
|
|
248
|
+
}
|
|
249
|
+
options = {
|
|
250
|
+
...options,
|
|
251
|
+
modules: loader && loader.options && loader.options.modules || {},
|
|
252
|
+
worker: false
|
|
253
|
+
};
|
|
254
|
+
return await parser(data, { ...options }, context, loader);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// src/lib/utils/version.ts
|
|
258
|
+
var VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
|
|
259
|
+
|
|
260
|
+
// ../../node_modules/ktx-parse/dist/ktx-parse.modern.js
|
|
261
|
+
var t = new Uint8Array([0]);
|
|
262
|
+
var e = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
|
|
263
|
+
var n;
|
|
264
|
+
var i;
|
|
265
|
+
var s;
|
|
266
|
+
var a;
|
|
267
|
+
var r;
|
|
268
|
+
var o;
|
|
269
|
+
var l;
|
|
270
|
+
var f;
|
|
271
|
+
!function(t2) {
|
|
272
|
+
t2[t2.NONE = 0] = "NONE", t2[t2.BASISLZ = 1] = "BASISLZ", t2[t2.ZSTD = 2] = "ZSTD", t2[t2.ZLIB = 3] = "ZLIB";
|
|
273
|
+
}(n || (n = {})), function(t2) {
|
|
274
|
+
t2[t2.BASICFORMAT = 0] = "BASICFORMAT";
|
|
275
|
+
}(i || (i = {})), function(t2) {
|
|
276
|
+
t2[t2.UNSPECIFIED = 0] = "UNSPECIFIED", t2[t2.ETC1S = 163] = "ETC1S", t2[t2.UASTC = 166] = "UASTC";
|
|
277
|
+
}(s || (s = {})), function(t2) {
|
|
278
|
+
t2[t2.UNSPECIFIED = 0] = "UNSPECIFIED", t2[t2.SRGB = 1] = "SRGB";
|
|
279
|
+
}(a || (a = {})), function(t2) {
|
|
280
|
+
t2[t2.UNSPECIFIED = 0] = "UNSPECIFIED", t2[t2.LINEAR = 1] = "LINEAR", t2[t2.SRGB = 2] = "SRGB", t2[t2.ITU = 3] = "ITU", t2[t2.NTSC = 4] = "NTSC", t2[t2.SLOG = 5] = "SLOG", t2[t2.SLOG2 = 6] = "SLOG2";
|
|
281
|
+
}(r || (r = {})), function(t2) {
|
|
282
|
+
t2[t2.ALPHA_STRAIGHT = 0] = "ALPHA_STRAIGHT", t2[t2.ALPHA_PREMULTIPLIED = 1] = "ALPHA_PREMULTIPLIED";
|
|
283
|
+
}(o || (o = {})), function(t2) {
|
|
284
|
+
t2[t2.RGB = 0] = "RGB", t2[t2.RRR = 3] = "RRR", t2[t2.GGG = 4] = "GGG", t2[t2.AAA = 15] = "AAA";
|
|
285
|
+
}(l || (l = {})), function(t2) {
|
|
286
|
+
t2[t2.RGB = 0] = "RGB", t2[t2.RGBA = 3] = "RGBA", t2[t2.RRR = 4] = "RRR", t2[t2.RRRG = 5] = "RRRG";
|
|
287
|
+
}(f || (f = {}));
|
|
288
|
+
var U = class {
|
|
289
|
+
constructor() {
|
|
290
|
+
this.vkFormat = 0, this.typeSize = 1, this.pixelWidth = 0, this.pixelHeight = 0, this.pixelDepth = 0, this.layerCount = 0, this.faceCount = 1, this.supercompressionScheme = n.NONE, this.levels = [], this.dataFormatDescriptor = [{ vendorId: 0, descriptorType: i.BASICFORMAT, versionNumber: 2, descriptorBlockSize: 40, colorModel: s.UNSPECIFIED, colorPrimaries: a.SRGB, transferFunction: a.SRGB, flags: o.ALPHA_STRAIGHT, texelBlockDimension: { x: 4, y: 4, z: 1, w: 1 }, bytesPlane: [], samples: [] }], this.keyValue = {}, this.globalData = null;
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
var c = class {
|
|
294
|
+
constructor(t2, e2, n2, i2) {
|
|
295
|
+
this._dataView = new DataView(t2.buffer, t2.byteOffset + e2, n2), this._littleEndian = i2, this._offset = 0;
|
|
296
|
+
}
|
|
297
|
+
_nextUint8() {
|
|
298
|
+
const t2 = this._dataView.getUint8(this._offset);
|
|
299
|
+
return this._offset += 1, t2;
|
|
300
|
+
}
|
|
301
|
+
_nextUint16() {
|
|
302
|
+
const t2 = this._dataView.getUint16(this._offset, this._littleEndian);
|
|
303
|
+
return this._offset += 2, t2;
|
|
304
|
+
}
|
|
305
|
+
_nextUint32() {
|
|
306
|
+
const t2 = this._dataView.getUint32(this._offset, this._littleEndian);
|
|
307
|
+
return this._offset += 4, t2;
|
|
308
|
+
}
|
|
309
|
+
_nextUint64() {
|
|
310
|
+
const t2 = this._dataView.getUint32(this._offset, this._littleEndian) + 2 ** 32 * this._dataView.getUint32(this._offset + 4, this._littleEndian);
|
|
311
|
+
return this._offset += 8, t2;
|
|
312
|
+
}
|
|
313
|
+
_skip(t2) {
|
|
314
|
+
return this._offset += t2, this;
|
|
315
|
+
}
|
|
316
|
+
_scan(t2, e2 = 0) {
|
|
317
|
+
const n2 = this._offset;
|
|
318
|
+
let i2 = 0;
|
|
319
|
+
for (; this._dataView.getUint8(this._offset) !== e2 && i2 < t2; )
|
|
320
|
+
i2++, this._offset++;
|
|
321
|
+
return i2 < t2 && this._offset++, new Uint8Array(this._dataView.buffer, this._dataView.byteOffset + n2, i2);
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
function _(t2) {
|
|
325
|
+
return typeof TextDecoder != "undefined" ? new TextDecoder().decode(t2) : Buffer.from(t2).toString("utf8");
|
|
326
|
+
}
|
|
327
|
+
function p(t2) {
|
|
328
|
+
const n2 = new Uint8Array(t2.buffer, t2.byteOffset, e.length);
|
|
329
|
+
if (n2[0] !== e[0] || n2[1] !== e[1] || n2[2] !== e[2] || n2[3] !== e[3] || n2[4] !== e[4] || n2[5] !== e[5] || n2[6] !== e[6] || n2[7] !== e[7] || n2[8] !== e[8] || n2[9] !== e[9] || n2[10] !== e[10] || n2[11] !== e[11])
|
|
330
|
+
throw new Error("Missing KTX 2.0 identifier.");
|
|
331
|
+
const i2 = new U(), s2 = 17 * Uint32Array.BYTES_PER_ELEMENT, a2 = new c(t2, e.length, s2, true);
|
|
332
|
+
i2.vkFormat = a2._nextUint32(), i2.typeSize = a2._nextUint32(), i2.pixelWidth = a2._nextUint32(), i2.pixelHeight = a2._nextUint32(), i2.pixelDepth = a2._nextUint32(), i2.layerCount = a2._nextUint32(), i2.faceCount = a2._nextUint32();
|
|
333
|
+
const r2 = a2._nextUint32();
|
|
334
|
+
i2.supercompressionScheme = a2._nextUint32();
|
|
335
|
+
const o2 = a2._nextUint32(), l2 = a2._nextUint32(), f2 = a2._nextUint32(), h = a2._nextUint32(), g = a2._nextUint64(), p2 = a2._nextUint64(), x = new c(t2, e.length + s2, 3 * r2 * 8, true);
|
|
336
|
+
for (let e2 = 0; e2 < r2; e2++)
|
|
337
|
+
i2.levels.push({ levelData: new Uint8Array(t2.buffer, t2.byteOffset + x._nextUint64(), x._nextUint64()), uncompressedByteLength: x._nextUint64() });
|
|
338
|
+
const u = new c(t2, o2, l2, true), y = { vendorId: u._skip(4)._nextUint16(), descriptorType: u._nextUint16(), versionNumber: u._nextUint16(), descriptorBlockSize: u._nextUint16(), colorModel: u._nextUint8(), colorPrimaries: u._nextUint8(), transferFunction: u._nextUint8(), flags: u._nextUint8(), texelBlockDimension: { x: u._nextUint8() + 1, y: u._nextUint8() + 1, z: u._nextUint8() + 1, w: u._nextUint8() + 1 }, bytesPlane: [u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8()], samples: [] }, D = (y.descriptorBlockSize / 4 - 6) / 4;
|
|
339
|
+
for (let t3 = 0; t3 < D; t3++)
|
|
340
|
+
y.samples[t3] = { bitOffset: u._nextUint16(), bitLength: u._nextUint8(), channelID: u._nextUint8(), samplePosition: [u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8()], sampleLower: u._nextUint32(), sampleUpper: u._nextUint32() };
|
|
341
|
+
i2.dataFormatDescriptor.length = 0, i2.dataFormatDescriptor.push(y);
|
|
342
|
+
const b = new c(t2, f2, h, true);
|
|
343
|
+
for (; b._offset < h; ) {
|
|
344
|
+
const t3 = b._nextUint32(), e2 = b._scan(t3), n3 = _(e2), s3 = b._scan(t3 - e2.byteLength);
|
|
345
|
+
i2.keyValue[n3] = n3.match(/^ktx/i) ? _(s3) : s3, t3 % 4 && b._skip(4 - t3 % 4);
|
|
346
|
+
}
|
|
347
|
+
if (p2 <= 0)
|
|
348
|
+
return i2;
|
|
349
|
+
const d = new c(t2, g, p2, true), B = d._nextUint16(), w = d._nextUint16(), A = d._nextUint32(), S = d._nextUint32(), m = d._nextUint32(), L = d._nextUint32(), I = [];
|
|
350
|
+
for (let t3 = 0; t3 < r2; t3++)
|
|
351
|
+
I.push({ imageFlags: d._nextUint32(), rgbSliceByteOffset: d._nextUint32(), rgbSliceByteLength: d._nextUint32(), alphaSliceByteOffset: d._nextUint32(), alphaSliceByteLength: d._nextUint32() });
|
|
352
|
+
const R = g + d._offset, E = R + A, T = E + S, O = T + m, P = new Uint8Array(t2.buffer, t2.byteOffset + R, A), C = new Uint8Array(t2.buffer, t2.byteOffset + E, S), F = new Uint8Array(t2.buffer, t2.byteOffset + T, m), G = new Uint8Array(t2.buffer, t2.byteOffset + O, L);
|
|
353
|
+
return i2.globalData = { endpointCount: B, selectorCount: w, imageDescs: I, endpointsData: P, selectorsData: C, tablesData: F, extendedData: G }, i2;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
// src/lib/utils/extract-mipmap-images.ts
|
|
357
|
+
function extractMipmapImages(data, options) {
|
|
358
|
+
const images = new Array(options.mipMapLevels);
|
|
359
|
+
let levelWidth = options.width;
|
|
360
|
+
let levelHeight = options.height;
|
|
361
|
+
let offset = 0;
|
|
362
|
+
for (let i2 = 0; i2 < options.mipMapLevels; ++i2) {
|
|
363
|
+
const levelSize = getLevelSize(options, levelWidth, levelHeight, data, i2);
|
|
364
|
+
const levelData = getLevelData(data, i2, offset, levelSize);
|
|
365
|
+
images[i2] = {
|
|
366
|
+
compressed: true,
|
|
367
|
+
format: options.internalFormat,
|
|
368
|
+
data: levelData,
|
|
369
|
+
width: levelWidth,
|
|
370
|
+
height: levelHeight,
|
|
371
|
+
levelSize
|
|
372
|
+
};
|
|
373
|
+
levelWidth = Math.max(1, levelWidth >> 1);
|
|
374
|
+
levelHeight = Math.max(1, levelHeight >> 1);
|
|
375
|
+
offset += levelSize;
|
|
376
|
+
}
|
|
377
|
+
return images;
|
|
378
|
+
}
|
|
379
|
+
function getLevelData(data, index, offset, levelSize) {
|
|
380
|
+
if (!Array.isArray(data)) {
|
|
381
|
+
return new Uint8Array(data.buffer, data.byteOffset + offset, levelSize);
|
|
382
|
+
}
|
|
383
|
+
return data[index].levelData;
|
|
384
|
+
}
|
|
385
|
+
function getLevelSize(options, levelWidth, levelHeight, data, index) {
|
|
386
|
+
if (!Array.isArray(data)) {
|
|
387
|
+
return options.sizeFunction(levelWidth, levelHeight);
|
|
388
|
+
}
|
|
389
|
+
return options.sizeFunction(data[index]);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
// src/lib/gl-extensions.ts
|
|
393
|
+
var GL_EXTENSIONS_CONSTANTS = {
|
|
394
|
+
COMPRESSED_RGB_S3TC_DXT1_EXT: 33776,
|
|
395
|
+
COMPRESSED_RGBA_S3TC_DXT1_EXT: 33777,
|
|
396
|
+
COMPRESSED_RGBA_S3TC_DXT3_EXT: 33778,
|
|
397
|
+
COMPRESSED_RGBA_S3TC_DXT5_EXT: 33779,
|
|
398
|
+
COMPRESSED_R11_EAC: 37488,
|
|
399
|
+
COMPRESSED_SIGNED_R11_EAC: 37489,
|
|
400
|
+
COMPRESSED_RG11_EAC: 37490,
|
|
401
|
+
COMPRESSED_SIGNED_RG11_EAC: 37491,
|
|
402
|
+
COMPRESSED_RGB8_ETC2: 37492,
|
|
403
|
+
COMPRESSED_RGBA8_ETC2_EAC: 37493,
|
|
404
|
+
COMPRESSED_SRGB8_ETC2: 37494,
|
|
405
|
+
COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 37495,
|
|
406
|
+
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37496,
|
|
407
|
+
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37497,
|
|
408
|
+
COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 35840,
|
|
409
|
+
COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 35842,
|
|
410
|
+
COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 35841,
|
|
411
|
+
COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 35843,
|
|
412
|
+
COMPRESSED_RGB_ETC1_WEBGL: 36196,
|
|
413
|
+
COMPRESSED_RGB_ATC_WEBGL: 35986,
|
|
414
|
+
COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 35987,
|
|
415
|
+
COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 34798,
|
|
416
|
+
COMPRESSED_RGBA_ASTC_4X4_KHR: 37808,
|
|
417
|
+
COMPRESSED_RGBA_ASTC_5X4_KHR: 37809,
|
|
418
|
+
COMPRESSED_RGBA_ASTC_5X5_KHR: 37810,
|
|
419
|
+
COMPRESSED_RGBA_ASTC_6X5_KHR: 37811,
|
|
420
|
+
COMPRESSED_RGBA_ASTC_6X6_KHR: 37812,
|
|
421
|
+
COMPRESSED_RGBA_ASTC_8X5_KHR: 37813,
|
|
422
|
+
COMPRESSED_RGBA_ASTC_8X6_KHR: 37814,
|
|
423
|
+
COMPRESSED_RGBA_ASTC_8X8_KHR: 37815,
|
|
424
|
+
COMPRESSED_RGBA_ASTC_10X5_KHR: 37816,
|
|
425
|
+
COMPRESSED_RGBA_ASTC_10X6_KHR: 37817,
|
|
426
|
+
COMPRESSED_RGBA_ASTC_10X8_KHR: 37818,
|
|
427
|
+
COMPRESSED_RGBA_ASTC_10X10_KHR: 37819,
|
|
428
|
+
COMPRESSED_RGBA_ASTC_12X10_KHR: 37820,
|
|
429
|
+
COMPRESSED_RGBA_ASTC_12X12_KHR: 37821,
|
|
430
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR: 37840,
|
|
431
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR: 37841,
|
|
432
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR: 37842,
|
|
433
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR: 37843,
|
|
434
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR: 37844,
|
|
435
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR: 37845,
|
|
436
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR: 37846,
|
|
437
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR: 37847,
|
|
438
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR: 37848,
|
|
439
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR: 37849,
|
|
440
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR: 37850,
|
|
441
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: 37851,
|
|
442
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: 37852,
|
|
443
|
+
COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: 37853,
|
|
444
|
+
COMPRESSED_RED_RGTC1_EXT: 36283,
|
|
445
|
+
COMPRESSED_SIGNED_RED_RGTC1_EXT: 36284,
|
|
446
|
+
COMPRESSED_RED_GREEN_RGTC2_EXT: 36285,
|
|
447
|
+
COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 36286,
|
|
448
|
+
COMPRESSED_SRGB_S3TC_DXT1_EXT: 35916,
|
|
449
|
+
COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 35917,
|
|
450
|
+
COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 35918,
|
|
451
|
+
COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 35919
|
|
452
|
+
};
|
|
453
|
+
|
|
454
|
+
// src/lib/utils/ktx-format-helper.ts
|
|
455
|
+
var VULKAN_TO_WEBGL_FORMAT_MAP = {
|
|
456
|
+
131: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
|
|
457
|
+
132: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_S3TC_DXT1_EXT,
|
|
458
|
+
133: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT1_EXT,
|
|
459
|
+
134: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,
|
|
460
|
+
135: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
|
|
461
|
+
136: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
|
|
462
|
+
137: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
|
|
463
|
+
138: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,
|
|
464
|
+
139: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RED_RGTC1_EXT,
|
|
465
|
+
140: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RED_RGTC1_EXT,
|
|
466
|
+
141: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RED_GREEN_RGTC2_EXT,
|
|
467
|
+
142: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,
|
|
468
|
+
147: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2,
|
|
469
|
+
148: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ETC2,
|
|
470
|
+
149: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
|
|
471
|
+
150: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
|
|
472
|
+
151: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC,
|
|
473
|
+
152: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
|
|
474
|
+
153: GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC,
|
|
475
|
+
154: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_R11_EAC,
|
|
476
|
+
155: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC,
|
|
477
|
+
156: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RG11_EAC,
|
|
478
|
+
157: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,
|
|
479
|
+
158: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
|
|
480
|
+
159: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,
|
|
481
|
+
160: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,
|
|
482
|
+
161: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,
|
|
483
|
+
162: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
|
|
484
|
+
163: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,
|
|
485
|
+
164: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
|
|
486
|
+
165: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,
|
|
487
|
+
166: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
|
|
488
|
+
167: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,
|
|
489
|
+
168: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
|
|
490
|
+
169: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,
|
|
491
|
+
170: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
|
|
492
|
+
171: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,
|
|
493
|
+
172: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
|
|
494
|
+
173: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,
|
|
495
|
+
174: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
|
|
496
|
+
175: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,
|
|
497
|
+
176: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
|
|
498
|
+
177: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,
|
|
499
|
+
178: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
|
|
500
|
+
179: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,
|
|
501
|
+
180: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
|
|
502
|
+
181: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,
|
|
503
|
+
182: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
|
|
504
|
+
183: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR,
|
|
505
|
+
184: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,
|
|
506
|
+
1000054e3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
|
|
507
|
+
1000054001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
|
|
508
|
+
1000066e3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,
|
|
509
|
+
1000066001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,
|
|
510
|
+
1000066002: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,
|
|
511
|
+
1000066003: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,
|
|
512
|
+
1000066004: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,
|
|
513
|
+
1000066005: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,
|
|
514
|
+
1000066006: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,
|
|
515
|
+
1000066007: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,
|
|
516
|
+
1000066008: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,
|
|
517
|
+
1000066009: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,
|
|
518
|
+
1000066010: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,
|
|
519
|
+
1000066011: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,
|
|
520
|
+
1000066012: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,
|
|
521
|
+
1000066013: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR
|
|
522
|
+
};
|
|
523
|
+
function mapVkFormatToWebGL(vkFormat) {
|
|
524
|
+
return VULKAN_TO_WEBGL_FORMAT_MAP[vkFormat];
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
// src/lib/parsers/parse-ktx.ts
|
|
528
|
+
var KTX2_ID = [
|
|
529
|
+
171,
|
|
530
|
+
75,
|
|
531
|
+
84,
|
|
532
|
+
88,
|
|
533
|
+
32,
|
|
534
|
+
50,
|
|
535
|
+
48,
|
|
536
|
+
187,
|
|
537
|
+
13,
|
|
538
|
+
10,
|
|
539
|
+
26,
|
|
540
|
+
10
|
|
541
|
+
];
|
|
542
|
+
function isKTX(data) {
|
|
543
|
+
const id = new Uint8Array(data);
|
|
544
|
+
const notKTX = id.byteLength < KTX2_ID.length || id[0] !== KTX2_ID[0] || id[1] !== KTX2_ID[1] || id[2] !== KTX2_ID[2] || id[3] !== KTX2_ID[3] || id[4] !== KTX2_ID[4] || id[5] !== KTX2_ID[5] || id[6] !== KTX2_ID[6] || id[7] !== KTX2_ID[7] || id[8] !== KTX2_ID[8] || id[9] !== KTX2_ID[9] || id[10] !== KTX2_ID[10] || id[11] !== KTX2_ID[11];
|
|
545
|
+
return !notKTX;
|
|
546
|
+
}
|
|
547
|
+
function parseKTX(arrayBuffer) {
|
|
548
|
+
const uint8Array = new Uint8Array(arrayBuffer);
|
|
549
|
+
const ktx = p(uint8Array);
|
|
550
|
+
const mipMapLevels = Math.max(1, ktx.levels.length);
|
|
551
|
+
const width = ktx.pixelWidth;
|
|
552
|
+
const height = ktx.pixelHeight;
|
|
553
|
+
const internalFormat = mapVkFormatToWebGL(ktx.vkFormat);
|
|
554
|
+
return extractMipmapImages(ktx.levels, {
|
|
555
|
+
mipMapLevels,
|
|
556
|
+
width,
|
|
557
|
+
height,
|
|
558
|
+
sizeFunction: (level) => level.uncompressedByteLength,
|
|
559
|
+
internalFormat
|
|
560
|
+
});
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
// src/lib/parsers/parse-dds.ts
|
|
564
|
+
var DDS_CONSTANTS = {
|
|
565
|
+
MAGIC_NUMBER: 542327876,
|
|
566
|
+
HEADER_LENGTH: 31,
|
|
567
|
+
MAGIC_NUMBER_INDEX: 0,
|
|
568
|
+
HEADER_SIZE_INDEX: 1,
|
|
569
|
+
HEADER_FLAGS_INDEX: 2,
|
|
570
|
+
HEADER_HEIGHT_INDEX: 3,
|
|
571
|
+
HEADER_WIDTH_INDEX: 4,
|
|
572
|
+
MIPMAPCOUNT_INDEX: 7,
|
|
573
|
+
HEADER_PF_FLAGS_INDEX: 20,
|
|
574
|
+
HEADER_PF_FOURCC_INDEX: 21,
|
|
575
|
+
DDSD_MIPMAPCOUNT: 131072,
|
|
576
|
+
DDPF_FOURCC: 4
|
|
577
|
+
};
|
|
578
|
+
var DDS_PIXEL_FORMATS = {
|
|
579
|
+
DXT1: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
|
|
580
|
+
DXT3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
|
|
581
|
+
DXT5: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
|
|
582
|
+
"ATC ": GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ATC_WEBGL,
|
|
583
|
+
ATCA: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
|
|
584
|
+
ATCI: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL
|
|
585
|
+
};
|
|
586
|
+
var getATCLevelSize = getDxt1LevelSize;
|
|
587
|
+
var getATCALevelSize = getDxtXLevelSize;
|
|
588
|
+
var getATCILevelSize = getDxtXLevelSize;
|
|
589
|
+
var DDS_SIZE_FUNCTIONS = {
|
|
590
|
+
DXT1: getDxt1LevelSize,
|
|
591
|
+
DXT3: getDxtXLevelSize,
|
|
592
|
+
DXT5: getDxtXLevelSize,
|
|
593
|
+
"ATC ": getATCLevelSize,
|
|
594
|
+
ATCA: getATCALevelSize,
|
|
595
|
+
ATCI: getATCILevelSize
|
|
596
|
+
};
|
|
597
|
+
function isDDS(data) {
|
|
598
|
+
const header = new Uint32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
|
|
599
|
+
const magic = header[DDS_CONSTANTS.MAGIC_NUMBER_INDEX];
|
|
600
|
+
return magic === DDS_CONSTANTS.MAGIC_NUMBER;
|
|
601
|
+
}
|
|
602
|
+
function parseDDS(data) {
|
|
603
|
+
const header = new Int32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
|
|
604
|
+
const pixelFormatNumber = header[DDS_CONSTANTS.HEADER_PF_FOURCC_INDEX];
|
|
605
|
+
assert(Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC), "DDS: Unsupported format, must contain a FourCC code");
|
|
606
|
+
const fourCC = int32ToFourCC(pixelFormatNumber);
|
|
607
|
+
const internalFormat = DDS_PIXEL_FORMATS[fourCC];
|
|
608
|
+
const sizeFunction = DDS_SIZE_FUNCTIONS[fourCC];
|
|
609
|
+
assert(internalFormat && sizeFunction, `DDS: Unknown pixel format ${pixelFormatNumber}`);
|
|
610
|
+
let mipMapLevels = 1;
|
|
611
|
+
if (header[DDS_CONSTANTS.HEADER_FLAGS_INDEX] & DDS_CONSTANTS.DDSD_MIPMAPCOUNT) {
|
|
612
|
+
mipMapLevels = Math.max(1, header[DDS_CONSTANTS.MIPMAPCOUNT_INDEX]);
|
|
613
|
+
}
|
|
614
|
+
const width = header[DDS_CONSTANTS.HEADER_WIDTH_INDEX];
|
|
615
|
+
const height = header[DDS_CONSTANTS.HEADER_HEIGHT_INDEX];
|
|
616
|
+
const dataOffset = header[DDS_CONSTANTS.HEADER_SIZE_INDEX] + 4;
|
|
617
|
+
const image = new Uint8Array(data, dataOffset);
|
|
618
|
+
return extractMipmapImages(image, {
|
|
619
|
+
mipMapLevels,
|
|
620
|
+
width,
|
|
621
|
+
height,
|
|
622
|
+
sizeFunction,
|
|
623
|
+
internalFormat
|
|
624
|
+
});
|
|
625
|
+
}
|
|
626
|
+
function getDxt1LevelSize(width, height) {
|
|
627
|
+
return (width + 3 >> 2) * (height + 3 >> 2) * 8;
|
|
628
|
+
}
|
|
629
|
+
function getDxtXLevelSize(width, height) {
|
|
630
|
+
return (width + 3 >> 2) * (height + 3 >> 2) * 16;
|
|
631
|
+
}
|
|
632
|
+
function int32ToFourCC(value) {
|
|
633
|
+
return String.fromCharCode(value & 255, value >> 8 & 255, value >> 16 & 255, value >> 24 & 255);
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
// src/lib/parsers/parse-pvr.ts
|
|
637
|
+
var PVR_CONSTANTS = {
|
|
638
|
+
MAGIC_NUMBER: 55727696,
|
|
639
|
+
MAGIC_NUMBER_EXTRA: 1347834371,
|
|
640
|
+
HEADER_LENGTH: 13,
|
|
641
|
+
HEADER_SIZE: 52,
|
|
642
|
+
MAGIC_NUMBER_INDEX: 0,
|
|
643
|
+
PIXEL_FORMAT_INDEX: 2,
|
|
644
|
+
COLOUR_SPACE_INDEX: 4,
|
|
645
|
+
HEIGHT_INDEX: 6,
|
|
646
|
+
WIDTH_INDEX: 7,
|
|
647
|
+
MIPMAPCOUNT_INDEX: 11,
|
|
648
|
+
METADATA_SIZE_INDEX: 12
|
|
649
|
+
};
|
|
650
|
+
var PVR_PIXEL_FORMATS = {
|
|
651
|
+
0: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],
|
|
652
|
+
1: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],
|
|
653
|
+
2: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],
|
|
654
|
+
3: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],
|
|
655
|
+
6: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],
|
|
656
|
+
7: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],
|
|
657
|
+
9: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],
|
|
658
|
+
11: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],
|
|
659
|
+
22: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],
|
|
660
|
+
23: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],
|
|
661
|
+
24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],
|
|
662
|
+
25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],
|
|
663
|
+
26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],
|
|
664
|
+
27: [
|
|
665
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,
|
|
666
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR
|
|
667
|
+
],
|
|
668
|
+
28: [
|
|
669
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,
|
|
670
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR
|
|
671
|
+
],
|
|
672
|
+
29: [
|
|
673
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,
|
|
674
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR
|
|
675
|
+
],
|
|
676
|
+
30: [
|
|
677
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,
|
|
678
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR
|
|
679
|
+
],
|
|
680
|
+
31: [
|
|
681
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,
|
|
682
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR
|
|
683
|
+
],
|
|
684
|
+
32: [
|
|
685
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,
|
|
686
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR
|
|
687
|
+
],
|
|
688
|
+
33: [
|
|
689
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,
|
|
690
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR
|
|
691
|
+
],
|
|
692
|
+
34: [
|
|
693
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,
|
|
694
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR
|
|
695
|
+
],
|
|
696
|
+
35: [
|
|
697
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,
|
|
698
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR
|
|
699
|
+
],
|
|
700
|
+
36: [
|
|
701
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,
|
|
702
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR
|
|
703
|
+
],
|
|
704
|
+
37: [
|
|
705
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,
|
|
706
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR
|
|
707
|
+
],
|
|
708
|
+
38: [
|
|
709
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,
|
|
710
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR
|
|
711
|
+
],
|
|
712
|
+
39: [
|
|
713
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,
|
|
714
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR
|
|
715
|
+
],
|
|
716
|
+
40: [
|
|
717
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,
|
|
718
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR
|
|
719
|
+
]
|
|
720
|
+
};
|
|
721
|
+
var PVR_SIZE_FUNCTIONS = {
|
|
722
|
+
0: pvrtc2bppSize,
|
|
723
|
+
1: pvrtc2bppSize,
|
|
724
|
+
2: pvrtc4bppSize,
|
|
725
|
+
3: pvrtc4bppSize,
|
|
726
|
+
6: dxtEtcSmallSize,
|
|
727
|
+
7: dxtEtcSmallSize,
|
|
728
|
+
9: dxtEtcAstcBigSize,
|
|
729
|
+
11: dxtEtcAstcBigSize,
|
|
730
|
+
22: dxtEtcSmallSize,
|
|
731
|
+
23: dxtEtcAstcBigSize,
|
|
732
|
+
24: dxtEtcSmallSize,
|
|
733
|
+
25: dxtEtcSmallSize,
|
|
734
|
+
26: dxtEtcAstcBigSize,
|
|
735
|
+
27: dxtEtcAstcBigSize,
|
|
736
|
+
28: atc5x4Size,
|
|
737
|
+
29: atc5x5Size,
|
|
738
|
+
30: atc6x5Size,
|
|
739
|
+
31: atc6x6Size,
|
|
740
|
+
32: atc8x5Size,
|
|
741
|
+
33: atc8x6Size,
|
|
742
|
+
34: atc8x8Size,
|
|
743
|
+
35: atc10x5Size,
|
|
744
|
+
36: atc10x6Size,
|
|
745
|
+
37: atc10x8Size,
|
|
746
|
+
38: atc10x10Size,
|
|
747
|
+
39: atc12x10Size,
|
|
748
|
+
40: atc12x12Size
|
|
749
|
+
};
|
|
750
|
+
function isPVR(data) {
|
|
751
|
+
const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
|
|
752
|
+
const version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];
|
|
753
|
+
return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;
|
|
754
|
+
}
|
|
755
|
+
function parsePVR(data) {
|
|
756
|
+
const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
|
|
757
|
+
const pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];
|
|
758
|
+
const colourSpace = header[PVR_CONSTANTS.COLOUR_SPACE_INDEX];
|
|
759
|
+
const pixelFormats = PVR_PIXEL_FORMATS[pvrFormat] || [];
|
|
760
|
+
const internalFormat = pixelFormats.length > 1 && colourSpace ? pixelFormats[1] : pixelFormats[0];
|
|
761
|
+
const sizeFunction = PVR_SIZE_FUNCTIONS[pvrFormat];
|
|
762
|
+
const mipMapLevels = header[PVR_CONSTANTS.MIPMAPCOUNT_INDEX];
|
|
763
|
+
const width = header[PVR_CONSTANTS.WIDTH_INDEX];
|
|
764
|
+
const height = header[PVR_CONSTANTS.HEIGHT_INDEX];
|
|
765
|
+
const dataOffset = PVR_CONSTANTS.HEADER_SIZE + header[PVR_CONSTANTS.METADATA_SIZE_INDEX];
|
|
766
|
+
const image = new Uint8Array(data, dataOffset);
|
|
767
|
+
return extractMipmapImages(image, {
|
|
768
|
+
mipMapLevels,
|
|
769
|
+
width,
|
|
770
|
+
height,
|
|
771
|
+
sizeFunction,
|
|
772
|
+
internalFormat
|
|
773
|
+
});
|
|
774
|
+
}
|
|
775
|
+
function pvrtc2bppSize(width, height) {
|
|
776
|
+
width = Math.max(width, 16);
|
|
777
|
+
height = Math.max(height, 8);
|
|
778
|
+
return width * height / 4;
|
|
779
|
+
}
|
|
780
|
+
function pvrtc4bppSize(width, height) {
|
|
781
|
+
width = Math.max(width, 8);
|
|
782
|
+
height = Math.max(height, 8);
|
|
783
|
+
return width * height / 2;
|
|
784
|
+
}
|
|
785
|
+
function dxtEtcSmallSize(width, height) {
|
|
786
|
+
return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;
|
|
787
|
+
}
|
|
788
|
+
function dxtEtcAstcBigSize(width, height) {
|
|
789
|
+
return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;
|
|
790
|
+
}
|
|
791
|
+
function atc5x4Size(width, height) {
|
|
792
|
+
return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;
|
|
793
|
+
}
|
|
794
|
+
function atc5x5Size(width, height) {
|
|
795
|
+
return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;
|
|
796
|
+
}
|
|
797
|
+
function atc6x5Size(width, height) {
|
|
798
|
+
return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;
|
|
799
|
+
}
|
|
800
|
+
function atc6x6Size(width, height) {
|
|
801
|
+
return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;
|
|
802
|
+
}
|
|
803
|
+
function atc8x5Size(width, height) {
|
|
804
|
+
return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;
|
|
805
|
+
}
|
|
806
|
+
function atc8x6Size(width, height) {
|
|
807
|
+
return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;
|
|
808
|
+
}
|
|
809
|
+
function atc8x8Size(width, height) {
|
|
810
|
+
return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;
|
|
811
|
+
}
|
|
812
|
+
function atc10x5Size(width, height) {
|
|
813
|
+
return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;
|
|
814
|
+
}
|
|
815
|
+
function atc10x6Size(width, height) {
|
|
816
|
+
return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;
|
|
817
|
+
}
|
|
818
|
+
function atc10x8Size(width, height) {
|
|
819
|
+
return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;
|
|
820
|
+
}
|
|
821
|
+
function atc10x10Size(width, height) {
|
|
822
|
+
return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;
|
|
823
|
+
}
|
|
824
|
+
function atc12x10Size(width, height) {
|
|
825
|
+
return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;
|
|
826
|
+
}
|
|
827
|
+
function atc12x12Size(width, height) {
|
|
828
|
+
return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
// src/lib/parsers/parse-compressed-texture.ts
|
|
832
|
+
function parseCompressedTexture(data) {
|
|
833
|
+
if (isKTX(data)) {
|
|
834
|
+
return parseKTX(data);
|
|
835
|
+
}
|
|
836
|
+
if (isDDS(data)) {
|
|
837
|
+
return parseDDS(data);
|
|
838
|
+
}
|
|
839
|
+
if (isPVR(data)) {
|
|
840
|
+
return parsePVR(data);
|
|
841
|
+
}
|
|
842
|
+
throw new Error("Texture container format not recognized");
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
// src/lib/parsers/basis-module-loader.ts
|
|
846
|
+
var VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
|
|
847
|
+
var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.wasm`;
|
|
848
|
+
var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.js`;
|
|
849
|
+
var loadBasisTranscoderPromise;
|
|
850
|
+
async function loadBasisTrascoderModule(options) {
|
|
851
|
+
const modules = options.modules || {};
|
|
852
|
+
if (modules.basis) {
|
|
853
|
+
return modules.basis;
|
|
854
|
+
}
|
|
855
|
+
loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTrascoder(options);
|
|
856
|
+
return await loadBasisTranscoderPromise;
|
|
857
|
+
}
|
|
858
|
+
async function loadBasisTrascoder(options) {
|
|
859
|
+
let BASIS = null;
|
|
860
|
+
let wasmBinary = null;
|
|
861
|
+
[BASIS, wasmBinary] = await Promise.all([
|
|
862
|
+
await loadLibrary("basis_transcoder.js", "textures", options),
|
|
863
|
+
await loadLibrary("basis_transcoder.wasm", "textures", options)
|
|
864
|
+
]);
|
|
865
|
+
BASIS = BASIS || globalThis.BASIS;
|
|
866
|
+
return await initializeBasisTrascoderModule(BASIS, wasmBinary);
|
|
867
|
+
}
|
|
868
|
+
function initializeBasisTrascoderModule(BasisModule, wasmBinary) {
|
|
869
|
+
const options = {};
|
|
870
|
+
if (wasmBinary) {
|
|
871
|
+
options.wasmBinary = wasmBinary;
|
|
872
|
+
}
|
|
873
|
+
return new Promise((resolve) => {
|
|
874
|
+
BasisModule(options).then((module) => {
|
|
875
|
+
const { BasisFile, initializeBasis } = module;
|
|
876
|
+
initializeBasis();
|
|
877
|
+
resolve({ BasisFile });
|
|
878
|
+
});
|
|
879
|
+
});
|
|
880
|
+
}
|
|
881
|
+
var loadBasisEncoderPromise;
|
|
882
|
+
async function loadBasisEncoderModule(options) {
|
|
883
|
+
const modules = options.modules || {};
|
|
884
|
+
if (modules.basisEncoder) {
|
|
885
|
+
return modules.basisEncoder;
|
|
886
|
+
}
|
|
887
|
+
loadBasisEncoderPromise = loadBasisEncoderPromise || loadBasisEncoder(options);
|
|
888
|
+
return await loadBasisEncoderPromise;
|
|
889
|
+
}
|
|
890
|
+
async function loadBasisEncoder(options) {
|
|
891
|
+
let BASIS_ENCODER = null;
|
|
892
|
+
let wasmBinary = null;
|
|
893
|
+
[BASIS_ENCODER, wasmBinary] = await Promise.all([
|
|
894
|
+
await loadLibrary(BASIS_CDN_ENCODER_JS, "textures", options),
|
|
895
|
+
await loadLibrary(BASIS_CDN_ENCODER_WASM, "textures", options)
|
|
896
|
+
]);
|
|
897
|
+
BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
|
|
898
|
+
return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
|
|
899
|
+
}
|
|
900
|
+
function initializeBasisEncoderModule(BasisEncoderModule, wasmBinary) {
|
|
901
|
+
const options = {};
|
|
902
|
+
if (wasmBinary) {
|
|
903
|
+
options.wasmBinary = wasmBinary;
|
|
904
|
+
}
|
|
905
|
+
return new Promise((resolve) => {
|
|
906
|
+
BasisEncoderModule(options).then((module) => {
|
|
907
|
+
const { BasisFile, KTX2File, initializeBasis, BasisEncoder } = module;
|
|
908
|
+
initializeBasis();
|
|
909
|
+
resolve({ BasisFile, KTX2File, BasisEncoder });
|
|
910
|
+
});
|
|
911
|
+
});
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
// src/lib/utils/texture-formats.ts
|
|
915
|
+
var BROWSER_PREFIXES = ["", "WEBKIT_", "MOZ_"];
|
|
916
|
+
var WEBGL_EXTENSIONS = {
|
|
917
|
+
WEBGL_compressed_texture_s3tc: "dxt",
|
|
918
|
+
WEBGL_compressed_texture_s3tc_srgb: "dxt-srgb",
|
|
919
|
+
WEBGL_compressed_texture_etc1: "etc1",
|
|
920
|
+
WEBGL_compressed_texture_etc: "etc2",
|
|
921
|
+
WEBGL_compressed_texture_pvrtc: "pvrtc",
|
|
922
|
+
WEBGL_compressed_texture_atc: "atc",
|
|
923
|
+
WEBGL_compressed_texture_astc: "astc",
|
|
924
|
+
EXT_texture_compression_rgtc: "rgtc"
|
|
925
|
+
};
|
|
926
|
+
var formats = null;
|
|
927
|
+
function getSupportedGPUTextureFormats(gl) {
|
|
928
|
+
if (!formats) {
|
|
929
|
+
gl = gl || getWebGLContext() || void 0;
|
|
930
|
+
formats = new Set();
|
|
931
|
+
for (const prefix of BROWSER_PREFIXES) {
|
|
932
|
+
for (const extension in WEBGL_EXTENSIONS) {
|
|
933
|
+
if (gl && gl.getExtension(`${prefix}${extension}`)) {
|
|
934
|
+
const gpuTextureFormat = WEBGL_EXTENSIONS[extension];
|
|
935
|
+
formats.add(gpuTextureFormat);
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
return formats;
|
|
941
|
+
}
|
|
942
|
+
function getWebGLContext() {
|
|
943
|
+
try {
|
|
944
|
+
const canvas = document.createElement("canvas");
|
|
945
|
+
return canvas.getContext("webgl");
|
|
946
|
+
} catch (error) {
|
|
947
|
+
return null;
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
// src/lib/parsers/parse-basis.js
|
|
952
|
+
var OutputFormat = {
|
|
953
|
+
etc1: {
|
|
954
|
+
basisFormat: 0,
|
|
955
|
+
compressed: true,
|
|
956
|
+
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL
|
|
957
|
+
},
|
|
958
|
+
etc2: { basisFormat: 1, compressed: true },
|
|
959
|
+
bc1: {
|
|
960
|
+
basisFormat: 2,
|
|
961
|
+
compressed: true,
|
|
962
|
+
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT
|
|
963
|
+
},
|
|
964
|
+
bc3: {
|
|
965
|
+
basisFormat: 3,
|
|
966
|
+
compressed: true,
|
|
967
|
+
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT
|
|
968
|
+
},
|
|
969
|
+
bc4: { basisFormat: 4, compressed: true },
|
|
970
|
+
bc5: { basisFormat: 5, compressed: true },
|
|
971
|
+
"bc7-m6-opaque-only": { basisFormat: 6, compressed: true },
|
|
972
|
+
"bc7-m5": { basisFormat: 7, compressed: true },
|
|
973
|
+
"pvrtc1-4-rgb": {
|
|
974
|
+
basisFormat: 8,
|
|
975
|
+
compressed: true,
|
|
976
|
+
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG
|
|
977
|
+
},
|
|
978
|
+
"pvrtc1-4-rgba": {
|
|
979
|
+
basisFormat: 9,
|
|
980
|
+
compressed: true,
|
|
981
|
+
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
|
|
982
|
+
},
|
|
983
|
+
"astc-4x4": {
|
|
984
|
+
basisFormat: 10,
|
|
985
|
+
compressed: true,
|
|
986
|
+
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR
|
|
987
|
+
},
|
|
988
|
+
"atc-rgb": { basisFormat: 11, compressed: true },
|
|
989
|
+
"atc-rgba-interpolated-alpha": { basisFormat: 12, compressed: true },
|
|
990
|
+
rgba32: { basisFormat: 13, compressed: false },
|
|
991
|
+
rgb565: { basisFormat: 14, compressed: false },
|
|
992
|
+
bgr565: { basisFormat: 15, compressed: false },
|
|
993
|
+
rgba4444: { basisFormat: 16, compressed: false }
|
|
994
|
+
};
|
|
995
|
+
async function parseBasis(data, options) {
|
|
996
|
+
if (options.basis.containerFormat === "auto") {
|
|
997
|
+
if (isKTX(data)) {
|
|
998
|
+
const fileConstructors = await loadBasisEncoderModule(options);
|
|
999
|
+
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
1000
|
+
}
|
|
1001
|
+
const { BasisFile } = await loadBasisTrascoderModule(options);
|
|
1002
|
+
return parseBasisFile(BasisFile, data, options);
|
|
1003
|
+
}
|
|
1004
|
+
switch (options.basis.module) {
|
|
1005
|
+
case "encoder":
|
|
1006
|
+
const fileConstructors = await loadBasisEncoderModule(options);
|
|
1007
|
+
switch (options.basis.containerFormat) {
|
|
1008
|
+
case "ktx2":
|
|
1009
|
+
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
1010
|
+
case "basis":
|
|
1011
|
+
default:
|
|
1012
|
+
return parseBasisFile(fileConstructors.BasisFile, data, options);
|
|
1013
|
+
}
|
|
1014
|
+
case "transcoder":
|
|
1015
|
+
default:
|
|
1016
|
+
const { BasisFile } = await loadBasisTrascoderModule(options);
|
|
1017
|
+
return parseBasisFile(BasisFile, data, options);
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
function parseBasisFile(BasisFile, data, options) {
|
|
1021
|
+
const basisFile = new BasisFile(new Uint8Array(data));
|
|
1022
|
+
try {
|
|
1023
|
+
if (!basisFile.startTranscoding()) {
|
|
1024
|
+
return null;
|
|
1025
|
+
}
|
|
1026
|
+
const imageCount = basisFile.getNumImages();
|
|
1027
|
+
const images = [];
|
|
1028
|
+
for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {
|
|
1029
|
+
const levelsCount = basisFile.getNumLevels(imageIndex);
|
|
1030
|
+
const levels = [];
|
|
1031
|
+
for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
|
|
1032
|
+
levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));
|
|
1033
|
+
}
|
|
1034
|
+
images.push(levels);
|
|
1035
|
+
}
|
|
1036
|
+
return images;
|
|
1037
|
+
} finally {
|
|
1038
|
+
basisFile.close();
|
|
1039
|
+
basisFile.delete();
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
function transcodeImage(basisFile, imageIndex, levelIndex, options) {
|
|
1043
|
+
const width = basisFile.getImageWidth(imageIndex, levelIndex);
|
|
1044
|
+
const height = basisFile.getImageHeight(imageIndex, levelIndex);
|
|
1045
|
+
const hasAlpha = basisFile.getHasAlpha();
|
|
1046
|
+
const { compressed, format, basisFormat } = getBasisOptions(options, hasAlpha);
|
|
1047
|
+
const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
|
|
1048
|
+
const decodedData = new Uint8Array(decodedSize);
|
|
1049
|
+
if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
|
|
1050
|
+
return null;
|
|
1051
|
+
}
|
|
1052
|
+
return {
|
|
1053
|
+
width,
|
|
1054
|
+
height,
|
|
1055
|
+
data: decodedData,
|
|
1056
|
+
compressed,
|
|
1057
|
+
hasAlpha,
|
|
1058
|
+
format
|
|
1059
|
+
};
|
|
1060
|
+
}
|
|
1061
|
+
function parseKTX2File(KTX2File, data, options) {
|
|
1062
|
+
const ktx2File = new KTX2File(new Uint8Array(data));
|
|
1063
|
+
try {
|
|
1064
|
+
if (!ktx2File.startTranscoding()) {
|
|
1065
|
+
return null;
|
|
1066
|
+
}
|
|
1067
|
+
const levelsCount = ktx2File.getLevels();
|
|
1068
|
+
const levels = [];
|
|
1069
|
+
for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
|
|
1070
|
+
levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));
|
|
1071
|
+
break;
|
|
1072
|
+
}
|
|
1073
|
+
return levels;
|
|
1074
|
+
} finally {
|
|
1075
|
+
ktx2File.close();
|
|
1076
|
+
ktx2File.delete();
|
|
1077
|
+
}
|
|
1078
|
+
}
|
|
1079
|
+
function transcodeKTX2Image(ktx2File, levelIndex, options) {
|
|
1080
|
+
const { alphaFlag, height, width } = ktx2File.getImageLevelInfo(levelIndex, 0, 0);
|
|
1081
|
+
const { compressed, format, basisFormat } = getBasisOptions(options, alphaFlag);
|
|
1082
|
+
const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0, 0, basisFormat);
|
|
1083
|
+
const decodedData = new Uint8Array(decodedSize);
|
|
1084
|
+
if (!ktx2File.transcodeImage(decodedData, levelIndex, 0, 0, basisFormat, 0, -1, -1)) {
|
|
1085
|
+
return null;
|
|
1086
|
+
}
|
|
1087
|
+
return {
|
|
1088
|
+
width,
|
|
1089
|
+
height,
|
|
1090
|
+
data: decodedData,
|
|
1091
|
+
compressed,
|
|
1092
|
+
alphaFlag,
|
|
1093
|
+
format
|
|
1094
|
+
};
|
|
1095
|
+
}
|
|
1096
|
+
function getBasisOptions(options, hasAlpha) {
|
|
1097
|
+
let format = options && options.basis && options.basis.format;
|
|
1098
|
+
if (format === "auto") {
|
|
1099
|
+
format = selectSupportedBasisFormat();
|
|
1100
|
+
}
|
|
1101
|
+
if (typeof format === "object") {
|
|
1102
|
+
format = hasAlpha ? format.alpha : format.noAlpha;
|
|
1103
|
+
}
|
|
1104
|
+
format = format.toLowerCase();
|
|
1105
|
+
return OutputFormat[format];
|
|
1106
|
+
}
|
|
1107
|
+
function selectSupportedBasisFormat() {
|
|
1108
|
+
const supportedFormats = getSupportedGPUTextureFormats();
|
|
1109
|
+
if (supportedFormats.has("astc")) {
|
|
1110
|
+
return "astc-4x4";
|
|
1111
|
+
} else if (supportedFormats.has("dxt")) {
|
|
1112
|
+
return {
|
|
1113
|
+
alpha: "bc3",
|
|
1114
|
+
noAlpha: "bc1"
|
|
1115
|
+
};
|
|
1116
|
+
} else if (supportedFormats.has("pvrtc")) {
|
|
1117
|
+
return {
|
|
1118
|
+
alpha: "pvrtc1-4-rgba",
|
|
1119
|
+
noAlpha: "pvrtc1-4-rgb"
|
|
1120
|
+
};
|
|
1121
|
+
} else if (supportedFormats.has("etc1")) {
|
|
1122
|
+
return "etc1";
|
|
1123
|
+
} else if (supportedFormats.has("etc2")) {
|
|
1124
|
+
return "etc2";
|
|
1125
|
+
}
|
|
1126
|
+
return "rgb565";
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
// src/compressed-texture-loader.ts
|
|
1130
|
+
var DEFAULT_TEXTURE_LOADER_OPTIONS = {
|
|
1131
|
+
"compressed-texture": {
|
|
1132
|
+
libraryPath: "libs/",
|
|
1133
|
+
useBasis: false
|
|
1134
|
+
}
|
|
1135
|
+
};
|
|
1136
|
+
var CompressedTextureWorkerLoader = {
|
|
1137
|
+
name: "Texture Containers",
|
|
1138
|
+
id: "compressed-texture",
|
|
1139
|
+
module: "textures",
|
|
1140
|
+
version: VERSION3,
|
|
1141
|
+
worker: true,
|
|
1142
|
+
extensions: [
|
|
1143
|
+
"ktx",
|
|
1144
|
+
"ktx2",
|
|
1145
|
+
"dds",
|
|
1146
|
+
"pvr"
|
|
1147
|
+
],
|
|
1148
|
+
mimeTypes: [
|
|
1149
|
+
"image/ktx2",
|
|
1150
|
+
"image/ktx",
|
|
1151
|
+
"image/vnd-ms.dds",
|
|
1152
|
+
"image/x-dds",
|
|
1153
|
+
"application/octet-stream"
|
|
1154
|
+
],
|
|
1155
|
+
binary: true,
|
|
1156
|
+
options: DEFAULT_TEXTURE_LOADER_OPTIONS
|
|
1157
|
+
};
|
|
1158
|
+
var CompressedTextureLoader = {
|
|
1159
|
+
...CompressedTextureWorkerLoader,
|
|
1160
|
+
parse: async (arrayBuffer, options) => {
|
|
1161
|
+
if (options["compressed-texture"].useBasis) {
|
|
1162
|
+
options.basis = {
|
|
1163
|
+
format: {
|
|
1164
|
+
alpha: "BC3",
|
|
1165
|
+
noAlpha: "BC1"
|
|
1166
|
+
},
|
|
1167
|
+
...options.basis,
|
|
1168
|
+
containerFormat: "ktx2",
|
|
1169
|
+
module: "encoder"
|
|
1170
|
+
};
|
|
1171
|
+
return await parseBasis(arrayBuffer, options);
|
|
1172
|
+
}
|
|
1173
|
+
return parseCompressedTexture(arrayBuffer);
|
|
1174
|
+
}
|
|
1175
|
+
};
|
|
1176
|
+
|
|
1177
|
+
// src/workers/compressed-texture-worker.ts
|
|
1178
|
+
createLoaderWorker(CompressedTextureLoader);
|
|
1179
|
+
})();
|