@galacean/engine-loader 2.0.0-alpha.10 → 2.0.0-alpha.11
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/main.js +1841 -1889
- package/dist/main.js.map +1 -1
- package/dist/module.js +1843 -1891
- package/dist/module.js.map +1 -1
- package/package.json +4 -4
- package/types/index.d.ts +1 -1
- package/types/ktx2/KTX2Container.d.ts +1 -0
- /package/types/{EnvLoader.d.ts → AmbientLightLoader.d.ts} +0 -0
package/dist/module.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Utils, AssetPromise, AnimationClip, AnimationEvent, Loader, AnimationStringCurve, Keyframe, AnimationBoolCurve, AnimationRefCurve, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, ModelMesh, BlendShape, Entity, Transform, Texture2D, ReferResource, DiffuseMode, BackgroundMode, resourceLoader, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateTransition, BufferAsset,
|
|
2
|
-
import { Quaternion, Vector4, Color, Vector3, Vector2,
|
|
1
|
+
import { Utils, AssetPromise, AnimationClip, AnimationEvent, Loader, AnimationStringCurve, Keyframe, AnimationBoolCurve, AnimationRefCurve, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, ModelMesh, BlendShape, Entity, Transform, Texture2D, ReferResource, DiffuseMode, BackgroundMode, resourceLoader, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateTransition, BufferAsset, GLCapabilityType, TextureCube, TextureCubeFace, Logger, TextureFormat, ContentRestorer, AmbientLight, TextureFilterMode, Font, SystemInfo, Animator, IndexFormat, VertexElementFormat, request, InterpolationType, SkinnedMeshRenderer, PBRMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Camera, MeshRenderer, Skin, TextureWrapMode as TextureWrapMode$1, TextureUtils, AnimatorStateMachine, JSONAsset, Shader, Material, PrimitiveMesh, SpriteAtlas, Sprite, TextAsset, AudioClip, AudioManager, ShaderFactory, ShaderLib, PhysicsMaterial, Scene, DirectLight, PointLight, SpotLight, UnlitMaterial } from '@galacean/engine-core';
|
|
2
|
+
import { Quaternion, Vector4, Color, Vector3, Vector2, MathUtil, SphericalHarmonics3, BoundingBox, Matrix, Rect } from '@galacean/engine-math';
|
|
3
3
|
import { GLCompressedTextureInternalFormat } from '@galacean/engine-rhi-webgl';
|
|
4
4
|
|
|
5
5
|
function _extends() {
|
|
@@ -1697,1984 +1697,2001 @@ BufferLoader = __decorate([
|
|
|
1697
1697
|
])
|
|
1698
1698
|
], BufferLoader);
|
|
1699
1699
|
|
|
1700
|
-
var
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1700
|
+
var DFDTransferFunction = /*#__PURE__*/ function(DFDTransferFunction) {
|
|
1701
|
+
DFDTransferFunction[DFDTransferFunction["linear"] = 1] = "linear";
|
|
1702
|
+
DFDTransferFunction[DFDTransferFunction["sRGB"] = 2] = "sRGB";
|
|
1703
|
+
return DFDTransferFunction;
|
|
1704
|
+
}({});
|
|
1705
|
+
var ColorModel = /*#__PURE__*/ function(ColorModel) {
|
|
1706
|
+
ColorModel[ColorModel["ETC1S"] = 163] = "ETC1S";
|
|
1707
|
+
ColorModel[ColorModel["UASTC_LDR_4X4"] = 166] = "UASTC_LDR_4X4";
|
|
1708
|
+
ColorModel[ColorModel["UASTC_HDR_4X4"] = 167] = "UASTC_HDR_4X4";
|
|
1709
|
+
return ColorModel;
|
|
1710
|
+
}({});
|
|
1711
|
+
/** @internal */ var KTX2Container = /*#__PURE__*/ function() {
|
|
1712
|
+
function KTX2Container(buffer) {
|
|
1713
|
+
this.vkFormat = 0;
|
|
1714
|
+
this.typeSize = 1;
|
|
1715
|
+
this.pixelWidth = 0;
|
|
1716
|
+
this.pixelHeight = 0;
|
|
1717
|
+
this.pixelDepth = 0;
|
|
1718
|
+
this.layerCount = 0;
|
|
1719
|
+
this.faceCount = 1;
|
|
1720
|
+
this.supercompressionScheme = 0;
|
|
1721
|
+
this.levels = [];
|
|
1722
|
+
this.keyValue = {};
|
|
1723
|
+
this.globalData = null;
|
|
1724
|
+
this.parse(buffer);
|
|
1704
1725
|
}
|
|
1705
|
-
var _proto =
|
|
1706
|
-
_proto.
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
var
|
|
1738
|
-
var
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1726
|
+
var _proto = KTX2Container.prototype;
|
|
1727
|
+
_proto.parse = function parse(data) {
|
|
1728
|
+
var buffer = data.buffer;
|
|
1729
|
+
var byteOffset = data.byteOffset;
|
|
1730
|
+
var headerBufferReader = new BufferReader(data, 12);
|
|
1731
|
+
this.vkFormat = headerBufferReader.nextUint32();
|
|
1732
|
+
this.typeSize = headerBufferReader.nextUint32();
|
|
1733
|
+
this.pixelWidth = headerBufferReader.nextUint32();
|
|
1734
|
+
this.pixelHeight = headerBufferReader.nextUint32();
|
|
1735
|
+
this.pixelDepth = headerBufferReader.nextUint32();
|
|
1736
|
+
this.layerCount = headerBufferReader.nextUint32();
|
|
1737
|
+
this.faceCount = headerBufferReader.nextUint32();
|
|
1738
|
+
var levelCount = Math.max(1, headerBufferReader.nextUint32());
|
|
1739
|
+
this.supercompressionScheme = headerBufferReader.nextUint32();
|
|
1740
|
+
var dfdByteOffset = headerBufferReader.nextUint32();
|
|
1741
|
+
var dfdByteLength = headerBufferReader.nextUint32();
|
|
1742
|
+
var kvdByteOffset = headerBufferReader.nextUint32();
|
|
1743
|
+
var kvdByteLength = headerBufferReader.nextUint32();
|
|
1744
|
+
var sgdByteOffset = headerBufferReader.nextUint64();
|
|
1745
|
+
var sgdByteLength = headerBufferReader.nextUint64();
|
|
1746
|
+
// level index
|
|
1747
|
+
var ktxLevels = new Array(levelCount);
|
|
1748
|
+
var levelByteLength = levelCount * 3 * 8;
|
|
1749
|
+
var levelReader = new BufferReader(data, headerBufferReader.offset, levelByteLength);
|
|
1750
|
+
this.levels = ktxLevels;
|
|
1751
|
+
for(var i = 0; i < levelCount; i++){
|
|
1752
|
+
ktxLevels[i] = {
|
|
1753
|
+
levelData: new Uint8Array(buffer, byteOffset + levelReader.nextUint64(), levelReader.nextUint64()),
|
|
1754
|
+
uncompressedByteLength: levelReader.nextUint64()
|
|
1755
|
+
};
|
|
1756
|
+
}
|
|
1757
|
+
// Data Format Descriptor (DFD).
|
|
1758
|
+
var dfdReader = new BufferReader(data, dfdByteOffset, dfdByteLength);
|
|
1759
|
+
var dfd = {
|
|
1760
|
+
vendorId: dfdReader.skip(4 /* totalSize */ ).nextUint16(),
|
|
1761
|
+
descriptorType: dfdReader.nextUint16(),
|
|
1762
|
+
versionNumber: dfdReader.nextUint16(),
|
|
1763
|
+
descriptorBlockSize: dfdReader.nextUint16(),
|
|
1764
|
+
colorModel: dfdReader.nextUint8(),
|
|
1765
|
+
colorPrimaries: dfdReader.nextUint8(),
|
|
1766
|
+
transferFunction: dfdReader.nextUint8(),
|
|
1767
|
+
flags: dfdReader.nextUint8(),
|
|
1768
|
+
texelBlockDimension: [
|
|
1769
|
+
dfdReader.nextUint8(),
|
|
1770
|
+
dfdReader.nextUint8(),
|
|
1771
|
+
dfdReader.nextUint8(),
|
|
1772
|
+
dfdReader.nextUint8()
|
|
1773
|
+
],
|
|
1774
|
+
bytesPlane: [
|
|
1775
|
+
dfdReader.nextUint8(),
|
|
1776
|
+
dfdReader.nextUint8(),
|
|
1777
|
+
dfdReader.nextUint8(),
|
|
1778
|
+
dfdReader.nextUint8(),
|
|
1779
|
+
dfdReader.nextUint8(),
|
|
1780
|
+
dfdReader.nextUint8(),
|
|
1781
|
+
dfdReader.nextUint8(),
|
|
1782
|
+
dfdReader.nextUint8()
|
|
1783
|
+
],
|
|
1784
|
+
samples: []
|
|
1785
|
+
};
|
|
1786
|
+
this.dataFormatDescriptor = dfd;
|
|
1787
|
+
var sampleStart = 6;
|
|
1788
|
+
var sampleWords = 4;
|
|
1789
|
+
var numSamples = (dfd.descriptorBlockSize / 4 - sampleStart) / sampleWords;
|
|
1790
|
+
for(var i1 = 0; i1 < numSamples; i1++){
|
|
1791
|
+
var sample = {
|
|
1792
|
+
bitOffset: dfdReader.nextUint16(),
|
|
1793
|
+
bitLength: dfdReader.nextUint8(),
|
|
1794
|
+
channelType: dfdReader.nextUint8(),
|
|
1795
|
+
samplePosition: [
|
|
1796
|
+
dfdReader.nextUint8(),
|
|
1797
|
+
dfdReader.nextUint8(),
|
|
1798
|
+
dfdReader.nextUint8(),
|
|
1799
|
+
dfdReader.nextUint8()
|
|
1800
|
+
],
|
|
1801
|
+
sampleLower: -Infinity,
|
|
1802
|
+
sampleUpper: Infinity
|
|
1803
|
+
};
|
|
1804
|
+
if (sample.channelType & 0x40) {
|
|
1805
|
+
sample.sampleLower = dfdReader.nextInt32();
|
|
1806
|
+
sample.sampleUpper = dfdReader.nextInt32();
|
|
1807
|
+
} else {
|
|
1808
|
+
sample.sampleLower = dfdReader.nextUint32();
|
|
1809
|
+
sample.sampleUpper = dfdReader.nextUint32();
|
|
1746
1810
|
}
|
|
1811
|
+
dfd.samples[i1] = sample;
|
|
1747
1812
|
}
|
|
1748
|
-
|
|
1813
|
+
var kvdReader = new BufferReader(data, kvdByteOffset, kvdByteLength, true);
|
|
1814
|
+
while(kvdReader.position < kvdByteLength){
|
|
1815
|
+
var keyValueByteLength = kvdReader.nextUint32();
|
|
1816
|
+
var keyData = kvdReader.scan(keyValueByteLength);
|
|
1817
|
+
var key = Utils.decodeText(keyData);
|
|
1818
|
+
// 4-byte alignment.
|
|
1819
|
+
var valueData = kvdReader.nextUint8Array(keyValueByteLength - keyData.byteLength - 1);
|
|
1820
|
+
this.keyValue[key] = key.match(/^ktx/i) ? Utils.decodeText(valueData).replace(/^(.*)\x00$/, "$1") : valueData;
|
|
1821
|
+
var kvPadding = keyValueByteLength % 4 ? 4 - keyValueByteLength % 4 : 0; // align(4)
|
|
1822
|
+
// 4-byte alignment.
|
|
1823
|
+
kvdReader.skip(kvPadding);
|
|
1824
|
+
}
|
|
1825
|
+
if (sgdByteLength <= 0) return this;
|
|
1826
|
+
var sgdReader = new BufferReader(data, sgdByteOffset, sgdByteLength, true);
|
|
1827
|
+
var endpointCount = sgdReader.nextUint16();
|
|
1828
|
+
var selectorCount = sgdReader.nextUint16();
|
|
1829
|
+
var endpointsByteLength = sgdReader.nextUint32();
|
|
1830
|
+
var selectorsByteLength = sgdReader.nextUint32();
|
|
1831
|
+
var tablesByteLength = sgdReader.nextUint32();
|
|
1832
|
+
var extendedByteLength = sgdReader.nextUint32();
|
|
1833
|
+
var imageDescs = new Array(levelCount);
|
|
1834
|
+
for(var i2 = 0; i2 < levelCount; i2++){
|
|
1835
|
+
imageDescs[i2] = {
|
|
1836
|
+
imageFlags: sgdReader.nextUint32(),
|
|
1837
|
+
rgbSliceByteOffset: sgdReader.nextUint32(),
|
|
1838
|
+
rgbSliceByteLength: sgdReader.nextUint32(),
|
|
1839
|
+
alphaSliceByteOffset: sgdReader.nextUint32(),
|
|
1840
|
+
alphaSliceByteLength: sgdReader.nextUint32()
|
|
1841
|
+
};
|
|
1842
|
+
}
|
|
1843
|
+
var endpointsByteOffset = sgdByteOffset + sgdReader.position;
|
|
1844
|
+
var selectorsByteOffset = endpointsByteOffset + endpointsByteLength;
|
|
1845
|
+
var tablesByteOffset = selectorsByteOffset + selectorsByteLength;
|
|
1846
|
+
var extendedByteOffset = tablesByteOffset + tablesByteLength;
|
|
1847
|
+
var endpointsData = new Uint8Array(buffer, byteOffset + endpointsByteOffset, endpointsByteLength);
|
|
1848
|
+
var selectorsData = new Uint8Array(buffer, byteOffset + selectorsByteOffset, selectorsByteLength);
|
|
1849
|
+
var tablesData = new Uint8Array(buffer, byteOffset + tablesByteOffset, tablesByteLength);
|
|
1850
|
+
var extendedData = new Uint8Array(buffer, byteOffset + extendedByteOffset, extendedByteLength);
|
|
1851
|
+
this.globalData = {
|
|
1852
|
+
endpointCount: endpointCount,
|
|
1853
|
+
selectorCount: selectorCount,
|
|
1854
|
+
imageDescs: imageDescs,
|
|
1855
|
+
endpointsData: endpointsData,
|
|
1856
|
+
selectorsData: selectorsData,
|
|
1857
|
+
tablesData: tablesData,
|
|
1858
|
+
extendedData: extendedData
|
|
1859
|
+
};
|
|
1749
1860
|
};
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
])
|
|
1756
|
-
], EnvLoader);
|
|
1757
|
-
/**
|
|
1758
|
-
* @internal
|
|
1759
|
-
*/ var EnvContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
1760
|
-
_inherits(EnvContentRestorer, ContentRestorer);
|
|
1761
|
-
function EnvContentRestorer(resource, url, requestConfig) {
|
|
1762
|
-
var _this;
|
|
1763
|
-
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
1764
|
-
return _this;
|
|
1765
|
-
}
|
|
1766
|
-
var _proto = EnvContentRestorer.prototype;
|
|
1767
|
-
_proto.restoreContent = function restoreContent() {
|
|
1768
|
-
var _this = this;
|
|
1769
|
-
return new AssetPromise(function(resolve, reject) {
|
|
1770
|
-
var resource = _this.resource;
|
|
1771
|
-
var engine = resource.engine;
|
|
1772
|
-
engine.resourceManager// @ts-ignore
|
|
1773
|
-
._request(_this.url, _this.requestConfig).then(function(buffer) {
|
|
1774
|
-
EnvLoader._setTextureByBuffer(engine, buffer, resource);
|
|
1775
|
-
resolve(resource);
|
|
1776
|
-
}).catch(reject);
|
|
1777
|
-
});
|
|
1861
|
+
KTX2Container.checkMagic = function checkMagic(buffer, offset) {
|
|
1862
|
+
if (offset === void 0) offset = 0;
|
|
1863
|
+
if (buffer.byteLength < offset + 4) return false;
|
|
1864
|
+
var id = new Uint8Array(buffer, offset, 4);
|
|
1865
|
+
return id[0] === 0xab && id[1] === 0x4b && id[2] === 0x54 && id[3] === 0x58;
|
|
1778
1866
|
};
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
function
|
|
1783
|
-
|
|
1784
|
-
var info = gen[key](arg);
|
|
1785
|
-
var value = info.value;
|
|
1786
|
-
} catch (error) {
|
|
1787
|
-
reject(error);
|
|
1788
|
-
return;
|
|
1789
|
-
}
|
|
1790
|
-
if (info.done) resolve(value);
|
|
1791
|
-
else Promise.resolve(value).then(_next, _throw);
|
|
1792
|
-
}
|
|
1793
|
-
function _async_to_generator(fn) {
|
|
1794
|
-
return function() {
|
|
1795
|
-
var self = this, args = arguments;
|
|
1796
|
-
|
|
1797
|
-
return new Promise(function(resolve, reject) {
|
|
1798
|
-
var gen = fn.apply(self, args);
|
|
1799
|
-
|
|
1800
|
-
function _next(value) {
|
|
1801
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
1867
|
+
_create_class(KTX2Container, [
|
|
1868
|
+
{
|
|
1869
|
+
key: "isSRGB",
|
|
1870
|
+
get: function get() {
|
|
1871
|
+
return this.dataFormatDescriptor.transferFunction === 2;
|
|
1802
1872
|
}
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1873
|
+
},
|
|
1874
|
+
{
|
|
1875
|
+
key: "colorModel",
|
|
1876
|
+
get: function get() {
|
|
1877
|
+
return this.dataFormatDescriptor.colorModel;
|
|
1806
1878
|
}
|
|
1879
|
+
}
|
|
1880
|
+
]);
|
|
1881
|
+
return KTX2Container;
|
|
1882
|
+
}();
|
|
1807
1883
|
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1884
|
+
/**
|
|
1885
|
+
* KTX2 transcode target format.
|
|
1886
|
+
*/ var KTX2TargetFormat = /*#__PURE__*/ function(KTX2TargetFormat) {
|
|
1887
|
+
/** RGB(A) compressed format, 128 bits per 4x4 pixel block. */ KTX2TargetFormat[KTX2TargetFormat["ASTC"] = 0] = "ASTC";
|
|
1888
|
+
/** RGB(A) compressed format, 128 bits per 4x4 pixel block. */ KTX2TargetFormat[KTX2TargetFormat["BC7"] = 1] = "BC7";
|
|
1889
|
+
/** RGB(A) compressed format, 4 bits per pixel if no alpha channel, 8 bits per pixel if has alpha channel. */ KTX2TargetFormat[KTX2TargetFormat["BC1_BC3"] = 2] = "BC1_BC3";
|
|
1890
|
+
/** RGB(A) compressed format, 4 bits per pixel. */ KTX2TargetFormat[KTX2TargetFormat["PVRTC"] = 3] = "PVRTC";
|
|
1891
|
+
/** RGB(A) compressed format, 4 bits per pixel if no alpha channel, 8 bits per pixel if has alpha channel. */ KTX2TargetFormat[KTX2TargetFormat["ETC"] = 4] = "ETC";
|
|
1892
|
+
/** R format, 8 bits per pixel. */ KTX2TargetFormat[KTX2TargetFormat["R8"] = 5] = "R8";
|
|
1893
|
+
/** RG format, 16 bits per pixel. */ KTX2TargetFormat[KTX2TargetFormat["R8G8"] = 6] = "R8G8";
|
|
1894
|
+
/** RGBA format, 32 bits per pixel. */ KTX2TargetFormat[KTX2TargetFormat["R8G8B8A8"] = 7] = "R8G8B8A8";
|
|
1895
|
+
/** RGB HDR compressed format, 8 bits per pixel. */ KTX2TargetFormat[KTX2TargetFormat["BC6H"] = 8] = "BC6H";
|
|
1896
|
+
/** HDR RGB(A) compressed format, 128 bits per 4x4 pixel block (currently UASTC HDR 4x4 encoders are only RGB). */ KTX2TargetFormat[KTX2TargetFormat["ASTC_HDR_4x4"] = 9] = "ASTC_HDR_4x4";
|
|
1897
|
+
/** RGBA format, 16 bits per channel. */ KTX2TargetFormat[KTX2TargetFormat["R16G16B16A16"] = 10] = "R16G16B16A16";
|
|
1898
|
+
return KTX2TargetFormat;
|
|
1899
|
+
}({});
|
|
1812
1900
|
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1901
|
+
/**
|
|
1902
|
+
* @internal
|
|
1903
|
+
* WorkerPool, T is is post message type, U is return type.
|
|
1904
|
+
*/ var WorkerPool = /*#__PURE__*/ function() {
|
|
1905
|
+
function WorkerPool(limitedCount, _workerCreator) {
|
|
1906
|
+
if (limitedCount === void 0) limitedCount = 4;
|
|
1907
|
+
this.limitedCount = limitedCount;
|
|
1908
|
+
this._workerCreator = _workerCreator;
|
|
1909
|
+
this._taskQueue = [];
|
|
1910
|
+
this._workerStatus = 0;
|
|
1911
|
+
this._workerItems = new Array(limitedCount);
|
|
1817
1912
|
}
|
|
1818
|
-
var _proto =
|
|
1819
|
-
_proto.
|
|
1820
|
-
var
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
.
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
var fontName = data.fontName, fontUrl = data.fontUrl;
|
|
1827
|
-
if (fontUrl) {
|
|
1828
|
-
_this._registerFont(fontName, fontUrl).then(function() {
|
|
1829
|
-
var font = new Font(resourceManager.engine, fontName);
|
|
1830
|
-
resolve(font);
|
|
1831
|
-
}).catch(function(e) {
|
|
1832
|
-
reject("load font " + fontUrl + " fail");
|
|
1833
|
-
});
|
|
1834
|
-
} else {
|
|
1835
|
-
var font = new Font(resourceManager.engine, fontName);
|
|
1836
|
-
resolve(font);
|
|
1837
|
-
}
|
|
1838
|
-
}).catch(function(e) {
|
|
1839
|
-
reject(e);
|
|
1840
|
-
});
|
|
1841
|
-
});
|
|
1842
|
-
};
|
|
1843
|
-
_proto._registerFont = function _registerFont(fontName, fontUrl) {
|
|
1844
|
-
return _async_to_generator(function() {
|
|
1845
|
-
var fontFace;
|
|
1846
|
-
return __generator(this, function(_state) {
|
|
1847
|
-
switch(_state.label){
|
|
1848
|
-
case 0:
|
|
1849
|
-
fontFace = new FontFace(fontName, "url(" + fontUrl + ")");
|
|
1850
|
-
return [
|
|
1851
|
-
4,
|
|
1852
|
-
fontFace.load()
|
|
1853
|
-
];
|
|
1854
|
-
case 1:
|
|
1855
|
-
_state.sent();
|
|
1856
|
-
document.fonts.add(fontFace);
|
|
1857
|
-
return [
|
|
1858
|
-
2
|
|
1859
|
-
];
|
|
1860
|
-
}
|
|
1861
|
-
});
|
|
1862
|
-
})();
|
|
1913
|
+
var _proto = WorkerPool.prototype;
|
|
1914
|
+
_proto.prepareWorker = function prepareWorker() {
|
|
1915
|
+
var count = this.limitedCount;
|
|
1916
|
+
var promises = new Array(count);
|
|
1917
|
+
for(var i = 0; i < count; i++){
|
|
1918
|
+
promises.push(this._initWorker(i));
|
|
1919
|
+
}
|
|
1920
|
+
return Promise.all(promises);
|
|
1863
1921
|
};
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
var wasm_simd = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb";
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
3,
|
|
1888
|
-
128,
|
|
1889
|
-
11,
|
|
1890
|
-
4,
|
|
1891
|
-
13,
|
|
1892
|
-
64,
|
|
1893
|
-
6,
|
|
1894
|
-
253,
|
|
1895
|
-
10,
|
|
1896
|
-
7,
|
|
1897
|
-
15,
|
|
1898
|
-
116,
|
|
1899
|
-
127,
|
|
1900
|
-
5,
|
|
1901
|
-
8,
|
|
1902
|
-
12,
|
|
1903
|
-
40,
|
|
1904
|
-
16,
|
|
1905
|
-
19,
|
|
1906
|
-
54,
|
|
1907
|
-
20,
|
|
1908
|
-
9,
|
|
1909
|
-
27,
|
|
1910
|
-
255,
|
|
1911
|
-
113,
|
|
1912
|
-
17,
|
|
1913
|
-
42,
|
|
1914
|
-
67,
|
|
1915
|
-
24,
|
|
1916
|
-
23,
|
|
1917
|
-
146,
|
|
1918
|
-
148,
|
|
1919
|
-
18,
|
|
1920
|
-
14,
|
|
1921
|
-
22,
|
|
1922
|
-
45,
|
|
1923
|
-
70,
|
|
1924
|
-
69,
|
|
1925
|
-
56,
|
|
1926
|
-
114,
|
|
1927
|
-
101,
|
|
1928
|
-
21,
|
|
1929
|
-
25,
|
|
1930
|
-
63,
|
|
1931
|
-
75,
|
|
1932
|
-
136,
|
|
1933
|
-
108,
|
|
1934
|
-
28,
|
|
1935
|
-
118,
|
|
1936
|
-
29,
|
|
1937
|
-
73,
|
|
1938
|
-
115
|
|
1939
|
-
]);
|
|
1940
|
-
// @ts-ignore
|
|
1941
|
-
var wasm = SystemInfo._detectSIMDSupported() ? wasm_simd : wasm_base;
|
|
1942
|
-
var instance;
|
|
1943
|
-
ready = WebAssembly.instantiate(unpack(wasm)).then(function(result) {
|
|
1944
|
-
instance = result.instance;
|
|
1945
|
-
instance.exports.__wasm_call_ctors();
|
|
1946
|
-
}).then(function() {
|
|
1947
|
-
return {
|
|
1948
|
-
workerCount: 4,
|
|
1949
|
-
ready: ready,
|
|
1950
|
-
useWorkers: function useWorkers(workerCount) {
|
|
1951
|
-
this.workerCount = workerCount != null ? workerCount : this.workerCount;
|
|
1952
|
-
initWorkers(this.workerCount);
|
|
1953
|
-
},
|
|
1954
|
-
decodeGltfBuffer: function decodeGltfBuffer(count, stride, source, mode, filter) {
|
|
1955
|
-
if (this.workerCount > 0 && workers.length === 0) this.useWorkers();
|
|
1956
|
-
if (workers.length > 0) return decodeWorker(count, stride, source, decoders[mode], filters[filter]);
|
|
1957
|
-
return ready.then(function() {
|
|
1958
|
-
var target = new Uint8Array(count * stride);
|
|
1959
|
-
decode(instance.exports[decoders[mode]], target, count, stride, source, instance.exports[filters[filter]]);
|
|
1960
|
-
return target;
|
|
1922
|
+
/**
|
|
1923
|
+
* Post message to worker.
|
|
1924
|
+
* @param message - Message which posted to worker
|
|
1925
|
+
* @returns Return a promise of message
|
|
1926
|
+
*/ _proto.postMessage = function postMessage(message) {
|
|
1927
|
+
var _this = this;
|
|
1928
|
+
return new Promise(function(resolve, reject) {
|
|
1929
|
+
var workerId = _this._getIdleWorkerId();
|
|
1930
|
+
if (workerId !== -1) {
|
|
1931
|
+
_this._workerStatus |= 1 << workerId;
|
|
1932
|
+
var workerItems = _this._workerItems;
|
|
1933
|
+
var _workerItems_workerId;
|
|
1934
|
+
Promise.resolve((_workerItems_workerId = workerItems[workerId]) != null ? _workerItems_workerId : _this._initWorker(workerId)).then(function() {
|
|
1935
|
+
var workerItem = workerItems[workerId];
|
|
1936
|
+
workerItem.resolve = resolve;
|
|
1937
|
+
workerItem.reject = reject;
|
|
1938
|
+
workerItem.worker.postMessage(message);
|
|
1939
|
+
}).catch(reject);
|
|
1940
|
+
} else {
|
|
1941
|
+
_this._taskQueue.push({
|
|
1942
|
+
resolve: resolve,
|
|
1943
|
+
reject: reject,
|
|
1944
|
+
message: message
|
|
1961
1945
|
});
|
|
1962
|
-
},
|
|
1963
|
-
release: function release() {
|
|
1964
|
-
for(var i = 0; i < workers.length; i++){
|
|
1965
|
-
workers[i].object.terminate();
|
|
1966
|
-
}
|
|
1967
1946
|
}
|
|
1968
|
-
};
|
|
1969
|
-
}
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
}
|
|
1980
|
-
return result.buffer.slice(0, write);
|
|
1981
|
-
}
|
|
1982
|
-
function decode(fun, target, count, size, source, filter) {
|
|
1983
|
-
var sbrk = instance.exports.sbrk;
|
|
1984
|
-
var count4 = count + 3 & ~3;
|
|
1985
|
-
var tp = sbrk(count4 * size);
|
|
1986
|
-
var sp = sbrk(source.length);
|
|
1987
|
-
var heap = new Uint8Array(instance.exports.memory.buffer);
|
|
1988
|
-
heap.set(source, sp);
|
|
1989
|
-
var res = fun(tp, count, size, sp, source.length);
|
|
1990
|
-
if (res == 0 && filter) {
|
|
1991
|
-
filter(tp, count4, size);
|
|
1992
|
-
}
|
|
1993
|
-
target.set(heap.subarray(tp, tp + count * size));
|
|
1994
|
-
sbrk(tp - sbrk(0));
|
|
1995
|
-
if (res != 0) {
|
|
1996
|
-
throw new Error("Malformed buffer data: " + res);
|
|
1947
|
+
});
|
|
1948
|
+
};
|
|
1949
|
+
/**
|
|
1950
|
+
* Destroy the worker pool.
|
|
1951
|
+
*/ _proto.destroy = function destroy() {
|
|
1952
|
+
var workerItems = this._workerItems;
|
|
1953
|
+
for(var i = 0, n = workerItems.length; i < n; i++){
|
|
1954
|
+
var workerItem = workerItems[i];
|
|
1955
|
+
workerItem.worker.terminate();
|
|
1956
|
+
workerItem.reject = null;
|
|
1957
|
+
workerItem.resolve = null;
|
|
1997
1958
|
}
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
OCTAHEDRAL: "meshopt_decodeFilterOct",
|
|
2002
|
-
QUATERNION: "meshopt_decodeFilterQuat",
|
|
2003
|
-
EXPONENTIAL: "meshopt_decodeFilterExp"
|
|
1959
|
+
workerItems.length = 0;
|
|
1960
|
+
this._taskQueue.length = 0;
|
|
1961
|
+
this._workerStatus = 0;
|
|
2004
1962
|
};
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
1963
|
+
_proto._initWorker = function _initWorker(workerId) {
|
|
1964
|
+
var _this = this;
|
|
1965
|
+
return Promise.resolve(this._workerCreator()).then(function(worker) {
|
|
1966
|
+
worker.addEventListener("message", _this._onMessage.bind(_this, workerId));
|
|
1967
|
+
_this._workerItems[workerId] = {
|
|
1968
|
+
worker: worker,
|
|
1969
|
+
resolve: null,
|
|
1970
|
+
reject: null
|
|
1971
|
+
};
|
|
1972
|
+
return worker;
|
|
1973
|
+
});
|
|
2009
1974
|
};
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
var worker = {
|
|
2014
|
-
object: new Worker(url),
|
|
2015
|
-
pending: 0,
|
|
2016
|
-
requests: {}
|
|
2017
|
-
};
|
|
2018
|
-
worker.object.onmessage = function(event) {
|
|
2019
|
-
var data = event.data;
|
|
2020
|
-
worker.pending -= data.count;
|
|
2021
|
-
worker.requests[data.id][data.action](data.value);
|
|
2022
|
-
delete worker.requests[data.id];
|
|
2023
|
-
};
|
|
2024
|
-
return worker;
|
|
2025
|
-
}
|
|
2026
|
-
function initWorkers(count) {
|
|
2027
|
-
var source = "var instance; var ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(unpack(wasm)) + "]), {})" + ".then(function(result) {instance = result.instance; instance.exports.__wasm_call_ctors();});\n" + "self.onmessage = workerProcess;\n" + 'function decode(fun, target, count, size, source, filter) {\n const sbrk = instance.exports.sbrk;\n const count4 = (count + 3) & ~3;\n const tp = sbrk(count4 * size);\n const sp = sbrk(source.length);\n const heap = new Uint8Array(instance.exports.memory.buffer);\n heap.set(source, sp);\n const res = fun(tp, count, size, sp, source.length);\n if (res == 0 && filter) {\n filter(tp, count4, size);\n }\n target.set(heap.subarray(tp, tp + count * size));\n sbrk(tp - sbrk(0));\n if (res != 0) {\n throw new Error("Malformed buffer data: " + res);\n }\n }\n' + 'function workerProcess(event) {\n ready.then(function () {\n const data = event.data;\n try {\n const target = new Uint8Array(data.count * data.size);\n decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);\n self.postMessage({ id: data.id, count: data.count, action: "resolve", value: target }, [target.buffer]);\n } catch (error) {\n self.postMessage({\n id: data.id,\n count: data.count,\n action: "reject",\n value: error\n });\n }\n });\n }';
|
|
2028
|
-
var blob = new Blob([
|
|
2029
|
-
source
|
|
2030
|
-
], {
|
|
2031
|
-
type: "text/javascript"
|
|
2032
|
-
});
|
|
2033
|
-
var url = URL.createObjectURL(blob);
|
|
2034
|
-
for(var i = 0; i < count; ++i){
|
|
2035
|
-
workers[i] = createWorker(url);
|
|
1975
|
+
_proto._getIdleWorkerId = function _getIdleWorkerId() {
|
|
1976
|
+
for(var i = 0, count = this.limitedCount; i < count; i++){
|
|
1977
|
+
if (!(this._workerStatus & 1 << i)) return i;
|
|
2036
1978
|
}
|
|
2037
|
-
|
|
1979
|
+
return -1;
|
|
1980
|
+
};
|
|
1981
|
+
_proto._onMessage = function _onMessage(workerId, msg) {
|
|
1982
|
+
// onerror of web worker can't catch error in promise
|
|
1983
|
+
var error = msg.data.error;
|
|
1984
|
+
if (error) {
|
|
1985
|
+
this._workerItems[workerId].reject(error);
|
|
1986
|
+
} else {
|
|
1987
|
+
this._workerItems[workerId].resolve(msg.data);
|
|
1988
|
+
}
|
|
1989
|
+
this._nextTask(workerId);
|
|
1990
|
+
};
|
|
1991
|
+
_proto._nextTask = function _nextTask(workerId) {
|
|
1992
|
+
if (this._taskQueue.length) {
|
|
1993
|
+
var taskItem = this._taskQueue.shift();
|
|
1994
|
+
var workerItem = this._workerItems[workerId];
|
|
1995
|
+
workerItem.resolve = taskItem.resolve;
|
|
1996
|
+
workerItem.reject = taskItem.reject;
|
|
1997
|
+
workerItem.worker.postMessage(taskItem.message);
|
|
1998
|
+
} else {
|
|
1999
|
+
this._workerStatus ^= 1 << workerId;
|
|
2000
|
+
}
|
|
2001
|
+
};
|
|
2002
|
+
return WorkerPool;
|
|
2003
|
+
}();
|
|
2004
|
+
|
|
2005
|
+
var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
2006
|
+
function AbstractTranscoder(workerLimitCount) {
|
|
2007
|
+
this.workerLimitCount = workerLimitCount;
|
|
2038
2008
|
}
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
worker = workers[i];
|
|
2044
|
-
}
|
|
2009
|
+
var _proto = AbstractTranscoder.prototype;
|
|
2010
|
+
_proto.init = function init() {
|
|
2011
|
+
if (!this._initPromise) {
|
|
2012
|
+
this._initPromise = this._initTranscodeWorkerPool();
|
|
2045
2013
|
}
|
|
2046
|
-
return
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2014
|
+
return this._initPromise;
|
|
2015
|
+
};
|
|
2016
|
+
_proto.destroy = function destroy() {
|
|
2017
|
+
this._transcodeWorkerPool.destroy();
|
|
2018
|
+
};
|
|
2019
|
+
_proto._createTranscodePool = function _createTranscodePool(workerURL, wasmBuffer) {
|
|
2020
|
+
this._transcodeWorkerPool = new WorkerPool(this.workerLimitCount, function() {
|
|
2021
|
+
return new Promise(function(resolve, reject) {
|
|
2022
|
+
var onMessage = function onMessage(e) {
|
|
2023
|
+
if (e.data.error) {
|
|
2024
|
+
reject(e.data.error);
|
|
2025
|
+
} else {
|
|
2026
|
+
resolve(worker);
|
|
2027
|
+
}
|
|
2028
|
+
};
|
|
2029
|
+
var worker = new Worker(workerURL);
|
|
2030
|
+
var msg = {
|
|
2031
|
+
type: "init",
|
|
2032
|
+
transcoderWasm: wasmBuffer
|
|
2033
|
+
};
|
|
2034
|
+
worker.addEventListener("message", onMessage);
|
|
2035
|
+
worker.postMessage(msg);
|
|
2036
|
+
});
|
|
2064
2037
|
});
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2038
|
+
return this._transcodeWorkerPool.prepareWorker();
|
|
2039
|
+
};
|
|
2040
|
+
return AbstractTranscoder;
|
|
2041
|
+
}();
|
|
2068
2042
|
|
|
2069
|
-
/**
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2043
|
+
/** @internal */ function TranscodeWorkerCode() {
|
|
2044
|
+
var initPromise;
|
|
2045
|
+
var init = function init(wasmBinary) {
|
|
2046
|
+
if (!initPromise) {
|
|
2047
|
+
initPromise = new Promise(function(resolve, reject) {
|
|
2048
|
+
var BasisModule = {
|
|
2049
|
+
wasmBinary: wasmBinary,
|
|
2050
|
+
onRuntimeInitialized: function() {
|
|
2051
|
+
return resolve(BasisModule);
|
|
2052
|
+
},
|
|
2053
|
+
onAbort: reject
|
|
2054
|
+
};
|
|
2055
|
+
self["BASIS"](BasisModule);
|
|
2056
|
+
}).then(function(BasisModule) {
|
|
2057
|
+
BasisModule.initializeBasis();
|
|
2058
|
+
return BasisModule.KTX2File;
|
|
2059
|
+
});
|
|
2060
|
+
}
|
|
2061
|
+
return initPromise;
|
|
2087
2062
|
};
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2063
|
+
self.onmessage = function onmessage(event) {
|
|
2064
|
+
var message = event.data;
|
|
2065
|
+
switch(message.type){
|
|
2066
|
+
case "init":
|
|
2067
|
+
init(message.transcoderWasm).then(function() {
|
|
2068
|
+
self.postMessage("init-completed");
|
|
2069
|
+
}).catch(function(e) {
|
|
2070
|
+
return self.postMessage({
|
|
2071
|
+
error: e
|
|
2072
|
+
});
|
|
2073
|
+
});
|
|
2074
|
+
break;
|
|
2075
|
+
case "transcode":
|
|
2076
|
+
init().then(function(KTX2File) {
|
|
2077
|
+
var result = transcode(message.buffer, message.format, KTX2File);
|
|
2078
|
+
// @ts-ignore
|
|
2079
|
+
result.type = "transcoded";
|
|
2080
|
+
self.postMessage(result);
|
|
2081
|
+
}).catch(function(e) {
|
|
2082
|
+
return self.postMessage({
|
|
2083
|
+
error: e
|
|
2084
|
+
});
|
|
2085
|
+
});
|
|
2086
|
+
break;
|
|
2098
2087
|
}
|
|
2099
2088
|
};
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2089
|
+
}
|
|
2090
|
+
var _init = function init() {
|
|
2091
|
+
var initPromise;
|
|
2092
|
+
return function init(wasmBinary) {
|
|
2093
|
+
if (!initPromise) {
|
|
2094
|
+
initPromise = new Promise(function(resolve, reject) {
|
|
2095
|
+
var BasisModule = {
|
|
2096
|
+
wasmBinary: wasmBinary,
|
|
2097
|
+
onRuntimeInitialized: function() {
|
|
2098
|
+
return resolve(BasisModule);
|
|
2099
|
+
},
|
|
2100
|
+
onAbort: reject
|
|
2101
|
+
};
|
|
2102
|
+
self["BASIS"](BasisModule);
|
|
2103
|
+
}).then(function(BasisModule) {
|
|
2104
|
+
BasisModule.initializeBasis();
|
|
2105
|
+
return BasisModule.KTX2File;
|
|
2106
|
+
});
|
|
2105
2107
|
}
|
|
2108
|
+
return initPromise;
|
|
2106
2109
|
};
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
return
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
*/ function get() {
|
|
2131
|
-
return this._defaultSceneRoot;
|
|
2132
|
-
}
|
|
2110
|
+
};
|
|
2111
|
+
var init = _init();
|
|
2112
|
+
function transcode(buffer, targetFormat, KTX2File) {
|
|
2113
|
+
function getTranscodeFormatFromTarget(target, hasAlpha) {
|
|
2114
|
+
switch(target){
|
|
2115
|
+
case 2:
|
|
2116
|
+
return hasAlpha ? 3 : 2;
|
|
2117
|
+
case 4:
|
|
2118
|
+
return hasAlpha ? 1 : 0;
|
|
2119
|
+
case 3:
|
|
2120
|
+
return hasAlpha ? 9 : 8;
|
|
2121
|
+
case 7:
|
|
2122
|
+
return 13;
|
|
2123
|
+
case 0:
|
|
2124
|
+
return 10;
|
|
2125
|
+
case 1:
|
|
2126
|
+
return 7;
|
|
2127
|
+
case 8:
|
|
2128
|
+
return 22;
|
|
2129
|
+
case 9:
|
|
2130
|
+
return 23;
|
|
2131
|
+
case 10:
|
|
2132
|
+
return 25;
|
|
2133
2133
|
}
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
*/ AnimationChannelTargetPath["ROTATION"] = "rotation";
|
|
2198
|
-
/**
|
|
2199
|
-
* Scale
|
|
2200
|
-
*/ AnimationChannelTargetPath["SCALE"] = "scale";
|
|
2201
|
-
/**
|
|
2202
|
-
* Weights
|
|
2203
|
-
*/ AnimationChannelTargetPath["WEIGHTS"] = "weights";
|
|
2204
|
-
return AnimationChannelTargetPath;
|
|
2205
|
-
}({});
|
|
2206
|
-
/**
|
|
2207
|
-
* Interpolation algorithm
|
|
2208
|
-
*/ var AnimationSamplerInterpolation = /*#__PURE__*/ function(AnimationSamplerInterpolation) {
|
|
2209
|
-
/**
|
|
2210
|
-
* The animated values are linearly interpolated between keyframes
|
|
2211
|
-
*/ AnimationSamplerInterpolation["Linear"] = "LINEAR";
|
|
2212
|
-
/**
|
|
2213
|
-
* The animated values remain constant to the output of the first keyframe, until the next keyframe
|
|
2214
|
-
*/ AnimationSamplerInterpolation["Step"] = "STEP";
|
|
2215
|
-
/**
|
|
2216
|
-
* The animation's interpolation is computed using a cubic spline with specified tangents
|
|
2217
|
-
*/ AnimationSamplerInterpolation["CubicSpine"] = "CUBICSPLINE";
|
|
2218
|
-
return AnimationSamplerInterpolation;
|
|
2219
|
-
}({});
|
|
2220
|
-
/**
|
|
2221
|
-
* A camera's projection. A node can reference a camera to apply a transform to place the camera in the scene
|
|
2222
|
-
*/ var CameraType = /*#__PURE__*/ function(CameraType) {
|
|
2223
|
-
/**
|
|
2224
|
-
* A perspective camera containing properties to create a perspective projection matrix
|
|
2225
|
-
*/ CameraType["PERSPECTIVE"] = "perspective";
|
|
2226
|
-
/**
|
|
2227
|
-
* An orthographic camera containing properties to create an orthographic projection matrix
|
|
2228
|
-
*/ CameraType["ORTHOGRAPHIC"] = "orthographic";
|
|
2229
|
-
return CameraType;
|
|
2230
|
-
}({});
|
|
2231
|
-
/**
|
|
2232
|
-
* The alpha rendering mode of the material
|
|
2233
|
-
*/ var MaterialAlphaMode = /*#__PURE__*/ function(MaterialAlphaMode) {
|
|
2234
|
-
/**
|
|
2235
|
-
* The alpha value is ignored and the rendered output is fully opaque
|
|
2236
|
-
*/ MaterialAlphaMode["OPAQUE"] = "OPAQUE";
|
|
2237
|
-
/**
|
|
2238
|
-
* The rendered output is either fully opaque or fully transparent depending on the alpha value and the specified alpha cutoff value
|
|
2239
|
-
*/ MaterialAlphaMode["MASK"] = "MASK";
|
|
2240
|
-
/**
|
|
2241
|
-
* The alpha value is used to composite the source and destination areas. The rendered output is combined with the background using the normal painting operation (i.e. the Porter and Duff over operator)
|
|
2242
|
-
*/ MaterialAlphaMode["BLEND"] = "BLEND";
|
|
2243
|
-
return MaterialAlphaMode;
|
|
2244
|
-
}({});
|
|
2245
|
-
/**
|
|
2246
|
-
* Magnification filter. Valid values correspond to WebGL enums: 9728 (NEAREST) and 9729 (LINEAR)
|
|
2247
|
-
*/ var TextureMagFilter = /*#__PURE__*/ function(TextureMagFilter) {
|
|
2248
|
-
/**
|
|
2249
|
-
* Nearest
|
|
2250
|
-
*/ TextureMagFilter[TextureMagFilter["NEAREST"] = 9728] = "NEAREST";
|
|
2251
|
-
/**
|
|
2252
|
-
* Linear
|
|
2253
|
-
*/ TextureMagFilter[TextureMagFilter["LINEAR"] = 9729] = "LINEAR";
|
|
2254
|
-
return TextureMagFilter;
|
|
2255
|
-
}({});
|
|
2256
|
-
/**
|
|
2257
|
-
* Minification filter. All valid values correspond to WebGL enums
|
|
2258
|
-
*/ var TextureMinFilter = /*#__PURE__*/ function(TextureMinFilter) {
|
|
2259
|
-
/**
|
|
2260
|
-
* Nearest
|
|
2261
|
-
*/ TextureMinFilter[TextureMinFilter["NEAREST"] = 9728] = "NEAREST";
|
|
2262
|
-
/**
|
|
2263
|
-
* Linear
|
|
2264
|
-
*/ TextureMinFilter[TextureMinFilter["LINEAR"] = 9729] = "LINEAR";
|
|
2265
|
-
/**
|
|
2266
|
-
* Nearest Mip-Map Nearest
|
|
2267
|
-
*/ TextureMinFilter[TextureMinFilter["NEAREST_MIPMAP_NEAREST"] = 9984] = "NEAREST_MIPMAP_NEAREST";
|
|
2268
|
-
/**
|
|
2269
|
-
* Linear Mipmap Nearest
|
|
2270
|
-
*/ TextureMinFilter[TextureMinFilter["LINEAR_MIPMAP_NEAREST"] = 9985] = "LINEAR_MIPMAP_NEAREST";
|
|
2271
|
-
/**
|
|
2272
|
-
* Nearest Mipmap Linear
|
|
2273
|
-
*/ TextureMinFilter[TextureMinFilter["NEAREST_MIPMAP_LINEAR"] = 9986] = "NEAREST_MIPMAP_LINEAR";
|
|
2274
|
-
/**
|
|
2275
|
-
* Linear Mipmap Linear
|
|
2276
|
-
*/ TextureMinFilter[TextureMinFilter["LINEAR_MIPMAP_LINEAR"] = 9987] = "LINEAR_MIPMAP_LINEAR";
|
|
2277
|
-
return TextureMinFilter;
|
|
2278
|
-
}({});
|
|
2279
|
-
/**
|
|
2280
|
-
* S (U) wrapping mode. All valid values correspond to WebGL enums
|
|
2281
|
-
*/ var TextureWrapMode = /*#__PURE__*/ function(TextureWrapMode) {
|
|
2282
|
-
/**
|
|
2283
|
-
* Clamp to Edge
|
|
2284
|
-
*/ TextureWrapMode[TextureWrapMode["CLAMP_TO_EDGE"] = 33071] = "CLAMP_TO_EDGE";
|
|
2285
|
-
/**
|
|
2286
|
-
* Mirrored Repeat
|
|
2287
|
-
*/ TextureWrapMode[TextureWrapMode["MIRRORED_REPEAT"] = 33648] = "MIRRORED_REPEAT";
|
|
2288
|
-
/**
|
|
2289
|
-
* Repeat
|
|
2290
|
-
*/ TextureWrapMode[TextureWrapMode["REPEAT"] = 10497] = "REPEAT";
|
|
2291
|
-
return TextureWrapMode;
|
|
2292
|
-
}({});
|
|
2293
|
-
|
|
2294
|
-
/**
|
|
2295
|
-
* @internal
|
|
2296
|
-
*/ var GLTFParserContext = /*#__PURE__*/ function() {
|
|
2297
|
-
function GLTFParserContext(glTFResource, resourceManager, params) {
|
|
2298
|
-
var _this = this;
|
|
2299
|
-
this.glTFResource = glTFResource;
|
|
2300
|
-
this.resourceManager = resourceManager;
|
|
2301
|
-
this.params = params;
|
|
2302
|
-
this.accessorBufferCache = {};
|
|
2303
|
-
this.needAnimatorController = false;
|
|
2304
|
-
this./** @internal */ _getPromises = [];
|
|
2305
|
-
this._resourceCache = new Map();
|
|
2306
|
-
this._progress = {
|
|
2307
|
-
taskDetail: {},
|
|
2308
|
-
taskComplete: {
|
|
2309
|
-
loaded: 0,
|
|
2310
|
-
total: 0
|
|
2134
|
+
}
|
|
2135
|
+
function concat(arrays) {
|
|
2136
|
+
if (arrays.length === 1) return arrays[0];
|
|
2137
|
+
var totalByteLength = 0;
|
|
2138
|
+
for(var i = 0; i < arrays.length; i++){
|
|
2139
|
+
totalByteLength += arrays[i].byteLength;
|
|
2140
|
+
}
|
|
2141
|
+
var result = new Uint8Array(totalByteLength);
|
|
2142
|
+
var byteOffset = 0;
|
|
2143
|
+
for(var i1 = 0; i1 < arrays.length; i1++){
|
|
2144
|
+
result.set(arrays[i1], byteOffset);
|
|
2145
|
+
byteOffset += arrays[i1].byteLength;
|
|
2146
|
+
}
|
|
2147
|
+
return result;
|
|
2148
|
+
}
|
|
2149
|
+
var ktx2File = new KTX2File(new Uint8Array(buffer));
|
|
2150
|
+
function cleanup() {
|
|
2151
|
+
ktx2File.close();
|
|
2152
|
+
ktx2File.delete();
|
|
2153
|
+
}
|
|
2154
|
+
if (!ktx2File.isValid()) {
|
|
2155
|
+
cleanup();
|
|
2156
|
+
throw new Error("Invalid or unsupported .ktx2 file");
|
|
2157
|
+
}
|
|
2158
|
+
if (!ktx2File.startTranscoding()) {
|
|
2159
|
+
cleanup();
|
|
2160
|
+
throw new Error("KTX2 startTranscoding failed");
|
|
2161
|
+
}
|
|
2162
|
+
var width = ktx2File.getWidth();
|
|
2163
|
+
var height = ktx2File.getHeight();
|
|
2164
|
+
var layerCount = ktx2File.getLayers() || 1;
|
|
2165
|
+
var levelCount = ktx2File.getLevels();
|
|
2166
|
+
var hasAlpha = ktx2File.getHasAlpha();
|
|
2167
|
+
var faceCount = ktx2File.getFaces();
|
|
2168
|
+
var format = getTranscodeFormatFromTarget(targetFormat, hasAlpha);
|
|
2169
|
+
var faces = new Array(faceCount);
|
|
2170
|
+
var isBC = format === 2 || format === 3 || format === 7;
|
|
2171
|
+
for(var face = 0; face < faceCount; face++){
|
|
2172
|
+
var mipmaps = new Array(levelCount);
|
|
2173
|
+
for(var mip = 0; mip < levelCount; mip++){
|
|
2174
|
+
var layerMips = new Array(layerCount);
|
|
2175
|
+
var mipWidth = void 0, mipHeight = void 0;
|
|
2176
|
+
for(var layer = 0; layer < layerCount; layer++){
|
|
2177
|
+
var levelInfo = ktx2File.getImageLevelInfo(mip, layer, face);
|
|
2178
|
+
// see: https://github.com/KhronosGroup/KTX-Software/issues/254
|
|
2179
|
+
if (isBC && mip === 0 && (width !== levelInfo.width || height !== levelInfo.height)) {
|
|
2180
|
+
width = mipWidth = levelInfo.width;
|
|
2181
|
+
height = mipHeight = levelInfo.height;
|
|
2182
|
+
console.warn("KTX2 transcode to BC will resize to width: " + width + ", height: " + height + ". You'd better use an image whose size if multiple of 4.");
|
|
2183
|
+
} else {
|
|
2184
|
+
mipWidth = levelInfo.origWidth;
|
|
2185
|
+
mipHeight = levelInfo.origHeight;
|
|
2186
|
+
}
|
|
2187
|
+
var dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, format));
|
|
2188
|
+
var status = ktx2File.transcodeImage(dst, mip, layer, face, format, 0, -1, -1);
|
|
2189
|
+
if (targetFormat === 10) {
|
|
2190
|
+
dst = new Uint16Array(dst.buffer, dst.byteOffset, dst.byteLength / Uint16Array.BYTES_PER_ELEMENT);
|
|
2191
|
+
}
|
|
2192
|
+
if (!status) {
|
|
2193
|
+
cleanup();
|
|
2194
|
+
throw new Error("transcodeImage failed.");
|
|
2195
|
+
}
|
|
2196
|
+
layerMips[layer] = dst;
|
|
2311
2197
|
}
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
detail.total = total;
|
|
2320
|
-
_this._setTaskDetailProgress(url, loaded, total);
|
|
2321
|
-
};
|
|
2322
|
-
this.contentRestorer = new GLTFContentRestorer(glTFResource);
|
|
2198
|
+
mipmaps[mip] = {
|
|
2199
|
+
data: concat(layerMips),
|
|
2200
|
+
width: mipWidth,
|
|
2201
|
+
height: mipHeight
|
|
2202
|
+
};
|
|
2203
|
+
}
|
|
2204
|
+
faces[face] = mipmaps;
|
|
2323
2205
|
}
|
|
2324
|
-
|
|
2325
|
-
|
|
2206
|
+
cleanup();
|
|
2207
|
+
return {
|
|
2208
|
+
faces: faces,
|
|
2209
|
+
width: width,
|
|
2210
|
+
height: height,
|
|
2211
|
+
hasAlpha: hasAlpha,
|
|
2212
|
+
faceCount: faceCount,
|
|
2213
|
+
format: format
|
|
2214
|
+
};
|
|
2215
|
+
}
|
|
2216
|
+
|
|
2217
|
+
/** @internal */ var BinomialLLCTranscoder = /*#__PURE__*/ function(AbstractTranscoder) {
|
|
2218
|
+
_inherits(BinomialLLCTranscoder, AbstractTranscoder);
|
|
2219
|
+
function BinomialLLCTranscoder(workerLimitCount) {
|
|
2220
|
+
return AbstractTranscoder.call(this, workerLimitCount) || this;
|
|
2221
|
+
}
|
|
2222
|
+
var _proto = BinomialLLCTranscoder.prototype;
|
|
2223
|
+
_proto._initTranscodeWorkerPool = function _initTranscodeWorkerPool() {
|
|
2326
2224
|
var _this = this;
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
resource = type === 8 ? glTFItems.map(function(_, index) {
|
|
2344
|
-
return _this.get(type, index);
|
|
2345
|
-
}) : AssetPromise.all(glTFItems.map(function(_, index) {
|
|
2346
|
-
return _this.get(type, index);
|
|
2225
|
+
return Promise.all([
|
|
2226
|
+
fetch("https://mdn.alipayobjects.com/rms/afts/file/A*J8IrSL8WE8EAAAAAQ6AAAAgAehQnAQ/basis_transcoder.js").then(function(res) {
|
|
2227
|
+
return res.text();
|
|
2228
|
+
}),
|
|
2229
|
+
fetch("https://mdn.alipayobjects.com/rms/afts/file/A*F3duSLqOP2sAAAAAXjAAAAgAehQnAQ/basis_transcoder.wasm").then(function(res) {
|
|
2230
|
+
return res.arrayBuffer();
|
|
2231
|
+
})
|
|
2232
|
+
]).then(function(param) {
|
|
2233
|
+
var jsCode = param[0], wasmBuffer = param[1];
|
|
2234
|
+
if (_this.workerLimitCount === 0) {
|
|
2235
|
+
return new Promise(function(resolve, reject) {
|
|
2236
|
+
var scriptDom = document.createElement("script");
|
|
2237
|
+
scriptDom.src = URL.createObjectURL(new Blob([
|
|
2238
|
+
jsCode
|
|
2239
|
+
], {
|
|
2240
|
+
type: "application/javascript"
|
|
2347
2241
|
}));
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2242
|
+
document.body.appendChild(scriptDom);
|
|
2243
|
+
scriptDom.onload = function() {
|
|
2244
|
+
init(wasmBuffer).then(function() {
|
|
2245
|
+
resolve(null);
|
|
2246
|
+
});
|
|
2247
|
+
};
|
|
2248
|
+
scriptDom.onerror = function() {
|
|
2249
|
+
reject();
|
|
2250
|
+
};
|
|
2251
|
+
});
|
|
2352
2252
|
} else {
|
|
2353
|
-
|
|
2253
|
+
var funcCode = TranscodeWorkerCode.toString();
|
|
2254
|
+
var transcodeString = funcCode.substring(funcCode.indexOf("{"), funcCode.lastIndexOf("}") + 1);
|
|
2255
|
+
var workerCode = "\n " + jsCode + "\n " + transcode.toString() + "\n " + transcodeString + "\n ";
|
|
2256
|
+
var workerURL = URL.createObjectURL(new Blob([
|
|
2257
|
+
workerCode
|
|
2258
|
+
], {
|
|
2259
|
+
type: "application/javascript"
|
|
2260
|
+
}));
|
|
2261
|
+
return _this._createTranscodePool(workerURL, wasmBuffer);
|
|
2354
2262
|
}
|
|
2263
|
+
});
|
|
2264
|
+
};
|
|
2265
|
+
_proto.transcode = function transcode1(buffer, format) {
|
|
2266
|
+
if (this.workerLimitCount === 0) {
|
|
2267
|
+
return init().then(function(KTX2File) {
|
|
2268
|
+
return transcode(buffer, format, KTX2File);
|
|
2269
|
+
});
|
|
2355
2270
|
} else {
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2271
|
+
return this._transcodeWorkerPool.postMessage({
|
|
2272
|
+
buffer: buffer,
|
|
2273
|
+
format: format,
|
|
2274
|
+
type: "transcode"
|
|
2275
|
+
});
|
|
2361
2276
|
}
|
|
2362
|
-
cache.set(cacheKey, resource);
|
|
2363
|
-
return resource;
|
|
2364
2277
|
};
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
var animator = glTFResource._defaultSceneRoot.addComponent(Animator);
|
|
2384
|
-
animator.animatorController = animatorController;
|
|
2385
|
-
}
|
|
2386
|
-
_this.resourceManager.addContentRestorer(_this.contentRestorer);
|
|
2387
|
-
return glTFResource;
|
|
2388
|
-
});
|
|
2389
|
-
});
|
|
2390
|
-
this._addTaskCompletePromise(promise);
|
|
2391
|
-
return promise;
|
|
2278
|
+
return BinomialLLCTranscoder;
|
|
2279
|
+
}(AbstractTranscoder);
|
|
2280
|
+
|
|
2281
|
+
var KTX2Loader = /*#__PURE__*/ function(Loader) {
|
|
2282
|
+
_inherits(KTX2Loader, Loader);
|
|
2283
|
+
function KTX2Loader() {
|
|
2284
|
+
return Loader.apply(this, arguments) || this;
|
|
2285
|
+
}
|
|
2286
|
+
var _proto = KTX2Loader.prototype;
|
|
2287
|
+
_proto.initialize = function initialize(_, configuration) {
|
|
2288
|
+
if (configuration.ktx2Loader) {
|
|
2289
|
+
var options = configuration.ktx2Loader;
|
|
2290
|
+
if (options.priorityFormats) {
|
|
2291
|
+
KTX2Loader._priorityFormats["etc1s"] = options.priorityFormats;
|
|
2292
|
+
KTX2Loader._priorityFormats["uastc"] = options.priorityFormats;
|
|
2293
|
+
}
|
|
2294
|
+
return KTX2Loader._getBinomialLLCTranscoder(options.workerCount).init();
|
|
2295
|
+
}
|
|
2392
2296
|
};
|
|
2393
2297
|
/**
|
|
2394
2298
|
* @internal
|
|
2395
|
-
*/ _proto.
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
taskPromise.finally(function() {
|
|
2400
|
-
_this._setTaskCompleteProgress(++task.loaded, task.total);
|
|
2401
|
-
}).catch(function(e) {
|
|
2402
|
-
// Need catch to avoid unhandled rejection
|
|
2403
|
-
});
|
|
2404
|
-
};
|
|
2405
|
-
_proto._handleSubAsset = function _handleSubAsset(resource, type, index) {
|
|
2406
|
-
var _this = this;
|
|
2407
|
-
var glTFResourceKey = glTFResourceMap[type];
|
|
2408
|
-
if (type === 8) {
|
|
2409
|
-
var _this_glTFResource, _glTFResourceKey;
|
|
2410
|
-
((_this_glTFResource = this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = resource;
|
|
2411
|
-
} else {
|
|
2412
|
-
var url = this.glTFResource.url;
|
|
2413
|
-
resource.then(function(item) {
|
|
2414
|
-
if (index == undefined) {
|
|
2415
|
-
_this.glTFResource[glTFResourceKey] = item;
|
|
2416
|
-
} else {
|
|
2417
|
-
var _this_glTFResource, _glTFResourceKey;
|
|
2418
|
-
((_this_glTFResource = _this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = item;
|
|
2419
|
-
}
|
|
2420
|
-
if (type === 7) {
|
|
2421
|
-
for(var i = 0, length = item.length; i < length; i++){
|
|
2422
|
-
var mesh = item[i];
|
|
2423
|
-
// @ts-ignore
|
|
2424
|
-
_this.resourceManager._onSubAssetSuccess(url, glTFResourceKey + "[" + index + "][" + i + "]", mesh);
|
|
2425
|
-
}
|
|
2426
|
-
} else {
|
|
2427
|
-
// @ts-ignore
|
|
2428
|
-
_this.resourceManager._onSubAssetSuccess(url, "" + glTFResourceKey + (index === undefined ? "" : "[" + index + "]"), item);
|
|
2429
|
-
var _this_glTF_scene;
|
|
2430
|
-
if (type === 2 && ((_this_glTF_scene = _this.glTF.scene) != null ? _this_glTF_scene : 0) === index) {
|
|
2431
|
-
// @ts-ignore
|
|
2432
|
-
_this.resourceManager._onSubAssetSuccess(url, "defaultSceneRoot", item);
|
|
2433
|
-
}
|
|
2434
|
-
}
|
|
2435
|
-
}).catch(function(e) {
|
|
2436
|
-
Logger.error("GLTFParserContext", "Failed to load " + glTFResourceKey + " " + index + ": " + e);
|
|
2299
|
+
*/ _proto.load = function load(item, resourceManager) {
|
|
2300
|
+
return new AssetPromise(function(resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) {
|
|
2301
|
+
var requestConfig = _extends({}, item, {
|
|
2302
|
+
type: "arraybuffer"
|
|
2437
2303
|
});
|
|
2438
|
-
|
|
2304
|
+
var url = item.url;
|
|
2305
|
+
resourceManager// @ts-ignore
|
|
2306
|
+
._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(buffer) {
|
|
2307
|
+
return KTX2Loader._parseBuffer(new Uint8Array(buffer), resourceManager.engine, item.params).then(function(param) {
|
|
2308
|
+
var ktx2Container = param.ktx2Container, engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
|
|
2309
|
+
return KTX2Loader._createTextureByBuffer(engine, ktx2Container.isSRGB, result, targetFormat, params);
|
|
2310
|
+
}).then(function(texture) {
|
|
2311
|
+
resourceManager.addContentRestorer(new KTX2ContentRestorer(texture, url, requestConfig));
|
|
2312
|
+
resolve(texture);
|
|
2313
|
+
});
|
|
2314
|
+
}).catch(reject);
|
|
2315
|
+
});
|
|
2439
2316
|
};
|
|
2440
|
-
|
|
2441
|
-
|
|
2317
|
+
/**
|
|
2318
|
+
* Release ktx2 transcoder worker.
|
|
2319
|
+
* @remarks If use loader after releasing, we should release again.
|
|
2320
|
+
*/ KTX2Loader.release = function release() {
|
|
2321
|
+
if (this._binomialLLCTranscoder) this._binomialLLCTranscoder.destroy();
|
|
2322
|
+
this._binomialLLCTranscoder = null;
|
|
2442
2323
|
};
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
GLTFParserType[GLTFParserType["Texture"] = 5] = "Texture";
|
|
2461
|
-
GLTFParserType[GLTFParserType["Material"] = 6] = "Material";
|
|
2462
|
-
GLTFParserType[GLTFParserType["Mesh"] = 7] = "Mesh";
|
|
2463
|
-
GLTFParserType[GLTFParserType["Entity"] = 8] = "Entity";
|
|
2464
|
-
GLTFParserType[GLTFParserType["Skin"] = 9] = "Skin";
|
|
2465
|
-
GLTFParserType[GLTFParserType["Animation"] = 10] = "Animation";
|
|
2466
|
-
GLTFParserType[GLTFParserType["AnimatorController"] = 11] = "AnimatorController";
|
|
2467
|
-
return GLTFParserType;
|
|
2468
|
-
}({});
|
|
2469
|
-
var _obj$2;
|
|
2470
|
-
var glTFSchemaMap = (_obj$2 = {}, _obj$2[2] = "scenes", _obj$2[3] = "buffers", _obj$2[5] = "textures", _obj$2[6] = "materials", _obj$2[7] = "meshes", _obj$2[8] = "nodes", _obj$2[9] = "skins", _obj$2[10] = "animations", _obj$2[4] = "bufferViews", _obj$2);
|
|
2471
|
-
var _obj1$1;
|
|
2472
|
-
var glTFResourceMap = (_obj1$1 = {}, _obj1$1[2] = "_sceneRoots", _obj1$1[5] = "textures", _obj1$1[6] = "materials", _obj1$1[7] = "meshes", _obj1$1[8] = "entities", _obj1$1[9] = "skins", _obj1$1[10] = "animations", _obj1$1[11] = "animatorController", _obj1$1);
|
|
2473
|
-
function registerGLTFParser(pipeline) {
|
|
2474
|
-
return function(Parser) {
|
|
2475
|
-
var parser = new Parser();
|
|
2476
|
-
GLTFParserContext.addParser(pipeline, parser);
|
|
2324
|
+
/** @internal */ KTX2Loader._parseBuffer = function _parseBuffer(buffer, engine, params) {
|
|
2325
|
+
var ktx2Container = new KTX2Container(buffer);
|
|
2326
|
+
var _params_priorityFormats;
|
|
2327
|
+
var formatPriorities = (_params_priorityFormats = params == null ? void 0 : params.priorityFormats) != null ? _params_priorityFormats : KTX2Loader._priorityFormats[ktx2Container.colorModel];
|
|
2328
|
+
var targetFormat = KTX2Loader._decideTargetFormat(engine, ktx2Container, formatPriorities);
|
|
2329
|
+
var binomialLLCWorker = KTX2Loader._getBinomialLLCTranscoder();
|
|
2330
|
+
return binomialLLCWorker.init().then(function() {
|
|
2331
|
+
return binomialLLCWorker.transcode(buffer, targetFormat);
|
|
2332
|
+
}).then(function(result) {
|
|
2333
|
+
return {
|
|
2334
|
+
ktx2Container: ktx2Container,
|
|
2335
|
+
engine: engine,
|
|
2336
|
+
result: result,
|
|
2337
|
+
targetFormat: targetFormat,
|
|
2338
|
+
params: ktx2Container.keyValue["GalaceanTextureParams"]
|
|
2339
|
+
};
|
|
2340
|
+
});
|
|
2477
2341
|
};
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2342
|
+
/** @internal */ KTX2Loader._createTextureByBuffer = function _createTextureByBuffer(engine, isSRGB, transcodeResult, targetFormat, params, restoredTexture) {
|
|
2343
|
+
var width = transcodeResult.width, height = transcodeResult.height, faces = transcodeResult.faces;
|
|
2344
|
+
var faceCount = faces.length;
|
|
2345
|
+
var mipmaps = faces[0];
|
|
2346
|
+
var mipmap = mipmaps.length > 1;
|
|
2347
|
+
var engineFormat = this._getEngineTextureFormat(targetFormat, transcodeResult);
|
|
2348
|
+
var texture;
|
|
2349
|
+
if (faceCount !== 6) {
|
|
2350
|
+
texture = restoredTexture || new Texture2D(engine, width, height, engineFormat, mipmap, isSRGB);
|
|
2351
|
+
for(var mipLevel = 0; mipLevel < mipmaps.length; mipLevel++){
|
|
2352
|
+
var data = mipmaps[mipLevel].data;
|
|
2353
|
+
texture.setPixelBuffer(data, mipLevel);
|
|
2354
|
+
}
|
|
2355
|
+
} else {
|
|
2356
|
+
texture = restoredTexture || new TextureCube(engine, height, engineFormat, mipmap, isSRGB);
|
|
2357
|
+
for(var i = 0; i < faces.length; i++){
|
|
2358
|
+
var faceData = faces[i];
|
|
2359
|
+
for(var mipLevel1 = 0; mipLevel1 < mipmaps.length; mipLevel1++){
|
|
2360
|
+
texture.setPixelBuffer(TextureCubeFace.PositiveX + i, faceData[mipLevel1].data, mipLevel1);
|
|
2361
|
+
}
|
|
2362
|
+
}
|
|
2489
2363
|
}
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
for(var i = 0; i < bufferLen; i += 3){
|
|
2496
|
-
array[i / 3] = new Vector3(buffer[i], buffer[i + 1], buffer[i + 2]);
|
|
2364
|
+
if (params) {
|
|
2365
|
+
texture.wrapModeU = params[0];
|
|
2366
|
+
texture.wrapModeV = params[1];
|
|
2367
|
+
texture.filterMode = params[2];
|
|
2368
|
+
texture.anisoLevel = params[3];
|
|
2497
2369
|
}
|
|
2498
|
-
return
|
|
2370
|
+
return texture;
|
|
2499
2371
|
};
|
|
2500
|
-
|
|
2501
|
-
var
|
|
2502
|
-
var
|
|
2503
|
-
|
|
2504
|
-
|
|
2372
|
+
KTX2Loader._decideTargetFormat = function _decideTargetFormat(engine, ktx2Container, priorityFormats) {
|
|
2373
|
+
var renderer = engine._hardwareRenderer;
|
|
2374
|
+
var isSRGB = ktx2Container.isSRGB, pixelWidth = ktx2Container.pixelWidth, pixelHeight = ktx2Container.pixelHeight;
|
|
2375
|
+
var targetFormat = this._detectSupportedFormat(renderer, priorityFormats, isSRGB);
|
|
2376
|
+
if (targetFormat === KTX2TargetFormat.PVRTC && (!MathUtil.isPowerOf2(pixelWidth) || !MathUtil.isPowerOf2(pixelHeight) || pixelWidth !== pixelHeight)) {
|
|
2377
|
+
Logger.warn("PVRTC image need power of 2 and width===height, downgrade to RGBA8");
|
|
2378
|
+
return KTX2TargetFormat.R8G8B8A8;
|
|
2505
2379
|
}
|
|
2506
|
-
|
|
2380
|
+
if (targetFormat === null) {
|
|
2381
|
+
Logger.warn("Can't support any compressed texture, downgrade to RGBA8");
|
|
2382
|
+
return KTX2TargetFormat.R8G8B8A8;
|
|
2383
|
+
}
|
|
2384
|
+
return targetFormat;
|
|
2507
2385
|
};
|
|
2508
|
-
|
|
2509
|
-
var
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2386
|
+
KTX2Loader._detectSupportedFormat = function _detectSupportedFormat(renderer, priorityFormats, isSRGB) {
|
|
2387
|
+
for(var i = 0; i < priorityFormats.length; i++){
|
|
2388
|
+
var _this__capabilityMap_format;
|
|
2389
|
+
var format = priorityFormats[i];
|
|
2390
|
+
var capabilities = (_this__capabilityMap_format = this._capabilityMap[format]) == null ? void 0 : _this__capabilityMap_format[isSRGB ? DFDTransferFunction.sRGB : DFDTransferFunction.linear];
|
|
2391
|
+
if (capabilities) {
|
|
2392
|
+
for(var j = 0; j < capabilities.length; j++){
|
|
2393
|
+
if (renderer.canIUse(capabilities[j])) {
|
|
2394
|
+
return format;
|
|
2395
|
+
}
|
|
2396
|
+
}
|
|
2397
|
+
} else {
|
|
2398
|
+
switch(priorityFormats[i]){
|
|
2399
|
+
case KTX2TargetFormat.R8G8B8A8:
|
|
2400
|
+
return format;
|
|
2401
|
+
case KTX2TargetFormat.R8:
|
|
2402
|
+
case KTX2TargetFormat.R8G8:
|
|
2403
|
+
if (renderer.isWebGL2) return format;
|
|
2404
|
+
}
|
|
2518
2405
|
}
|
|
2519
2406
|
}
|
|
2520
|
-
return
|
|
2407
|
+
return null;
|
|
2521
2408
|
};
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
case
|
|
2531
|
-
return
|
|
2532
|
-
case
|
|
2533
|
-
return
|
|
2534
|
-
case
|
|
2535
|
-
return
|
|
2536
|
-
case
|
|
2537
|
-
return
|
|
2538
|
-
case
|
|
2539
|
-
return
|
|
2409
|
+
KTX2Loader._getBinomialLLCTranscoder = function _getBinomialLLCTranscoder(workerCount) {
|
|
2410
|
+
if (workerCount === void 0) workerCount = 4;
|
|
2411
|
+
var _this__binomialLLCTranscoder;
|
|
2412
|
+
return (_this__binomialLLCTranscoder = this._binomialLLCTranscoder) != null ? _this__binomialLLCTranscoder : this._binomialLLCTranscoder = new BinomialLLCTranscoder(workerCount);
|
|
2413
|
+
};
|
|
2414
|
+
KTX2Loader._getEngineTextureFormat = function _getEngineTextureFormat(basisFormat, transcodeResult) {
|
|
2415
|
+
var hasAlpha = transcodeResult.hasAlpha;
|
|
2416
|
+
switch(basisFormat){
|
|
2417
|
+
case KTX2TargetFormat.ASTC:
|
|
2418
|
+
return TextureFormat.ASTC_4x4;
|
|
2419
|
+
case KTX2TargetFormat.ETC:
|
|
2420
|
+
return hasAlpha ? TextureFormat.ETC2_RGBA8 : TextureFormat.ETC2_RGB;
|
|
2421
|
+
case KTX2TargetFormat.BC7:
|
|
2422
|
+
return TextureFormat.BC7;
|
|
2423
|
+
case KTX2TargetFormat.BC1_BC3:
|
|
2424
|
+
return hasAlpha ? TextureFormat.BC3 : TextureFormat.BC1;
|
|
2425
|
+
case KTX2TargetFormat.PVRTC:
|
|
2426
|
+
return hasAlpha ? TextureFormat.PVRTC_RGBA4 : TextureFormat.PVRTC_RGB4;
|
|
2427
|
+
case KTX2TargetFormat.R8G8B8A8:
|
|
2428
|
+
return TextureFormat.R8G8B8A8;
|
|
2429
|
+
case KTX2TargetFormat.BC6H:
|
|
2430
|
+
return TextureFormat.BC6H;
|
|
2431
|
+
case KTX2TargetFormat.ASTC_HDR_4x4:
|
|
2432
|
+
return TextureFormat.ASTC_4x4;
|
|
2433
|
+
case KTX2TargetFormat.R16G16B16A16:
|
|
2434
|
+
return TextureFormat.R16G16B16A16;
|
|
2540
2435
|
}
|
|
2541
2436
|
};
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2437
|
+
return KTX2Loader;
|
|
2438
|
+
}(Loader);
|
|
2439
|
+
var _obj$2;
|
|
2440
|
+
KTX2Loader._priorityFormats = (_obj$2 = {}, _obj$2[ColorModel.ETC1S] = [
|
|
2441
|
+
KTX2TargetFormat.ETC,
|
|
2442
|
+
KTX2TargetFormat.BC7,
|
|
2443
|
+
KTX2TargetFormat.ASTC,
|
|
2444
|
+
KTX2TargetFormat.BC1_BC3,
|
|
2445
|
+
KTX2TargetFormat.PVRTC
|
|
2446
|
+
], _obj$2[ColorModel.UASTC_LDR_4X4] = [
|
|
2447
|
+
KTX2TargetFormat.ASTC,
|
|
2448
|
+
KTX2TargetFormat.BC7,
|
|
2449
|
+
KTX2TargetFormat.ETC,
|
|
2450
|
+
KTX2TargetFormat.BC1_BC3,
|
|
2451
|
+
KTX2TargetFormat.PVRTC
|
|
2452
|
+
], _obj$2[ColorModel.UASTC_HDR_4X4] = [
|
|
2453
|
+
KTX2TargetFormat.ASTC_HDR_4x4,
|
|
2454
|
+
KTX2TargetFormat.BC6H,
|
|
2455
|
+
KTX2TargetFormat.R16G16B16A16
|
|
2456
|
+
], _obj$2);
|
|
2457
|
+
var _obj1$1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9;
|
|
2458
|
+
KTX2Loader._capabilityMap = (_obj9 = {}, _obj9[KTX2TargetFormat.ASTC] = (_obj1$1 = {}, _obj1$1[DFDTransferFunction.linear] = [
|
|
2459
|
+
GLCapabilityType.astc,
|
|
2460
|
+
GLCapabilityType.astc_webkit
|
|
2461
|
+
], _obj1$1[DFDTransferFunction.sRGB] = [
|
|
2462
|
+
GLCapabilityType.astc,
|
|
2463
|
+
GLCapabilityType.astc_webkit
|
|
2464
|
+
], _obj1$1), _obj9[KTX2TargetFormat.ETC] = (_obj2 = {}, _obj2[DFDTransferFunction.linear] = [
|
|
2465
|
+
GLCapabilityType.etc,
|
|
2466
|
+
GLCapabilityType.etc_webkit
|
|
2467
|
+
], _obj2[DFDTransferFunction.sRGB] = [
|
|
2468
|
+
GLCapabilityType.etc,
|
|
2469
|
+
GLCapabilityType.etc_webkit
|
|
2470
|
+
], _obj2), _obj9[KTX2TargetFormat.BC7] = (_obj3 = {}, _obj3[DFDTransferFunction.linear] = [
|
|
2471
|
+
GLCapabilityType.bptc
|
|
2472
|
+
], _obj3[DFDTransferFunction.sRGB] = [
|
|
2473
|
+
GLCapabilityType.bptc
|
|
2474
|
+
], _obj3), _obj9[KTX2TargetFormat.BC1_BC3] = (_obj4 = {}, _obj4[DFDTransferFunction.linear] = [
|
|
2475
|
+
GLCapabilityType.s3tc
|
|
2476
|
+
], _obj4[DFDTransferFunction.sRGB] = [
|
|
2477
|
+
GLCapabilityType.s3tc_srgb
|
|
2478
|
+
], _obj4), _obj9[KTX2TargetFormat.BC6H] = (_obj5 = {}, _obj5[DFDTransferFunction.linear] = [
|
|
2479
|
+
GLCapabilityType.bptc
|
|
2480
|
+
], _obj5), _obj9[KTX2TargetFormat.ASTC_HDR_4x4] = (_obj6 = {}, _obj6[DFDTransferFunction.linear] = [
|
|
2481
|
+
GLCapabilityType.astc_hdr
|
|
2482
|
+
], _obj6), _obj9[KTX2TargetFormat.R16G16B16A16] = (_obj7 = {}, _obj7[DFDTransferFunction.linear] = [
|
|
2483
|
+
GLCapabilityType.textureHalfFloat
|
|
2484
|
+
], _obj7), _obj9[KTX2TargetFormat.PVRTC] = (_obj8 = {}, _obj8[DFDTransferFunction.linear] = [
|
|
2485
|
+
GLCapabilityType.pvrtc,
|
|
2486
|
+
GLCapabilityType.pvrtc_webkit
|
|
2487
|
+
], _obj8), _obj9);
|
|
2488
|
+
KTX2Loader = __decorate([
|
|
2489
|
+
resourceLoader(AssetType.KTX2, [
|
|
2490
|
+
"ktx2"
|
|
2491
|
+
])
|
|
2492
|
+
], KTX2Loader);
|
|
2493
|
+
var KTX2ContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
2494
|
+
_inherits(KTX2ContentRestorer, ContentRestorer);
|
|
2495
|
+
function KTX2ContentRestorer(resource, url, requestConfig) {
|
|
2496
|
+
var _this;
|
|
2497
|
+
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
2498
|
+
return _this;
|
|
2499
|
+
}
|
|
2500
|
+
var _proto = KTX2ContentRestorer.prototype;
|
|
2501
|
+
_proto.restoreContent = function restoreContent() {
|
|
2502
|
+
var _this = this;
|
|
2503
|
+
var _this1 = this, resource = _this1.resource, requestConfig = _this1.requestConfig;
|
|
2504
|
+
var engine = resource.engine;
|
|
2505
|
+
return new AssetPromise(function(resolve, reject) {
|
|
2506
|
+
engine.resourceManager// @ts-ignore
|
|
2507
|
+
._request(_this.url, requestConfig).then(function(buffer) {
|
|
2508
|
+
return KTX2Loader._parseBuffer(new Uint8Array(buffer), engine, requestConfig.params).then(function(param) {
|
|
2509
|
+
var ktx2Container = param.ktx2Container, engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
|
|
2510
|
+
return KTX2Loader._createTextureByBuffer(engine, ktx2Container.isSRGB, result, targetFormat, params, resource);
|
|
2511
|
+
});
|
|
2512
|
+
}).then(resolve).catch(reject);
|
|
2513
|
+
});
|
|
2514
|
+
};
|
|
2515
|
+
return KTX2ContentRestorer;
|
|
2516
|
+
}(ContentRestorer);
|
|
2517
|
+
|
|
2518
|
+
var AmbientLightLoader = /*#__PURE__*/ function(Loader) {
|
|
2519
|
+
_inherits(AmbientLightLoader, Loader);
|
|
2520
|
+
function AmbientLightLoader() {
|
|
2521
|
+
return Loader.apply(this, arguments) || this;
|
|
2522
|
+
}
|
|
2523
|
+
var _proto = AmbientLightLoader.prototype;
|
|
2524
|
+
_proto.load = function load(item, resourceManager) {
|
|
2525
|
+
return new AssetPromise(function(resolve, reject) {
|
|
2526
|
+
var requestConfig = _extends({}, item, {
|
|
2527
|
+
type: "arraybuffer"
|
|
2528
|
+
});
|
|
2529
|
+
var engine = resourceManager.engine;
|
|
2530
|
+
var url = item.url;
|
|
2531
|
+
resourceManager// @ts-ignore
|
|
2532
|
+
._request(url, requestConfig).then(function(buffer) {
|
|
2533
|
+
var header = FileHeader.decode(buffer);
|
|
2534
|
+
var dataOffset = header.headerLength;
|
|
2535
|
+
var sh = new SphericalHarmonics3();
|
|
2536
|
+
sh.copyFromArray(new Float32Array(buffer, dataOffset, 27));
|
|
2537
|
+
var textureOffset = dataOffset + AmbientLightLoader._shByteLength;
|
|
2538
|
+
return AmbientLightLoader._parseTexture(engine, buffer, textureOffset, header.dataLength - AmbientLightLoader._shByteLength).then(function(specularTexture) {
|
|
2539
|
+
engine.resourceManager.addContentRestorer(new AmbientLightContentRestorer(specularTexture, url, requestConfig));
|
|
2540
|
+
var ambientLight = new AmbientLight(engine);
|
|
2541
|
+
ambientLight.diffuseMode = DiffuseMode.SphericalHarmonics;
|
|
2542
|
+
ambientLight.diffuseSphericalHarmonics = sh;
|
|
2543
|
+
ambientLight.specularTexture = specularTexture;
|
|
2544
|
+
resolve(ambientLight);
|
|
2545
|
+
});
|
|
2546
|
+
}).catch(reject);
|
|
2547
|
+
});
|
|
2548
|
+
};
|
|
2549
|
+
/** @internal */ AmbientLightLoader._parseTexture = function _parseTexture(engine, buffer, textureOffset, textureLength, texture) {
|
|
2550
|
+
if (KTX2Container.checkMagic(buffer, textureOffset)) {
|
|
2551
|
+
var ktx2Data = new Uint8Array(buffer, textureOffset, textureLength);
|
|
2552
|
+
return KTX2Loader._parseBuffer(ktx2Data, engine).then(function(param) {
|
|
2553
|
+
var ktx2Container = param.ktx2Container, _$engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
|
|
2554
|
+
var tex = KTX2Loader._createTextureByBuffer(_$engine, ktx2Container.isSRGB, result, targetFormat, params, texture);
|
|
2555
|
+
tex.filterMode = TextureFilterMode.Trilinear;
|
|
2556
|
+
return tex;
|
|
2557
|
+
});
|
|
2558
|
+
} else {
|
|
2559
|
+
var size = new Uint16Array(buffer, textureOffset, 1)[0];
|
|
2560
|
+
texture || (texture = new TextureCube(engine, size, TextureFormat.R16G16B16A16, true, false));
|
|
2561
|
+
texture.filterMode = TextureFilterMode.Trilinear;
|
|
2562
|
+
var mipmapCount = texture.mipmapCount;
|
|
2563
|
+
var offset = textureOffset + 2;
|
|
2564
|
+
for(var mipLevel = 0; mipLevel < mipmapCount; mipLevel++){
|
|
2565
|
+
var mipSize = size >> mipLevel;
|
|
2566
|
+
for(var face = 0; face < 6; face++){
|
|
2567
|
+
var dataSize = mipSize * mipSize * 4;
|
|
2568
|
+
var data = new Uint16Array(buffer, offset, dataSize);
|
|
2569
|
+
offset += dataSize * 2;
|
|
2570
|
+
texture.setPixelBuffer(TextureCubeFace.PositiveX + face, data, mipLevel);
|
|
2571
|
+
}
|
|
2572
|
+
}
|
|
2573
|
+
return Promise.resolve(texture);
|
|
2558
2574
|
}
|
|
2559
2575
|
};
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2576
|
+
return AmbientLightLoader;
|
|
2577
|
+
}(Loader);
|
|
2578
|
+
AmbientLightLoader._shByteLength = 27 * 4;
|
|
2579
|
+
AmbientLightLoader = __decorate([
|
|
2580
|
+
resourceLoader(AssetType.AmbientLight, [
|
|
2581
|
+
"ambLight"
|
|
2582
|
+
])
|
|
2583
|
+
], AmbientLightLoader);
|
|
2584
|
+
/**
|
|
2585
|
+
* @internal
|
|
2586
|
+
*/ var AmbientLightContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
2587
|
+
_inherits(AmbientLightContentRestorer, ContentRestorer);
|
|
2588
|
+
function AmbientLightContentRestorer(resource, url, requestConfig) {
|
|
2589
|
+
var _this;
|
|
2590
|
+
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
2591
|
+
return _this;
|
|
2592
|
+
}
|
|
2593
|
+
var _proto = AmbientLightContentRestorer.prototype;
|
|
2594
|
+
_proto.restoreContent = function restoreContent() {
|
|
2595
|
+
var _this = this;
|
|
2596
|
+
return new AssetPromise(function(resolve, reject) {
|
|
2597
|
+
var resource = _this.resource;
|
|
2598
|
+
var engine = resource.engine;
|
|
2599
|
+
engine.resourceManager// @ts-ignore
|
|
2600
|
+
._request(_this.url, _this.requestConfig).then(function(buffer) {
|
|
2601
|
+
var header = FileHeader.decode(buffer);
|
|
2602
|
+
var dataOffset = header.headerLength;
|
|
2603
|
+
var textureOffset = dataOffset + AmbientLightLoader._shByteLength;
|
|
2604
|
+
return AmbientLightLoader._parseTexture(engine, buffer, textureOffset, header.dataLength - AmbientLightLoader._shByteLength, resource);
|
|
2605
|
+
}).then(resolve).catch(reject);
|
|
2606
|
+
});
|
|
2574
2607
|
};
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
var
|
|
2581
|
-
var
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2608
|
+
return AmbientLightContentRestorer;
|
|
2609
|
+
}(ContentRestorer);
|
|
2610
|
+
|
|
2611
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2612
|
+
try {
|
|
2613
|
+
var info = gen[key](arg);
|
|
2614
|
+
var value = info.value;
|
|
2615
|
+
} catch (error) {
|
|
2616
|
+
reject(error);
|
|
2617
|
+
return;
|
|
2618
|
+
}
|
|
2619
|
+
if (info.done) resolve(value);
|
|
2620
|
+
else Promise.resolve(value).then(_next, _throw);
|
|
2621
|
+
}
|
|
2622
|
+
function _async_to_generator(fn) {
|
|
2623
|
+
return function() {
|
|
2624
|
+
var self = this, args = arguments;
|
|
2625
|
+
|
|
2626
|
+
return new Promise(function(resolve, reject) {
|
|
2627
|
+
var gen = fn.apply(self, args);
|
|
2628
|
+
|
|
2629
|
+
function _next(value) {
|
|
2630
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
2631
|
+
}
|
|
2632
|
+
|
|
2633
|
+
function _throw(err) {
|
|
2634
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
2635
|
+
}
|
|
2636
|
+
|
|
2637
|
+
_next(undefined);
|
|
2638
|
+
});
|
|
2639
|
+
};
|
|
2640
|
+
}
|
|
2641
|
+
|
|
2642
|
+
var FontLoader = /*#__PURE__*/ function(Loader) {
|
|
2643
|
+
_inherits(FontLoader, Loader);
|
|
2644
|
+
function FontLoader() {
|
|
2645
|
+
return Loader.apply(this, arguments) || this;
|
|
2646
|
+
}
|
|
2647
|
+
var _proto = FontLoader.prototype;
|
|
2648
|
+
_proto.load = function load(item, resourceManager) {
|
|
2649
|
+
var _this = this;
|
|
2650
|
+
return new AssetPromise(function(resolve, reject) {
|
|
2651
|
+
resourceManager// @ts-ignore
|
|
2652
|
+
._request(item.url, _extends({}, item, {
|
|
2653
|
+
type: "json"
|
|
2654
|
+
})).then(function(data) {
|
|
2655
|
+
var fontName = data.fontName, fontUrl = data.fontUrl;
|
|
2656
|
+
if (fontUrl) {
|
|
2657
|
+
_this._registerFont(fontName, fontUrl).then(function() {
|
|
2658
|
+
var font = new Font(resourceManager.engine, fontName);
|
|
2659
|
+
resolve(font);
|
|
2660
|
+
}).catch(function(e) {
|
|
2661
|
+
reject("load font " + fontUrl + " fail");
|
|
2662
|
+
});
|
|
2607
2663
|
} else {
|
|
2608
|
-
var
|
|
2609
|
-
|
|
2610
|
-
var data1 = new TypedArray(bufferViewData.buffer, offset1, count1);
|
|
2611
|
-
bufferInfo = new BufferInfo(data1, false, elementStride);
|
|
2612
|
-
bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
|
|
2664
|
+
var font = new Font(resourceManager.engine, fontName);
|
|
2665
|
+
resolve(font);
|
|
2613
2666
|
}
|
|
2614
|
-
return bufferInfo;
|
|
2615
2667
|
}).catch(function(e) {
|
|
2616
|
-
|
|
2617
|
-
});
|
|
2618
|
-
} else {
|
|
2619
|
-
var count = accessorCount * dataElementSize;
|
|
2620
|
-
var data = new TypedArray(count);
|
|
2621
|
-
var bufferInfo = new BufferInfo(data, false, elementStride);
|
|
2622
|
-
bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(undefined, TypedArray, undefined, count));
|
|
2623
|
-
promise = AssetPromise.resolve(bufferInfo);
|
|
2624
|
-
}
|
|
2625
|
-
return accessor.sparse ? promise.then(function(bufferInfo) {
|
|
2626
|
-
return GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(function() {
|
|
2627
|
-
return bufferInfo;
|
|
2668
|
+
reject(e);
|
|
2628
2669
|
});
|
|
2629
|
-
})
|
|
2630
|
-
};
|
|
2631
|
-
GLTFUtils.bufferToVector3Array = function bufferToVector3Array(buffer, byteOffset, count, normalized, componentType) {
|
|
2632
|
-
var baseOffset = byteOffset / buffer.BYTES_PER_ELEMENT;
|
|
2633
|
-
var stride = buffer.length / count;
|
|
2634
|
-
var vertices = new Array(count);
|
|
2635
|
-
var factor = normalized ? GLTFUtils.getNormalizedComponentScale(componentType) : 1;
|
|
2636
|
-
for(var i = 0; i < count; i++){
|
|
2637
|
-
var index = baseOffset + i * stride;
|
|
2638
|
-
vertices[i] = new Vector3(buffer[index] * factor, buffer[index + 1] * factor, buffer[index + 2] * factor);
|
|
2639
|
-
}
|
|
2640
|
-
return vertices;
|
|
2670
|
+
});
|
|
2641
2671
|
};
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2672
|
+
_proto._registerFont = function _registerFont(fontName, fontUrl) {
|
|
2673
|
+
return _async_to_generator(function() {
|
|
2674
|
+
var fontFace;
|
|
2675
|
+
return __generator(this, function(_state) {
|
|
2676
|
+
switch(_state.label){
|
|
2677
|
+
case 0:
|
|
2678
|
+
fontFace = new FontFace(fontName, "url(" + fontUrl + ")");
|
|
2679
|
+
return [
|
|
2680
|
+
4,
|
|
2681
|
+
fontFace.load()
|
|
2682
|
+
];
|
|
2683
|
+
case 1:
|
|
2684
|
+
_state.sent();
|
|
2685
|
+
document.fonts.add(fontFace);
|
|
2686
|
+
return [
|
|
2687
|
+
2
|
|
2688
|
+
];
|
|
2689
|
+
}
|
|
2690
|
+
});
|
|
2691
|
+
})();
|
|
2646
2692
|
};
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
context.get(GLTFParserType.BufferView, values.bufferView)
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2693
|
+
return FontLoader;
|
|
2694
|
+
}(Loader);
|
|
2695
|
+
FontLoader = __decorate([
|
|
2696
|
+
resourceLoader(AssetType.Font, [
|
|
2697
|
+
"font"
|
|
2698
|
+
])
|
|
2699
|
+
], FontLoader);
|
|
2700
|
+
|
|
2701
|
+
// Source: https://github.com/zeux/meshoptimizer/blob/master/js/meshopt_decoder.js
|
|
2702
|
+
var ready;
|
|
2703
|
+
function getMeshoptDecoder() {
|
|
2704
|
+
if (ready) return ready;
|
|
2705
|
+
var wasm_base = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb";
|
|
2706
|
+
var wasm_simd = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb";
|
|
2707
|
+
var wasmpack = new Uint8Array([
|
|
2708
|
+
32,
|
|
2709
|
+
0,
|
|
2710
|
+
65,
|
|
2711
|
+
2,
|
|
2712
|
+
1,
|
|
2713
|
+
106,
|
|
2714
|
+
34,
|
|
2715
|
+
33,
|
|
2716
|
+
3,
|
|
2717
|
+
128,
|
|
2718
|
+
11,
|
|
2719
|
+
4,
|
|
2720
|
+
13,
|
|
2721
|
+
64,
|
|
2722
|
+
6,
|
|
2723
|
+
253,
|
|
2724
|
+
10,
|
|
2725
|
+
7,
|
|
2726
|
+
15,
|
|
2727
|
+
116,
|
|
2728
|
+
127,
|
|
2729
|
+
5,
|
|
2730
|
+
8,
|
|
2731
|
+
12,
|
|
2732
|
+
40,
|
|
2733
|
+
16,
|
|
2734
|
+
19,
|
|
2735
|
+
54,
|
|
2736
|
+
20,
|
|
2737
|
+
9,
|
|
2738
|
+
27,
|
|
2739
|
+
255,
|
|
2740
|
+
113,
|
|
2741
|
+
17,
|
|
2742
|
+
42,
|
|
2743
|
+
67,
|
|
2744
|
+
24,
|
|
2745
|
+
23,
|
|
2746
|
+
146,
|
|
2747
|
+
148,
|
|
2748
|
+
18,
|
|
2749
|
+
14,
|
|
2750
|
+
22,
|
|
2751
|
+
45,
|
|
2752
|
+
70,
|
|
2753
|
+
69,
|
|
2754
|
+
56,
|
|
2755
|
+
114,
|
|
2756
|
+
101,
|
|
2757
|
+
21,
|
|
2758
|
+
25,
|
|
2759
|
+
63,
|
|
2760
|
+
75,
|
|
2761
|
+
136,
|
|
2762
|
+
108,
|
|
2763
|
+
28,
|
|
2764
|
+
118,
|
|
2765
|
+
29,
|
|
2766
|
+
73,
|
|
2767
|
+
115
|
|
2768
|
+
]);
|
|
2769
|
+
// @ts-ignore
|
|
2770
|
+
var wasm = SystemInfo._detectSIMDSupported() ? wasm_simd : wasm_base;
|
|
2771
|
+
var instance;
|
|
2772
|
+
ready = WebAssembly.instantiate(unpack(wasm)).then(function(result) {
|
|
2773
|
+
instance = result.instance;
|
|
2774
|
+
instance.exports.__wasm_call_ctors();
|
|
2775
|
+
}).then(function() {
|
|
2776
|
+
return {
|
|
2777
|
+
workerCount: 4,
|
|
2778
|
+
ready: ready,
|
|
2779
|
+
useWorkers: function useWorkers(workerCount) {
|
|
2780
|
+
this.workerCount = workerCount != null ? workerCount : this.workerCount;
|
|
2781
|
+
initWorkers(this.workerCount);
|
|
2782
|
+
},
|
|
2783
|
+
decodeGltfBuffer: function decodeGltfBuffer(count, stride, source, mode, filter) {
|
|
2784
|
+
if (this.workerCount > 0 && workers.length === 0) this.useWorkers();
|
|
2785
|
+
if (workers.length > 0) return decodeWorker(count, stride, source, decoders[mode], filters[filter]);
|
|
2786
|
+
return ready.then(function() {
|
|
2787
|
+
var target = new Uint8Array(count * stride);
|
|
2788
|
+
decode(instance.exports[decoders[mode]], target, count, stride, source, instance.exports[filters[filter]]);
|
|
2789
|
+
return target;
|
|
2790
|
+
});
|
|
2791
|
+
},
|
|
2792
|
+
release: function release() {
|
|
2793
|
+
for(var i = 0; i < workers.length; i++){
|
|
2794
|
+
workers[i].object.terminate();
|
|
2682
2795
|
}
|
|
2683
2796
|
}
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
case AccessorComponentType.UNSIGNED_BYTE:
|
|
2692
|
-
return IndexFormat.UInt8;
|
|
2693
|
-
case AccessorComponentType.UNSIGNED_SHORT:
|
|
2694
|
-
return IndexFormat.UInt16;
|
|
2695
|
-
case AccessorComponentType.UNSIGNED_INT:
|
|
2696
|
-
return IndexFormat.UInt32;
|
|
2697
|
-
}
|
|
2698
|
-
};
|
|
2699
|
-
GLTFUtils.getElementFormat = function getElementFormat(type, size, normalized) {
|
|
2700
|
-
if (normalized === void 0) normalized = false;
|
|
2701
|
-
if (type == AccessorComponentType.FLOAT) {
|
|
2702
|
-
switch(size){
|
|
2703
|
-
case 1:
|
|
2704
|
-
return VertexElementFormat.Float;
|
|
2705
|
-
case 2:
|
|
2706
|
-
return VertexElementFormat.Vector2;
|
|
2707
|
-
case 3:
|
|
2708
|
-
return VertexElementFormat.Vector3;
|
|
2709
|
-
case 4:
|
|
2710
|
-
return VertexElementFormat.Vector4;
|
|
2711
|
-
}
|
|
2712
|
-
}
|
|
2713
|
-
if (type == AccessorComponentType.SHORT) {
|
|
2714
|
-
switch(size){
|
|
2715
|
-
case 2:
|
|
2716
|
-
return normalized ? VertexElementFormat.NormalizedShort2 : VertexElementFormat.Short2;
|
|
2717
|
-
case 3:
|
|
2718
|
-
case 4:
|
|
2719
|
-
return normalized ? VertexElementFormat.NormalizedShort4 : VertexElementFormat.Short4;
|
|
2720
|
-
}
|
|
2797
|
+
};
|
|
2798
|
+
});
|
|
2799
|
+
function unpack(data) {
|
|
2800
|
+
var result = new Uint8Array(data.length);
|
|
2801
|
+
for(var i = 0; i < data.length; ++i){
|
|
2802
|
+
var ch = data.charCodeAt(i);
|
|
2803
|
+
result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
|
|
2721
2804
|
}
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
return normalized ? VertexElementFormat.NormalizedUShort2 : VertexElementFormat.UShort2;
|
|
2726
|
-
case 3:
|
|
2727
|
-
case 4:
|
|
2728
|
-
return normalized ? VertexElementFormat.NormalizedUShort4 : VertexElementFormat.UShort4;
|
|
2729
|
-
}
|
|
2805
|
+
var write = 0;
|
|
2806
|
+
for(var i1 = 0; i1 < data.length; ++i1){
|
|
2807
|
+
result[write++] = result[i1] < 60 ? wasmpack[result[i1]] : (result[i1] - 60) * 64 + result[++i1];
|
|
2730
2808
|
}
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2809
|
+
return result.buffer.slice(0, write);
|
|
2810
|
+
}
|
|
2811
|
+
function decode(fun, target, count, size, source, filter) {
|
|
2812
|
+
var sbrk = instance.exports.sbrk;
|
|
2813
|
+
var count4 = count + 3 & ~3;
|
|
2814
|
+
var tp = sbrk(count4 * size);
|
|
2815
|
+
var sp = sbrk(source.length);
|
|
2816
|
+
var heap = new Uint8Array(instance.exports.memory.buffer);
|
|
2817
|
+
heap.set(source, sp);
|
|
2818
|
+
var res = fun(tp, count, size, sp, source.length);
|
|
2819
|
+
if (res == 0 && filter) {
|
|
2820
|
+
filter(tp, count4, size);
|
|
2738
2821
|
}
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
case 4:
|
|
2744
|
-
return normalized ? VertexElementFormat.NormalizedUByte4 : VertexElementFormat.UByte4;
|
|
2745
|
-
}
|
|
2822
|
+
target.set(heap.subarray(tp, tp + count * size));
|
|
2823
|
+
sbrk(tp - sbrk(0));
|
|
2824
|
+
if (res != 0) {
|
|
2825
|
+
throw new Error("Malformed buffer data: " + res);
|
|
2746
2826
|
}
|
|
2827
|
+
}
|
|
2828
|
+
var filters = {
|
|
2829
|
+
NONE: "",
|
|
2830
|
+
OCTAHEDRAL: "meshopt_decodeFilterOct",
|
|
2831
|
+
QUATERNION: "meshopt_decodeFilterQuat",
|
|
2832
|
+
EXPONENTIAL: "meshopt_decodeFilterExp"
|
|
2747
2833
|
};
|
|
2748
|
-
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
var blob = new window.Blob([
|
|
2753
|
-
imageBuffer
|
|
2754
|
-
], {
|
|
2755
|
-
type: type
|
|
2756
|
-
});
|
|
2757
|
-
var img = new Image();
|
|
2758
|
-
img.onerror = function() {
|
|
2759
|
-
reject(new Error("Failed to load image buffer"));
|
|
2760
|
-
};
|
|
2761
|
-
img.onload = function() {
|
|
2762
|
-
// Call requestAnimationFrame to avoid iOS's bug.
|
|
2763
|
-
requestAnimationFrame(function() {
|
|
2764
|
-
resolve(img);
|
|
2765
|
-
img.onload = null;
|
|
2766
|
-
img.onerror = null;
|
|
2767
|
-
img.onabort = null;
|
|
2768
|
-
});
|
|
2769
|
-
};
|
|
2770
|
-
img.crossOrigin = "anonymous";
|
|
2771
|
-
img.src = URL.createObjectURL(blob);
|
|
2772
|
-
});
|
|
2834
|
+
var decoders = {
|
|
2835
|
+
ATTRIBUTES: "meshopt_decodeVertexBuffer",
|
|
2836
|
+
TRIANGLES: "meshopt_decodeIndexBuffer",
|
|
2837
|
+
INDICES: "meshopt_decodeIndexSequence"
|
|
2773
2838
|
};
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
var
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
JSON: 0x4e4f534a,
|
|
2782
|
-
BIN: 0x004e4942
|
|
2783
|
-
};
|
|
2784
|
-
var dataView = new DataView(originBuffer);
|
|
2785
|
-
// Read header
|
|
2786
|
-
var header = {
|
|
2787
|
-
magic: dataView.getUint32(0, true),
|
|
2788
|
-
version: dataView.getUint32(UINT32_LENGTH, true),
|
|
2789
|
-
length: dataView.getUint32(2 * UINT32_LENGTH, true)
|
|
2839
|
+
var workers = [];
|
|
2840
|
+
var requestId = 0;
|
|
2841
|
+
function createWorker(url) {
|
|
2842
|
+
var worker = {
|
|
2843
|
+
object: new Worker(url),
|
|
2844
|
+
pending: 0,
|
|
2845
|
+
requests: {}
|
|
2790
2846
|
};
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
}
|
|
2797
|
-
// Read main data
|
|
2798
|
-
var chunkLength = dataView.getUint32(GLB_HEADER_LENGTH, true);
|
|
2799
|
-
var chunkType = dataView.getUint32(GLB_HEADER_LENGTH + UINT32_LENGTH, true);
|
|
2800
|
-
// Read glTF json
|
|
2801
|
-
if (chunkType !== GLB_CHUNK_TYPES.JSON) {
|
|
2802
|
-
console.error("Invalid glb chunk type. Expected 0x4E4F534A, found 0x" + chunkType.toString(16));
|
|
2803
|
-
return null;
|
|
2804
|
-
}
|
|
2805
|
-
var glTFData = new Uint8Array(originBuffer, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength);
|
|
2806
|
-
var glTF = JSON.parse(Utils.decodeText(glTFData));
|
|
2807
|
-
// Read all buffers
|
|
2808
|
-
var buffers = [];
|
|
2809
|
-
var byteOffset = GLB_HEADER_LENGTH + 2 * UINT32_LENGTH + chunkLength;
|
|
2810
|
-
var restoreGLBBufferSlice = context.contentRestorer.glbBufferSlices;
|
|
2811
|
-
while(byteOffset < header.length){
|
|
2812
|
-
chunkLength = dataView.getUint32(byteOffset, true);
|
|
2813
|
-
chunkType = dataView.getUint32(byteOffset + UINT32_LENGTH, true);
|
|
2814
|
-
if (chunkType !== GLB_CHUNK_TYPES.BIN) {
|
|
2815
|
-
console.error("Invalid glb chunk type. Expected 0x004E4942, found 0x" + chunkType.toString(16));
|
|
2816
|
-
return null;
|
|
2817
|
-
}
|
|
2818
|
-
var currentOffset = byteOffset + 2 * UINT32_LENGTH;
|
|
2819
|
-
var buffer = originBuffer.slice(currentOffset, currentOffset + chunkLength);
|
|
2820
|
-
buffers.push(buffer);
|
|
2821
|
-
restoreGLBBufferSlice.push(new Vector2(currentOffset, chunkLength));
|
|
2822
|
-
byteOffset += chunkLength + 2 * UINT32_LENGTH;
|
|
2823
|
-
}
|
|
2824
|
-
return {
|
|
2825
|
-
glTF: glTF,
|
|
2826
|
-
buffers: buffers
|
|
2847
|
+
worker.object.onmessage = function(event) {
|
|
2848
|
+
var data = event.data;
|
|
2849
|
+
worker.pending -= data.count;
|
|
2850
|
+
worker.requests[data.id][data.action](data.value);
|
|
2851
|
+
delete worker.requests[data.id];
|
|
2827
2852
|
};
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
if (
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
}
|
|
2837
|
-
|
|
2838
|
-
|
|
2853
|
+
return worker;
|
|
2854
|
+
}
|
|
2855
|
+
function initWorkers(count) {
|
|
2856
|
+
var source = "var instance; var ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(unpack(wasm)) + "]), {})" + ".then(function(result) {instance = result.instance; instance.exports.__wasm_call_ctors();});\n" + "self.onmessage = workerProcess;\n" + 'function decode(fun, target, count, size, source, filter) {\n const sbrk = instance.exports.sbrk;\n const count4 = (count + 3) & ~3;\n const tp = sbrk(count4 * size);\n const sp = sbrk(source.length);\n const heap = new Uint8Array(instance.exports.memory.buffer);\n heap.set(source, sp);\n const res = fun(tp, count, size, sp, source.length);\n if (res == 0 && filter) {\n filter(tp, count4, size);\n }\n target.set(heap.subarray(tp, tp + count * size));\n sbrk(tp - sbrk(0));\n if (res != 0) {\n throw new Error("Malformed buffer data: " + res);\n }\n }\n' + 'function workerProcess(event) {\n ready.then(function () {\n const data = event.data;\n try {\n const target = new Uint8Array(data.count * data.size);\n decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);\n self.postMessage({ id: data.id, count: data.count, action: "resolve", value: target }, [target.buffer]);\n } catch (error) {\n self.postMessage({\n id: data.id,\n count: data.count,\n action: "reject",\n value: error\n });\n }\n });\n }';
|
|
2857
|
+
var blob = new Blob([
|
|
2858
|
+
source
|
|
2859
|
+
], {
|
|
2860
|
+
type: "text/javascript"
|
|
2861
|
+
});
|
|
2862
|
+
var url = URL.createObjectURL(blob);
|
|
2863
|
+
for(var i = 0; i < count; ++i){
|
|
2864
|
+
workers[i] = createWorker(url);
|
|
2839
2865
|
}
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
|
|
2843
|
-
var
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
info.filterMode = TextureFilterMode.Point;
|
|
2848
|
-
} else {
|
|
2849
|
-
if (minFilter <= TextureMinFilter.LINEAR_MIPMAP_NEAREST) {
|
|
2850
|
-
info.filterMode = TextureFilterMode.Bilinear;
|
|
2851
|
-
} else {
|
|
2852
|
-
info.filterMode = TextureFilterMode.Trilinear;
|
|
2853
|
-
}
|
|
2866
|
+
URL.revokeObjectURL(url);
|
|
2867
|
+
}
|
|
2868
|
+
function decodeWorker(count, size, source, mode, filter) {
|
|
2869
|
+
var worker = workers[0];
|
|
2870
|
+
for(var i = 1; i < workers.length; ++i){
|
|
2871
|
+
if (workers[i].pending < worker.pending) {
|
|
2872
|
+
worker = workers[i];
|
|
2854
2873
|
}
|
|
2855
2874
|
}
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2875
|
+
return new Promise(function(resolve, reject) {
|
|
2876
|
+
var data = new Uint8Array(source);
|
|
2877
|
+
var id = requestId++;
|
|
2878
|
+
worker.pending += count;
|
|
2879
|
+
worker.requests[id] = {
|
|
2880
|
+
resolve: resolve,
|
|
2881
|
+
reject: reject
|
|
2882
|
+
};
|
|
2883
|
+
worker.object.postMessage({
|
|
2884
|
+
id: id,
|
|
2885
|
+
count: count,
|
|
2886
|
+
size: size,
|
|
2887
|
+
source: data,
|
|
2888
|
+
mode: mode,
|
|
2889
|
+
filter: filter
|
|
2890
|
+
}, [
|
|
2891
|
+
data.buffer
|
|
2892
|
+
]);
|
|
2893
|
+
});
|
|
2894
|
+
}
|
|
2895
|
+
return ready;
|
|
2896
|
+
}
|
|
2866
2897
|
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
var
|
|
2873
|
-
|
|
2874
|
-
|
|
2875
|
-
|
|
2876
|
-
return ColorModel;
|
|
2877
|
-
}({});
|
|
2878
|
-
/** @internal */ var KTX2Container = /*#__PURE__*/ function() {
|
|
2879
|
-
function KTX2Container(buffer) {
|
|
2880
|
-
this.vkFormat = 0;
|
|
2881
|
-
this.typeSize = 1;
|
|
2882
|
-
this.pixelWidth = 0;
|
|
2883
|
-
this.pixelHeight = 0;
|
|
2884
|
-
this.pixelDepth = 0;
|
|
2885
|
-
this.layerCount = 0;
|
|
2886
|
-
this.faceCount = 1;
|
|
2887
|
-
this.supercompressionScheme = 0;
|
|
2888
|
-
this.levels = [];
|
|
2889
|
-
this.keyValue = {};
|
|
2890
|
-
this.globalData = null;
|
|
2891
|
-
this.parse(buffer);
|
|
2898
|
+
/**
|
|
2899
|
+
* The glTF resource.
|
|
2900
|
+
*/ var GLTFResource = /*#__PURE__*/ function(ReferResource) {
|
|
2901
|
+
_inherits(GLTFResource, ReferResource);
|
|
2902
|
+
function GLTFResource(engine, url) {
|
|
2903
|
+
var _this;
|
|
2904
|
+
_this = ReferResource.call(this, engine) || this;
|
|
2905
|
+
_this.url = url;
|
|
2906
|
+
return _this;
|
|
2892
2907
|
}
|
|
2893
|
-
var _proto =
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
this.
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
this.
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
var sgdByteOffset = headerBufferReader.nextUint64();
|
|
2912
|
-
var sgdByteLength = headerBufferReader.nextUint64();
|
|
2913
|
-
// level index
|
|
2914
|
-
var ktxLevels = new Array(levelCount);
|
|
2915
|
-
var levelByteLength = levelCount * 3 * 8;
|
|
2916
|
-
var levelReader = new BufferReader(data, headerBufferReader.offset, levelByteLength);
|
|
2917
|
-
this.levels = ktxLevels;
|
|
2918
|
-
for(var i = 0; i < levelCount; i++){
|
|
2919
|
-
ktxLevels[i] = {
|
|
2920
|
-
levelData: new Uint8Array(buffer, byteOffset + levelReader.nextUint64(), levelReader.nextUint64()),
|
|
2921
|
-
uncompressedByteLength: levelReader.nextUint64()
|
|
2922
|
-
};
|
|
2923
|
-
}
|
|
2924
|
-
// Data Format Descriptor (DFD).
|
|
2925
|
-
var dfdReader = new BufferReader(data, dfdByteOffset, dfdByteLength);
|
|
2926
|
-
var dfd = {
|
|
2927
|
-
vendorId: dfdReader.skip(4 /* totalSize */ ).nextUint16(),
|
|
2928
|
-
descriptorType: dfdReader.nextUint16(),
|
|
2929
|
-
versionNumber: dfdReader.nextUint16(),
|
|
2930
|
-
descriptorBlockSize: dfdReader.nextUint16(),
|
|
2931
|
-
colorModel: dfdReader.nextUint8(),
|
|
2932
|
-
colorPrimaries: dfdReader.nextUint8(),
|
|
2933
|
-
transferFunction: dfdReader.nextUint8(),
|
|
2934
|
-
flags: dfdReader.nextUint8(),
|
|
2935
|
-
texelBlockDimension: [
|
|
2936
|
-
dfdReader.nextUint8(),
|
|
2937
|
-
dfdReader.nextUint8(),
|
|
2938
|
-
dfdReader.nextUint8(),
|
|
2939
|
-
dfdReader.nextUint8()
|
|
2940
|
-
],
|
|
2941
|
-
bytesPlane: [
|
|
2942
|
-
dfdReader.nextUint8(),
|
|
2943
|
-
dfdReader.nextUint8(),
|
|
2944
|
-
dfdReader.nextUint8(),
|
|
2945
|
-
dfdReader.nextUint8(),
|
|
2946
|
-
dfdReader.nextUint8(),
|
|
2947
|
-
dfdReader.nextUint8(),
|
|
2948
|
-
dfdReader.nextUint8(),
|
|
2949
|
-
dfdReader.nextUint8()
|
|
2950
|
-
],
|
|
2951
|
-
samples: []
|
|
2952
|
-
};
|
|
2953
|
-
this.dataFormatDescriptor = dfd;
|
|
2954
|
-
var sampleStart = 6;
|
|
2955
|
-
var sampleWords = 4;
|
|
2956
|
-
var numSamples = (dfd.descriptorBlockSize / 4 - sampleStart) / sampleWords;
|
|
2957
|
-
for(var i1 = 0; i1 < numSamples; i1++){
|
|
2958
|
-
var sample = {
|
|
2959
|
-
bitOffset: dfdReader.nextUint16(),
|
|
2960
|
-
bitLength: dfdReader.nextUint8(),
|
|
2961
|
-
channelType: dfdReader.nextUint8(),
|
|
2962
|
-
samplePosition: [
|
|
2963
|
-
dfdReader.nextUint8(),
|
|
2964
|
-
dfdReader.nextUint8(),
|
|
2965
|
-
dfdReader.nextUint8(),
|
|
2966
|
-
dfdReader.nextUint8()
|
|
2967
|
-
],
|
|
2968
|
-
sampleLower: -Infinity,
|
|
2969
|
-
sampleUpper: Infinity
|
|
2970
|
-
};
|
|
2971
|
-
if (sample.channelType & 0x40) {
|
|
2972
|
-
sample.sampleLower = dfdReader.nextInt32();
|
|
2973
|
-
sample.sampleUpper = dfdReader.nextInt32();
|
|
2974
|
-
} else {
|
|
2975
|
-
sample.sampleLower = dfdReader.nextUint32();
|
|
2976
|
-
sample.sampleUpper = dfdReader.nextUint32();
|
|
2908
|
+
var _proto = GLTFResource.prototype;
|
|
2909
|
+
/**
|
|
2910
|
+
* Instantiate scene root entity.
|
|
2911
|
+
* @param sceneIndex - Scene index
|
|
2912
|
+
* @returns Root entity
|
|
2913
|
+
*/ _proto.instantiateSceneRoot = function instantiateSceneRoot(sceneIndex) {
|
|
2914
|
+
var sceneRoot = sceneIndex === undefined ? this._defaultSceneRoot : this._sceneRoots[sceneIndex];
|
|
2915
|
+
return sceneRoot.clone();
|
|
2916
|
+
};
|
|
2917
|
+
_proto._onDestroy = function _onDestroy() {
|
|
2918
|
+
ReferResource.prototype._onDestroy.call(this);
|
|
2919
|
+
var _this = this, textures = _this.textures, materials = _this.materials, meshes = _this.meshes;
|
|
2920
|
+
textures && this._disassociationSuperResource(textures);
|
|
2921
|
+
materials && this._disassociationSuperResource(materials);
|
|
2922
|
+
if (meshes) {
|
|
2923
|
+
for(var i = 0, n = meshes.length; i < n; i++){
|
|
2924
|
+
var meshArr = meshes[i];
|
|
2925
|
+
meshArr && this._disassociationSuperResource(meshArr);
|
|
2977
2926
|
}
|
|
2978
|
-
dfd.samples[i1] = sample;
|
|
2979
|
-
}
|
|
2980
|
-
var kvdReader = new BufferReader(data, kvdByteOffset, kvdByteLength, true);
|
|
2981
|
-
while(kvdReader.position < kvdByteLength){
|
|
2982
|
-
var keyValueByteLength = kvdReader.nextUint32();
|
|
2983
|
-
var keyData = kvdReader.scan(keyValueByteLength);
|
|
2984
|
-
var key = Utils.decodeText(keyData);
|
|
2985
|
-
// 4-byte alignment.
|
|
2986
|
-
var valueData = kvdReader.nextUint8Array(keyValueByteLength - keyData.byteLength - 1);
|
|
2987
|
-
this.keyValue[key] = key.match(/^ktx/i) ? Utils.decodeText(valueData).replace(/^(.*)\x00$/, "$1") : valueData;
|
|
2988
|
-
var kvPadding = keyValueByteLength % 4 ? 4 - keyValueByteLength % 4 : 0; // align(4)
|
|
2989
|
-
// 4-byte alignment.
|
|
2990
|
-
kvdReader.skip(kvPadding);
|
|
2991
2927
|
}
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
var
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
var tablesByteLength = sgdReader.nextUint32();
|
|
2999
|
-
var extendedByteLength = sgdReader.nextUint32();
|
|
3000
|
-
var imageDescs = new Array(levelCount);
|
|
3001
|
-
for(var i2 = 0; i2 < levelCount; i2++){
|
|
3002
|
-
imageDescs[i2] = {
|
|
3003
|
-
imageFlags: sgdReader.nextUint32(),
|
|
3004
|
-
rgbSliceByteOffset: sgdReader.nextUint32(),
|
|
3005
|
-
rgbSliceByteLength: sgdReader.nextUint32(),
|
|
3006
|
-
alphaSliceByteOffset: sgdReader.nextUint32(),
|
|
3007
|
-
alphaSliceByteLength: sgdReader.nextUint32()
|
|
3008
|
-
};
|
|
2928
|
+
};
|
|
2929
|
+
_proto._disassociationSuperResource = function _disassociationSuperResource(resources) {
|
|
2930
|
+
for(var i = 0, n = resources.length; i < n; i++){
|
|
2931
|
+
var // @ts-ignore
|
|
2932
|
+
_resources_i;
|
|
2933
|
+
(_resources_i = resources[i]) == null ? void 0 : _resources_i._disassociationSuperResource(this);
|
|
3009
2934
|
}
|
|
3010
|
-
var endpointsByteOffset = sgdByteOffset + sgdReader.position;
|
|
3011
|
-
var selectorsByteOffset = endpointsByteOffset + endpointsByteLength;
|
|
3012
|
-
var tablesByteOffset = selectorsByteOffset + selectorsByteLength;
|
|
3013
|
-
var extendedByteOffset = tablesByteOffset + tablesByteLength;
|
|
3014
|
-
var endpointsData = new Uint8Array(buffer, byteOffset + endpointsByteOffset, endpointsByteLength);
|
|
3015
|
-
var selectorsData = new Uint8Array(buffer, byteOffset + selectorsByteOffset, selectorsByteLength);
|
|
3016
|
-
var tablesData = new Uint8Array(buffer, byteOffset + tablesByteOffset, tablesByteLength);
|
|
3017
|
-
var extendedData = new Uint8Array(buffer, byteOffset + extendedByteOffset, extendedByteLength);
|
|
3018
|
-
this.globalData = {
|
|
3019
|
-
endpointCount: endpointCount,
|
|
3020
|
-
selectorCount: selectorCount,
|
|
3021
|
-
imageDescs: imageDescs,
|
|
3022
|
-
endpointsData: endpointsData,
|
|
3023
|
-
selectorsData: selectorsData,
|
|
3024
|
-
tablesData: tablesData,
|
|
3025
|
-
extendedData: extendedData
|
|
3026
|
-
};
|
|
3027
2935
|
};
|
|
3028
|
-
_create_class(
|
|
2936
|
+
_create_class(GLTFResource, [
|
|
2937
|
+
{
|
|
2938
|
+
key: "extensionsData",
|
|
2939
|
+
get: /**
|
|
2940
|
+
* Extensions data.
|
|
2941
|
+
*/ function get() {
|
|
2942
|
+
return this._extensionsData;
|
|
2943
|
+
}
|
|
2944
|
+
},
|
|
3029
2945
|
{
|
|
3030
|
-
key: "
|
|
3031
|
-
get:
|
|
3032
|
-
|
|
2946
|
+
key: "sceneRoots",
|
|
2947
|
+
get: /**
|
|
2948
|
+
* @deprecated Please use `instantiateSceneRoot` instead.
|
|
2949
|
+
* RootEntities after SceneParser.
|
|
2950
|
+
*/ function get() {
|
|
2951
|
+
return this._sceneRoots;
|
|
3033
2952
|
}
|
|
3034
2953
|
},
|
|
3035
2954
|
{
|
|
3036
|
-
key: "
|
|
3037
|
-
get:
|
|
3038
|
-
|
|
2955
|
+
key: "defaultSceneRoot",
|
|
2956
|
+
get: /**
|
|
2957
|
+
* @deprecated Please use `instantiateSceneRoot` instead.
|
|
2958
|
+
* RootEntity after SceneParser.
|
|
2959
|
+
*/ function get() {
|
|
2960
|
+
return this._defaultSceneRoot;
|
|
3039
2961
|
}
|
|
3040
2962
|
}
|
|
3041
2963
|
]);
|
|
3042
|
-
return
|
|
3043
|
-
}();
|
|
2964
|
+
return GLTFResource;
|
|
2965
|
+
}(ReferResource);
|
|
3044
2966
|
|
|
3045
2967
|
/**
|
|
3046
|
-
*
|
|
3047
|
-
*/
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
/**
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
/**
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
/**
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
2968
|
+
* Module for glTF 2.0 Interface
|
|
2969
|
+
*/ /**
|
|
2970
|
+
* The datatype of the components in the attribute
|
|
2971
|
+
*/ var AccessorComponentType = /*#__PURE__*/ function(AccessorComponentType) {
|
|
2972
|
+
/**
|
|
2973
|
+
* Byte
|
|
2974
|
+
*/ AccessorComponentType[AccessorComponentType["BYTE"] = 5120] = "BYTE";
|
|
2975
|
+
/**
|
|
2976
|
+
* Unsigned Byte
|
|
2977
|
+
*/ AccessorComponentType[AccessorComponentType["UNSIGNED_BYTE"] = 5121] = "UNSIGNED_BYTE";
|
|
2978
|
+
/**
|
|
2979
|
+
* Short
|
|
2980
|
+
*/ AccessorComponentType[AccessorComponentType["SHORT"] = 5122] = "SHORT";
|
|
2981
|
+
/**
|
|
2982
|
+
* Unsigned Short
|
|
2983
|
+
*/ AccessorComponentType[AccessorComponentType["UNSIGNED_SHORT"] = 5123] = "UNSIGNED_SHORT";
|
|
2984
|
+
/**
|
|
2985
|
+
* Unsigned Int
|
|
2986
|
+
*/ AccessorComponentType[AccessorComponentType["UNSIGNED_INT"] = 5125] = "UNSIGNED_INT";
|
|
2987
|
+
/**
|
|
2988
|
+
* Float
|
|
2989
|
+
*/ AccessorComponentType[AccessorComponentType["FLOAT"] = 5126] = "FLOAT";
|
|
2990
|
+
return AccessorComponentType;
|
|
2991
|
+
}({});
|
|
2992
|
+
/**
|
|
2993
|
+
* Specifies if the attirbute is a scalar, vector, or matrix
|
|
2994
|
+
*/ var AccessorType = /*#__PURE__*/ function(AccessorType) {
|
|
2995
|
+
/**
|
|
2996
|
+
* Scalar
|
|
2997
|
+
*/ AccessorType["SCALAR"] = "SCALAR";
|
|
2998
|
+
/**
|
|
2999
|
+
* Vector2
|
|
3000
|
+
*/ AccessorType["VEC2"] = "VEC2";
|
|
3001
|
+
/**
|
|
3002
|
+
* Vector3
|
|
3003
|
+
*/ AccessorType["VEC3"] = "VEC3";
|
|
3004
|
+
/**
|
|
3005
|
+
* Vector4
|
|
3006
|
+
*/ AccessorType["VEC4"] = "VEC4";
|
|
3007
|
+
/**
|
|
3008
|
+
* Matrix2x2
|
|
3009
|
+
*/ AccessorType["MAT2"] = "MAT2";
|
|
3010
|
+
/**
|
|
3011
|
+
* Matrix3x3
|
|
3012
|
+
*/ AccessorType["MAT3"] = "MAT3";
|
|
3013
|
+
/**
|
|
3014
|
+
* Matrix4x4
|
|
3015
|
+
*/ AccessorType["MAT4"] = "MAT4";
|
|
3016
|
+
return AccessorType;
|
|
3017
|
+
}({});
|
|
3018
|
+
/**
|
|
3019
|
+
* The name of the node's TRS property to modify, or the weights of the Morph Targets it instantiates
|
|
3020
|
+
*/ var AnimationChannelTargetPath = /*#__PURE__*/ function(AnimationChannelTargetPath) {
|
|
3021
|
+
/**
|
|
3022
|
+
* Translation
|
|
3023
|
+
*/ AnimationChannelTargetPath["TRANSLATION"] = "translation";
|
|
3024
|
+
/**
|
|
3025
|
+
* Rotation
|
|
3026
|
+
*/ AnimationChannelTargetPath["ROTATION"] = "rotation";
|
|
3027
|
+
/**
|
|
3028
|
+
* Scale
|
|
3029
|
+
*/ AnimationChannelTargetPath["SCALE"] = "scale";
|
|
3030
|
+
/**
|
|
3031
|
+
* Weights
|
|
3032
|
+
*/ AnimationChannelTargetPath["WEIGHTS"] = "weights";
|
|
3033
|
+
return AnimationChannelTargetPath;
|
|
3034
|
+
}({});
|
|
3035
|
+
/**
|
|
3036
|
+
* Interpolation algorithm
|
|
3037
|
+
*/ var AnimationSamplerInterpolation = /*#__PURE__*/ function(AnimationSamplerInterpolation) {
|
|
3038
|
+
/**
|
|
3039
|
+
* The animated values are linearly interpolated between keyframes
|
|
3040
|
+
*/ AnimationSamplerInterpolation["Linear"] = "LINEAR";
|
|
3041
|
+
/**
|
|
3042
|
+
* The animated values remain constant to the output of the first keyframe, until the next keyframe
|
|
3043
|
+
*/ AnimationSamplerInterpolation["Step"] = "STEP";
|
|
3044
|
+
/**
|
|
3045
|
+
* The animation's interpolation is computed using a cubic spline with specified tangents
|
|
3046
|
+
*/ AnimationSamplerInterpolation["CubicSpine"] = "CUBICSPLINE";
|
|
3047
|
+
return AnimationSamplerInterpolation;
|
|
3048
|
+
}({});
|
|
3049
|
+
/**
|
|
3050
|
+
* A camera's projection. A node can reference a camera to apply a transform to place the camera in the scene
|
|
3051
|
+
*/ var CameraType = /*#__PURE__*/ function(CameraType) {
|
|
3052
|
+
/**
|
|
3053
|
+
* A perspective camera containing properties to create a perspective projection matrix
|
|
3054
|
+
*/ CameraType["PERSPECTIVE"] = "perspective";
|
|
3055
|
+
/**
|
|
3056
|
+
* An orthographic camera containing properties to create an orthographic projection matrix
|
|
3057
|
+
*/ CameraType["ORTHOGRAPHIC"] = "orthographic";
|
|
3058
|
+
return CameraType;
|
|
3059
|
+
}({});
|
|
3060
|
+
/**
|
|
3061
|
+
* The alpha rendering mode of the material
|
|
3062
|
+
*/ var MaterialAlphaMode = /*#__PURE__*/ function(MaterialAlphaMode) {
|
|
3063
|
+
/**
|
|
3064
|
+
* The alpha value is ignored and the rendered output is fully opaque
|
|
3065
|
+
*/ MaterialAlphaMode["OPAQUE"] = "OPAQUE";
|
|
3066
|
+
/**
|
|
3067
|
+
* The rendered output is either fully opaque or fully transparent depending on the alpha value and the specified alpha cutoff value
|
|
3068
|
+
*/ MaterialAlphaMode["MASK"] = "MASK";
|
|
3069
|
+
/**
|
|
3070
|
+
* The alpha value is used to composite the source and destination areas. The rendered output is combined with the background using the normal painting operation (i.e. the Porter and Duff over operator)
|
|
3071
|
+
*/ MaterialAlphaMode["BLEND"] = "BLEND";
|
|
3072
|
+
return MaterialAlphaMode;
|
|
3073
|
+
}({});
|
|
3074
|
+
/**
|
|
3075
|
+
* Magnification filter. Valid values correspond to WebGL enums: 9728 (NEAREST) and 9729 (LINEAR)
|
|
3076
|
+
*/ var TextureMagFilter = /*#__PURE__*/ function(TextureMagFilter) {
|
|
3077
|
+
/**
|
|
3078
|
+
* Nearest
|
|
3079
|
+
*/ TextureMagFilter[TextureMagFilter["NEAREST"] = 9728] = "NEAREST";
|
|
3080
|
+
/**
|
|
3081
|
+
* Linear
|
|
3082
|
+
*/ TextureMagFilter[TextureMagFilter["LINEAR"] = 9729] = "LINEAR";
|
|
3083
|
+
return TextureMagFilter;
|
|
3084
|
+
}({});
|
|
3085
|
+
/**
|
|
3086
|
+
* Minification filter. All valid values correspond to WebGL enums
|
|
3087
|
+
*/ var TextureMinFilter = /*#__PURE__*/ function(TextureMinFilter) {
|
|
3088
|
+
/**
|
|
3089
|
+
* Nearest
|
|
3090
|
+
*/ TextureMinFilter[TextureMinFilter["NEAREST"] = 9728] = "NEAREST";
|
|
3091
|
+
/**
|
|
3092
|
+
* Linear
|
|
3093
|
+
*/ TextureMinFilter[TextureMinFilter["LINEAR"] = 9729] = "LINEAR";
|
|
3094
|
+
/**
|
|
3095
|
+
* Nearest Mip-Map Nearest
|
|
3096
|
+
*/ TextureMinFilter[TextureMinFilter["NEAREST_MIPMAP_NEAREST"] = 9984] = "NEAREST_MIPMAP_NEAREST";
|
|
3097
|
+
/**
|
|
3098
|
+
* Linear Mipmap Nearest
|
|
3099
|
+
*/ TextureMinFilter[TextureMinFilter["LINEAR_MIPMAP_NEAREST"] = 9985] = "LINEAR_MIPMAP_NEAREST";
|
|
3100
|
+
/**
|
|
3101
|
+
* Nearest Mipmap Linear
|
|
3102
|
+
*/ TextureMinFilter[TextureMinFilter["NEAREST_MIPMAP_LINEAR"] = 9986] = "NEAREST_MIPMAP_LINEAR";
|
|
3103
|
+
/**
|
|
3104
|
+
* Linear Mipmap Linear
|
|
3105
|
+
*/ TextureMinFilter[TextureMinFilter["LINEAR_MIPMAP_LINEAR"] = 9987] = "LINEAR_MIPMAP_LINEAR";
|
|
3106
|
+
return TextureMinFilter;
|
|
3107
|
+
}({});
|
|
3108
|
+
/**
|
|
3109
|
+
* S (U) wrapping mode. All valid values correspond to WebGL enums
|
|
3110
|
+
*/ var TextureWrapMode = /*#__PURE__*/ function(TextureWrapMode) {
|
|
3111
|
+
/**
|
|
3112
|
+
* Clamp to Edge
|
|
3113
|
+
*/ TextureWrapMode[TextureWrapMode["CLAMP_TO_EDGE"] = 33071] = "CLAMP_TO_EDGE";
|
|
3114
|
+
/**
|
|
3115
|
+
* Mirrored Repeat
|
|
3116
|
+
*/ TextureWrapMode[TextureWrapMode["MIRRORED_REPEAT"] = 33648] = "MIRRORED_REPEAT";
|
|
3117
|
+
/**
|
|
3118
|
+
* Repeat
|
|
3119
|
+
*/ TextureWrapMode[TextureWrapMode["REPEAT"] = 10497] = "REPEAT";
|
|
3120
|
+
return TextureWrapMode;
|
|
3060
3121
|
}({});
|
|
3061
3122
|
|
|
3062
3123
|
/**
|
|
3063
3124
|
* @internal
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
this.
|
|
3069
|
-
this.
|
|
3070
|
-
this.
|
|
3071
|
-
this.
|
|
3072
|
-
this
|
|
3125
|
+
*/ var GLTFParserContext = /*#__PURE__*/ function() {
|
|
3126
|
+
function GLTFParserContext(glTFResource, resourceManager, params) {
|
|
3127
|
+
var _this = this;
|
|
3128
|
+
this.glTFResource = glTFResource;
|
|
3129
|
+
this.resourceManager = resourceManager;
|
|
3130
|
+
this.params = params;
|
|
3131
|
+
this.accessorBufferCache = {};
|
|
3132
|
+
this.needAnimatorController = false;
|
|
3133
|
+
this./** @internal */ _getPromises = [];
|
|
3134
|
+
this._resourceCache = new Map();
|
|
3135
|
+
this._progress = {
|
|
3136
|
+
taskDetail: {},
|
|
3137
|
+
taskComplete: {
|
|
3138
|
+
loaded: 0,
|
|
3139
|
+
total: 0
|
|
3140
|
+
}
|
|
3141
|
+
};
|
|
3142
|
+
this./**
|
|
3143
|
+
* @internal
|
|
3144
|
+
*/ _onTaskDetail = function(url, loaded, total) {
|
|
3145
|
+
var _this__progress_taskDetail, _url;
|
|
3146
|
+
var detail = (_this__progress_taskDetail = _this._progress.taskDetail)[_url = url] || (_this__progress_taskDetail[_url] = {});
|
|
3147
|
+
detail.loaded = loaded;
|
|
3148
|
+
detail.total = total;
|
|
3149
|
+
_this._setTaskDetailProgress(url, loaded, total);
|
|
3150
|
+
};
|
|
3151
|
+
this.contentRestorer = new GLTFContentRestorer(glTFResource);
|
|
3073
3152
|
}
|
|
3074
|
-
var _proto =
|
|
3075
|
-
_proto.
|
|
3076
|
-
var
|
|
3077
|
-
var
|
|
3078
|
-
|
|
3079
|
-
|
|
3153
|
+
var _proto = GLTFParserContext.prototype;
|
|
3154
|
+
_proto.get = function get(type, index) {
|
|
3155
|
+
var _this = this;
|
|
3156
|
+
var parser = GLTFParserContext._parsers[type];
|
|
3157
|
+
if (!parser) {
|
|
3158
|
+
return AssetPromise.resolve(null);
|
|
3159
|
+
}
|
|
3160
|
+
var cache = this._resourceCache;
|
|
3161
|
+
var cacheKey = index === undefined ? "" + type : type + ":" + index;
|
|
3162
|
+
var resource = cache.get(cacheKey);
|
|
3163
|
+
if (resource) {
|
|
3164
|
+
return resource;
|
|
3165
|
+
}
|
|
3166
|
+
var glTFSchemaKey = glTFSchemaMap[type];
|
|
3167
|
+
var isSubAsset = !!glTFResourceMap[type];
|
|
3168
|
+
if (glTFSchemaKey) {
|
|
3169
|
+
var glTFItems = this.glTF[glTFSchemaKey];
|
|
3170
|
+
if (glTFItems && (index === undefined || glTFItems[index])) {
|
|
3171
|
+
if (index === undefined) {
|
|
3172
|
+
resource = type === 8 ? glTFItems.map(function(_, index) {
|
|
3173
|
+
return _this.get(type, index);
|
|
3174
|
+
}) : AssetPromise.all(glTFItems.map(function(_, index) {
|
|
3175
|
+
return _this.get(type, index);
|
|
3176
|
+
}));
|
|
3177
|
+
} else {
|
|
3178
|
+
resource = parser.parse(this, index);
|
|
3179
|
+
isSubAsset && this._handleSubAsset(resource, type, index);
|
|
3180
|
+
}
|
|
3181
|
+
} else {
|
|
3182
|
+
resource = AssetPromise.resolve(null);
|
|
3183
|
+
}
|
|
3184
|
+
} else {
|
|
3185
|
+
resource = parser.parse(this, index);
|
|
3186
|
+
isSubAsset && this._handleSubAsset(resource, type, index);
|
|
3080
3187
|
}
|
|
3081
|
-
|
|
3188
|
+
if (_instanceof(resource, AssetPromise)) {
|
|
3189
|
+
this._getPromises.push(resource);
|
|
3190
|
+
}
|
|
3191
|
+
cache.set(cacheKey, resource);
|
|
3192
|
+
return resource;
|
|
3082
3193
|
};
|
|
3083
|
-
|
|
3084
|
-
* Post message to worker.
|
|
3085
|
-
* @param message - Message which posted to worker
|
|
3086
|
-
* @returns Return a promise of message
|
|
3087
|
-
*/ _proto.postMessage = function postMessage(message) {
|
|
3194
|
+
_proto.parse = function parse() {
|
|
3088
3195
|
var _this = this;
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
_this.
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3196
|
+
var promise = this.get(0).then(function(json) {
|
|
3197
|
+
_this.glTF = json;
|
|
3198
|
+
_this.needAnimatorController = !!(json.skins || json.animations);
|
|
3199
|
+
return AssetPromise.all([
|
|
3200
|
+
_this.get(1),
|
|
3201
|
+
_this.get(5),
|
|
3202
|
+
_this.get(6),
|
|
3203
|
+
_this.get(7),
|
|
3204
|
+
_this.get(9),
|
|
3205
|
+
_this.get(10),
|
|
3206
|
+
_this.get(11),
|
|
3207
|
+
_this.get(2)
|
|
3208
|
+
]).then(function() {
|
|
3209
|
+
var glTFResource = _this.glTFResource;
|
|
3210
|
+
var animatorController = glTFResource.animatorController;
|
|
3211
|
+
if (animatorController) {
|
|
3212
|
+
var animator = glTFResource._defaultSceneRoot.addComponent(Animator);
|
|
3213
|
+
animator.animatorController = animatorController;
|
|
3214
|
+
}
|
|
3215
|
+
_this.resourceManager.addContentRestorer(_this.contentRestorer);
|
|
3216
|
+
return glTFResource;
|
|
3217
|
+
});
|
|
3108
3218
|
});
|
|
3219
|
+
this._addTaskCompletePromise(promise);
|
|
3220
|
+
return promise;
|
|
3109
3221
|
};
|
|
3110
3222
|
/**
|
|
3111
|
-
*
|
|
3112
|
-
*/ _proto.
|
|
3113
|
-
var workerItems = this._workerItems;
|
|
3114
|
-
for(var i = 0, n = workerItems.length; i < n; i++){
|
|
3115
|
-
var workerItem = workerItems[i];
|
|
3116
|
-
workerItem.worker.terminate();
|
|
3117
|
-
workerItem.reject = null;
|
|
3118
|
-
workerItem.resolve = null;
|
|
3119
|
-
}
|
|
3120
|
-
workerItems.length = 0;
|
|
3121
|
-
this._taskQueue.length = 0;
|
|
3122
|
-
this._workerStatus = 0;
|
|
3123
|
-
};
|
|
3124
|
-
_proto._initWorker = function _initWorker(workerId) {
|
|
3223
|
+
* @internal
|
|
3224
|
+
*/ _proto._addTaskCompletePromise = function _addTaskCompletePromise(taskPromise) {
|
|
3125
3225
|
var _this = this;
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
};
|
|
3133
|
-
return worker;
|
|
3226
|
+
var task = this._progress.taskComplete;
|
|
3227
|
+
task.total += 1;
|
|
3228
|
+
taskPromise.finally(function() {
|
|
3229
|
+
_this._setTaskCompleteProgress(++task.loaded, task.total);
|
|
3230
|
+
}).catch(function(e) {
|
|
3231
|
+
// Need catch to avoid unhandled rejection
|
|
3134
3232
|
});
|
|
3135
3233
|
};
|
|
3136
|
-
_proto.
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
|
|
3140
|
-
|
|
3141
|
-
|
|
3142
|
-
_proto._onMessage = function _onMessage(workerId, msg) {
|
|
3143
|
-
// onerror of web worker can't catch error in promise
|
|
3144
|
-
var error = msg.data.error;
|
|
3145
|
-
if (error) {
|
|
3146
|
-
this._workerItems[workerId].reject(error);
|
|
3234
|
+
_proto._handleSubAsset = function _handleSubAsset(resource, type, index) {
|
|
3235
|
+
var _this = this;
|
|
3236
|
+
var glTFResourceKey = glTFResourceMap[type];
|
|
3237
|
+
if (type === 8) {
|
|
3238
|
+
var _this_glTFResource, _glTFResourceKey;
|
|
3239
|
+
((_this_glTFResource = this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = resource;
|
|
3147
3240
|
} else {
|
|
3148
|
-
this.
|
|
3241
|
+
var url = this.glTFResource.url;
|
|
3242
|
+
resource.then(function(item) {
|
|
3243
|
+
if (index == undefined) {
|
|
3244
|
+
_this.glTFResource[glTFResourceKey] = item;
|
|
3245
|
+
} else {
|
|
3246
|
+
var _this_glTFResource, _glTFResourceKey;
|
|
3247
|
+
((_this_glTFResource = _this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = item;
|
|
3248
|
+
}
|
|
3249
|
+
if (type === 7) {
|
|
3250
|
+
for(var i = 0, length = item.length; i < length; i++){
|
|
3251
|
+
var mesh = item[i];
|
|
3252
|
+
// @ts-ignore
|
|
3253
|
+
_this.resourceManager._onSubAssetSuccess(url, glTFResourceKey + "[" + index + "][" + i + "]", mesh);
|
|
3254
|
+
}
|
|
3255
|
+
} else {
|
|
3256
|
+
// @ts-ignore
|
|
3257
|
+
_this.resourceManager._onSubAssetSuccess(url, "" + glTFResourceKey + (index === undefined ? "" : "[" + index + "]"), item);
|
|
3258
|
+
var _this_glTF_scene;
|
|
3259
|
+
if (type === 2 && ((_this_glTF_scene = _this.glTF.scene) != null ? _this_glTF_scene : 0) === index) {
|
|
3260
|
+
// @ts-ignore
|
|
3261
|
+
_this.resourceManager._onSubAssetSuccess(url, "defaultSceneRoot", item);
|
|
3262
|
+
}
|
|
3263
|
+
}
|
|
3264
|
+
}).catch(function(e) {
|
|
3265
|
+
Logger.error("GLTFParserContext", "Failed to load " + glTFResourceKey + " " + index + ": " + e);
|
|
3266
|
+
});
|
|
3149
3267
|
}
|
|
3150
|
-
this._nextTask(workerId);
|
|
3151
3268
|
};
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
var taskItem = this._taskQueue.shift();
|
|
3155
|
-
var workerItem = this._workerItems[workerId];
|
|
3156
|
-
workerItem.resolve = taskItem.resolve;
|
|
3157
|
-
workerItem.reject = taskItem.reject;
|
|
3158
|
-
workerItem.worker.postMessage(taskItem.message);
|
|
3159
|
-
} else {
|
|
3160
|
-
this._workerStatus ^= 1 << workerId;
|
|
3161
|
-
}
|
|
3269
|
+
GLTFParserContext.addParser = function addParser(parserType, parser) {
|
|
3270
|
+
this._parsers[parserType] = parser;
|
|
3162
3271
|
};
|
|
3163
|
-
return
|
|
3272
|
+
return GLTFParserContext;
|
|
3164
3273
|
}();
|
|
3274
|
+
GLTFParserContext._parsers = {};
|
|
3275
|
+
/**
|
|
3276
|
+
* @internal
|
|
3277
|
+
*/ var BufferInfo = function BufferInfo(data, interleaved, stride) {
|
|
3278
|
+
this.data = data;
|
|
3279
|
+
this.interleaved = interleaved;
|
|
3280
|
+
this.stride = stride;
|
|
3281
|
+
this.vertexBindingInfos = {};
|
|
3282
|
+
};
|
|
3283
|
+
var GLTFParserType = /*#__PURE__*/ function(GLTFParserType) {
|
|
3284
|
+
GLTFParserType[GLTFParserType["Schema"] = 0] = "Schema";
|
|
3285
|
+
GLTFParserType[GLTFParserType["Validator"] = 1] = "Validator";
|
|
3286
|
+
GLTFParserType[GLTFParserType["Scene"] = 2] = "Scene";
|
|
3287
|
+
GLTFParserType[GLTFParserType["Buffer"] = 3] = "Buffer";
|
|
3288
|
+
GLTFParserType[GLTFParserType["BufferView"] = 4] = "BufferView";
|
|
3289
|
+
GLTFParserType[GLTFParserType["Texture"] = 5] = "Texture";
|
|
3290
|
+
GLTFParserType[GLTFParserType["Material"] = 6] = "Material";
|
|
3291
|
+
GLTFParserType[GLTFParserType["Mesh"] = 7] = "Mesh";
|
|
3292
|
+
GLTFParserType[GLTFParserType["Entity"] = 8] = "Entity";
|
|
3293
|
+
GLTFParserType[GLTFParserType["Skin"] = 9] = "Skin";
|
|
3294
|
+
GLTFParserType[GLTFParserType["Animation"] = 10] = "Animation";
|
|
3295
|
+
GLTFParserType[GLTFParserType["AnimatorController"] = 11] = "AnimatorController";
|
|
3296
|
+
return GLTFParserType;
|
|
3297
|
+
}({});
|
|
3298
|
+
var _obj$1;
|
|
3299
|
+
var glTFSchemaMap = (_obj$1 = {}, _obj$1[2] = "scenes", _obj$1[3] = "buffers", _obj$1[5] = "textures", _obj$1[6] = "materials", _obj$1[7] = "meshes", _obj$1[8] = "nodes", _obj$1[9] = "skins", _obj$1[10] = "animations", _obj$1[4] = "bufferViews", _obj$1);
|
|
3300
|
+
var _obj1;
|
|
3301
|
+
var glTFResourceMap = (_obj1 = {}, _obj1[2] = "_sceneRoots", _obj1[5] = "textures", _obj1[6] = "materials", _obj1[7] = "meshes", _obj1[8] = "entities", _obj1[9] = "skins", _obj1[10] = "animations", _obj1[11] = "animatorController", _obj1);
|
|
3302
|
+
function registerGLTFParser(pipeline) {
|
|
3303
|
+
return function(Parser) {
|
|
3304
|
+
var parser = new Parser();
|
|
3305
|
+
GLTFParserContext.addParser(pipeline, parser);
|
|
3306
|
+
};
|
|
3307
|
+
}
|
|
3165
3308
|
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
}
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3309
|
+
/**
|
|
3310
|
+
* @internal
|
|
3311
|
+
*/ var GLTFUtils = /*#__PURE__*/ function() {
|
|
3312
|
+
function GLTFUtils() {}
|
|
3313
|
+
GLTFUtils.floatBufferToVector2Array = function floatBufferToVector2Array(buffer) {
|
|
3314
|
+
var bufferLen = buffer.length;
|
|
3315
|
+
var array = new Array(bufferLen / 2);
|
|
3316
|
+
for(var i = 0; i < bufferLen; i += 2){
|
|
3317
|
+
array[i / 2] = new Vector2(buffer[i], buffer[i + 1]);
|
|
3174
3318
|
}
|
|
3175
|
-
return
|
|
3176
|
-
};
|
|
3177
|
-
_proto.destroy = function destroy() {
|
|
3178
|
-
this._transcodeWorkerPool.destroy();
|
|
3179
|
-
};
|
|
3180
|
-
_proto._createTranscodePool = function _createTranscodePool(workerURL, wasmBuffer) {
|
|
3181
|
-
this._transcodeWorkerPool = new WorkerPool(this.workerLimitCount, function() {
|
|
3182
|
-
return new Promise(function(resolve, reject) {
|
|
3183
|
-
var onMessage = function onMessage(e) {
|
|
3184
|
-
if (e.data.error) {
|
|
3185
|
-
reject(e.data.error);
|
|
3186
|
-
} else {
|
|
3187
|
-
resolve(worker);
|
|
3188
|
-
}
|
|
3189
|
-
};
|
|
3190
|
-
var worker = new Worker(workerURL);
|
|
3191
|
-
var msg = {
|
|
3192
|
-
type: "init",
|
|
3193
|
-
transcoderWasm: wasmBuffer
|
|
3194
|
-
};
|
|
3195
|
-
worker.addEventListener("message", onMessage);
|
|
3196
|
-
worker.postMessage(msg);
|
|
3197
|
-
});
|
|
3198
|
-
});
|
|
3199
|
-
return this._transcodeWorkerPool.prepareWorker();
|
|
3319
|
+
return array;
|
|
3200
3320
|
};
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
var init = function init(wasmBinary) {
|
|
3207
|
-
if (!initPromise) {
|
|
3208
|
-
initPromise = new Promise(function(resolve, reject) {
|
|
3209
|
-
var BasisModule = {
|
|
3210
|
-
wasmBinary: wasmBinary,
|
|
3211
|
-
onRuntimeInitialized: function() {
|
|
3212
|
-
return resolve(BasisModule);
|
|
3213
|
-
},
|
|
3214
|
-
onAbort: reject
|
|
3215
|
-
};
|
|
3216
|
-
self["BASIS"](BasisModule);
|
|
3217
|
-
}).then(function(BasisModule) {
|
|
3218
|
-
BasisModule.initializeBasis();
|
|
3219
|
-
return BasisModule.KTX2File;
|
|
3220
|
-
});
|
|
3321
|
+
GLTFUtils.floatBufferToVector3Array = function floatBufferToVector3Array(buffer) {
|
|
3322
|
+
var bufferLen = buffer.length;
|
|
3323
|
+
var array = new Array(bufferLen / 3);
|
|
3324
|
+
for(var i = 0; i < bufferLen; i += 3){
|
|
3325
|
+
array[i / 3] = new Vector3(buffer[i], buffer[i + 1], buffer[i + 2]);
|
|
3221
3326
|
}
|
|
3222
|
-
return
|
|
3327
|
+
return array;
|
|
3223
3328
|
};
|
|
3224
|
-
|
|
3225
|
-
var
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
self.postMessage("init-completed");
|
|
3230
|
-
}).catch(function(e) {
|
|
3231
|
-
return self.postMessage({
|
|
3232
|
-
error: e
|
|
3233
|
-
});
|
|
3234
|
-
});
|
|
3235
|
-
break;
|
|
3236
|
-
case "transcode":
|
|
3237
|
-
init().then(function(KTX2File) {
|
|
3238
|
-
var result = transcode(message.buffer, message.format, KTX2File);
|
|
3239
|
-
// @ts-ignore
|
|
3240
|
-
result.type = "transcoded";
|
|
3241
|
-
self.postMessage(result);
|
|
3242
|
-
}).catch(function(e) {
|
|
3243
|
-
return self.postMessage({
|
|
3244
|
-
error: e
|
|
3245
|
-
});
|
|
3246
|
-
});
|
|
3247
|
-
break;
|
|
3329
|
+
GLTFUtils.floatBufferToVector4Array = function floatBufferToVector4Array(buffer) {
|
|
3330
|
+
var bufferLen = buffer.length;
|
|
3331
|
+
var array = new Array(bufferLen / 4);
|
|
3332
|
+
for(var i = 0; i < bufferLen; i += 4){
|
|
3333
|
+
array[i / 4] = new Vector4(buffer[i], buffer[i + 1], buffer[i + 2], buffer[i + 3]);
|
|
3248
3334
|
}
|
|
3335
|
+
return array;
|
|
3249
3336
|
};
|
|
3250
|
-
|
|
3251
|
-
var
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
onAbort: reject
|
|
3262
|
-
};
|
|
3263
|
-
self["BASIS"](BasisModule);
|
|
3264
|
-
}).then(function(BasisModule) {
|
|
3265
|
-
BasisModule.initializeBasis();
|
|
3266
|
-
return BasisModule.KTX2File;
|
|
3267
|
-
});
|
|
3337
|
+
GLTFUtils.floatBufferToColorArray = function floatBufferToColorArray(buffer, isColor3) {
|
|
3338
|
+
var bufferLen = buffer.length;
|
|
3339
|
+
var colors = new Array(bufferLen / (isColor3 ? 3 : 4));
|
|
3340
|
+
if (isColor3) {
|
|
3341
|
+
for(var i = 0; i < bufferLen; i += 3){
|
|
3342
|
+
colors[i / 3] = new Color(buffer[i], buffer[i + 1], buffer[i + 2], 1.0);
|
|
3343
|
+
}
|
|
3344
|
+
} else {
|
|
3345
|
+
for(var i1 = 0; i1 < bufferLen; i1 += 4){
|
|
3346
|
+
colors[i1 / 4] = new Color(buffer[i1], buffer[i1 + 1], buffer[i1 + 2], buffer[i1 + 3]);
|
|
3347
|
+
}
|
|
3268
3348
|
}
|
|
3269
|
-
return
|
|
3349
|
+
return colors;
|
|
3270
3350
|
};
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
function
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
|
|
3283
|
-
|
|
3284
|
-
|
|
3285
|
-
|
|
3286
|
-
|
|
3287
|
-
|
|
3288
|
-
|
|
3289
|
-
return 22;
|
|
3290
|
-
case 9:
|
|
3291
|
-
return 23;
|
|
3292
|
-
case 10:
|
|
3293
|
-
return 25;
|
|
3351
|
+
/**
|
|
3352
|
+
* Get the number of bytes occupied by accessor type.
|
|
3353
|
+
*/ GLTFUtils.getAccessorTypeSize = function getAccessorTypeSize(accessorType) {
|
|
3354
|
+
switch(accessorType){
|
|
3355
|
+
case AccessorType.SCALAR:
|
|
3356
|
+
return 1;
|
|
3357
|
+
case AccessorType.VEC2:
|
|
3358
|
+
return 2;
|
|
3359
|
+
case AccessorType.VEC3:
|
|
3360
|
+
return 3;
|
|
3361
|
+
case AccessorType.VEC4:
|
|
3362
|
+
return 4;
|
|
3363
|
+
case AccessorType.MAT2:
|
|
3364
|
+
return 4;
|
|
3365
|
+
case AccessorType.MAT3:
|
|
3366
|
+
return 9;
|
|
3367
|
+
case AccessorType.MAT4:
|
|
3368
|
+
return 16;
|
|
3294
3369
|
}
|
|
3295
|
-
}
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3370
|
+
};
|
|
3371
|
+
/**
|
|
3372
|
+
* Get the TypedArray corresponding to the component type.
|
|
3373
|
+
*/ GLTFUtils.getComponentType = function getComponentType(componentType) {
|
|
3374
|
+
switch(componentType){
|
|
3375
|
+
case AccessorComponentType.BYTE:
|
|
3376
|
+
return Int8Array;
|
|
3377
|
+
case AccessorComponentType.UNSIGNED_BYTE:
|
|
3378
|
+
return Uint8Array;
|
|
3379
|
+
case AccessorComponentType.SHORT:
|
|
3380
|
+
return Int16Array;
|
|
3381
|
+
case AccessorComponentType.UNSIGNED_SHORT:
|
|
3382
|
+
return Uint16Array;
|
|
3383
|
+
case AccessorComponentType.UNSIGNED_INT:
|
|
3384
|
+
return Uint32Array;
|
|
3385
|
+
case AccessorComponentType.FLOAT:
|
|
3386
|
+
return Float32Array;
|
|
3301
3387
|
}
|
|
3302
|
-
|
|
3303
|
-
|
|
3304
|
-
|
|
3305
|
-
|
|
3306
|
-
|
|
3388
|
+
};
|
|
3389
|
+
GLTFUtils.getNormalizedComponentScale = function getNormalizedComponentScale(componentType) {
|
|
3390
|
+
// Reference: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data
|
|
3391
|
+
switch(componentType){
|
|
3392
|
+
case AccessorComponentType.BYTE:
|
|
3393
|
+
return 1 / 127;
|
|
3394
|
+
case AccessorComponentType.UNSIGNED_BYTE:
|
|
3395
|
+
return 1 / 255;
|
|
3396
|
+
case AccessorComponentType.SHORT:
|
|
3397
|
+
return 1 / 32767;
|
|
3398
|
+
case AccessorComponentType.UNSIGNED_SHORT:
|
|
3399
|
+
return 1 / 65535;
|
|
3400
|
+
default:
|
|
3401
|
+
throw new Error("Galacean.GLTFLoader: Unsupported normalized accessor component type.");
|
|
3307
3402
|
}
|
|
3308
|
-
|
|
3309
|
-
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
width = mipWidth = levelInfo.width;
|
|
3342
|
-
height = mipHeight = levelInfo.height;
|
|
3343
|
-
console.warn("KTX2 transcode to BC will resize to width: " + width + ", height: " + height + ". You'd better use an image whose size if multiple of 4.");
|
|
3403
|
+
};
|
|
3404
|
+
GLTFUtils.getAccessorBuffer = function getAccessorBuffer(context, bufferViews, accessor) {
|
|
3405
|
+
var componentType = accessor.componentType;
|
|
3406
|
+
var TypedArray = GLTFUtils.getComponentType(componentType);
|
|
3407
|
+
var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
|
|
3408
|
+
var dataElementBytes = TypedArray.BYTES_PER_ELEMENT;
|
|
3409
|
+
var elementStride = dataElementSize * dataElementBytes;
|
|
3410
|
+
var accessorCount = accessor.count;
|
|
3411
|
+
var promise;
|
|
3412
|
+
if (accessor.bufferView !== undefined) {
|
|
3413
|
+
var bufferViewIndex = accessor.bufferView;
|
|
3414
|
+
var bufferView = bufferViews[bufferViewIndex];
|
|
3415
|
+
promise = context.get(GLTFParserType.BufferView, accessor.bufferView).then(function(bufferViewData) {
|
|
3416
|
+
var bufferIndex = bufferView.buffer;
|
|
3417
|
+
var _bufferViewData_byteOffset;
|
|
3418
|
+
var bufferByteOffset = (_bufferViewData_byteOffset = bufferViewData.byteOffset) != null ? _bufferViewData_byteOffset : 0;
|
|
3419
|
+
var _accessor_byteOffset;
|
|
3420
|
+
var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
|
|
3421
|
+
var bufferStride = bufferView.byteStride;
|
|
3422
|
+
var bufferInfo;
|
|
3423
|
+
// According to the glTF official documentation only byteStride not undefined is allowed
|
|
3424
|
+
if (bufferStride !== undefined && bufferStride !== elementStride) {
|
|
3425
|
+
var bufferSlice = Math.floor(byteOffset / bufferStride);
|
|
3426
|
+
var bufferCacheKey = bufferViewIndex + ":" + componentType + ":" + bufferSlice + ":" + accessorCount;
|
|
3427
|
+
var accessorBufferCache = context.accessorBufferCache;
|
|
3428
|
+
bufferInfo = accessorBufferCache[bufferCacheKey];
|
|
3429
|
+
if (!bufferInfo) {
|
|
3430
|
+
var offset = bufferByteOffset + bufferSlice * bufferStride;
|
|
3431
|
+
var count = accessorCount * (bufferStride / dataElementBytes);
|
|
3432
|
+
var data = new TypedArray(bufferViewData.buffer, offset, count);
|
|
3433
|
+
accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
|
|
3434
|
+
bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
|
|
3435
|
+
}
|
|
3344
3436
|
} else {
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
if (targetFormat === 10) {
|
|
3351
|
-
dst = new Uint16Array(dst.buffer, dst.byteOffset, dst.byteLength / Uint16Array.BYTES_PER_ELEMENT);
|
|
3352
|
-
}
|
|
3353
|
-
if (!status) {
|
|
3354
|
-
cleanup();
|
|
3355
|
-
throw new Error("transcodeImage failed.");
|
|
3437
|
+
var offset1 = bufferByteOffset + byteOffset;
|
|
3438
|
+
var count1 = accessorCount * dataElementSize;
|
|
3439
|
+
var data1 = new TypedArray(bufferViewData.buffer, offset1, count1);
|
|
3440
|
+
bufferInfo = new BufferInfo(data1, false, elementStride);
|
|
3441
|
+
bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
|
|
3356
3442
|
}
|
|
3357
|
-
|
|
3358
|
-
}
|
|
3359
|
-
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
3443
|
+
return bufferInfo;
|
|
3444
|
+
}).catch(function(e) {
|
|
3445
|
+
Logger.error("GLTFUtil getAccessorBuffer error", e);
|
|
3446
|
+
});
|
|
3447
|
+
} else {
|
|
3448
|
+
var count = accessorCount * dataElementSize;
|
|
3449
|
+
var data = new TypedArray(count);
|
|
3450
|
+
var bufferInfo = new BufferInfo(data, false, elementStride);
|
|
3451
|
+
bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(undefined, TypedArray, undefined, count));
|
|
3452
|
+
promise = AssetPromise.resolve(bufferInfo);
|
|
3453
|
+
}
|
|
3454
|
+
return accessor.sparse ? promise.then(function(bufferInfo) {
|
|
3455
|
+
return GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(function() {
|
|
3456
|
+
return bufferInfo;
|
|
3457
|
+
});
|
|
3458
|
+
}) : promise;
|
|
3459
|
+
};
|
|
3460
|
+
GLTFUtils.bufferToVector3Array = function bufferToVector3Array(buffer, byteOffset, count, normalized, componentType) {
|
|
3461
|
+
var baseOffset = byteOffset / buffer.BYTES_PER_ELEMENT;
|
|
3462
|
+
var stride = buffer.length / count;
|
|
3463
|
+
var vertices = new Array(count);
|
|
3464
|
+
var factor = normalized ? GLTFUtils.getNormalizedComponentScale(componentType) : 1;
|
|
3465
|
+
for(var i = 0; i < count; i++){
|
|
3466
|
+
var index = baseOffset + i * stride;
|
|
3467
|
+
vertices[i] = new Vector3(buffer[index] * factor, buffer[index + 1] * factor, buffer[index + 2] * factor);
|
|
3364
3468
|
}
|
|
3365
|
-
|
|
3366
|
-
}
|
|
3367
|
-
cleanup();
|
|
3368
|
-
return {
|
|
3369
|
-
faces: faces,
|
|
3370
|
-
width: width,
|
|
3371
|
-
height: height,
|
|
3372
|
-
hasAlpha: hasAlpha,
|
|
3373
|
-
faceCount: faceCount,
|
|
3374
|
-
format: format
|
|
3469
|
+
return vertices;
|
|
3375
3470
|
};
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
|
|
3380
|
-
|
|
3381
|
-
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
var
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3471
|
+
GLTFUtils.getBufferViewData = function getBufferViewData(bufferView, buffers) {
|
|
3472
|
+
var _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset;
|
|
3473
|
+
var arrayBuffer = buffers[bufferView.buffer];
|
|
3474
|
+
return arrayBuffer.slice(byteOffset, byteOffset + bufferView.byteLength);
|
|
3475
|
+
};
|
|
3476
|
+
/**
|
|
3477
|
+
* Get accessor data.
|
|
3478
|
+
*/ GLTFUtils.processingSparseData = function processingSparseData(context, accessor, bufferInfo) {
|
|
3479
|
+
var restoreInfo = bufferInfo.restoreInfo;
|
|
3480
|
+
var bufferViews = context.glTF.bufferViews;
|
|
3481
|
+
var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
|
|
3482
|
+
var TypedArray = GLTFUtils.getComponentType(accessor.componentType);
|
|
3483
|
+
var data = bufferInfo.data.slice();
|
|
3484
|
+
var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
|
|
3485
|
+
var indicesBufferView = bufferViews[indices.bufferView];
|
|
3486
|
+
var valuesBufferView = bufferViews[values.bufferView];
|
|
3487
|
+
return AssetPromise.all([
|
|
3488
|
+
context.get(GLTFParserType.BufferView, indices.bufferView),
|
|
3489
|
+
context.get(GLTFParserType.BufferView, values.bufferView)
|
|
3393
3490
|
]).then(function(param) {
|
|
3394
|
-
var
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
|
|
3405
|
-
|
|
3406
|
-
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3411
|
-
|
|
3412
|
-
|
|
3413
|
-
|
|
3414
|
-
|
|
3415
|
-
var transcodeString = funcCode.substring(funcCode.indexOf("{"), funcCode.lastIndexOf("}") + 1);
|
|
3416
|
-
var workerCode = "\n " + jsCode + "\n " + transcode.toString() + "\n " + transcodeString + "\n ";
|
|
3417
|
-
var workerURL = URL.createObjectURL(new Blob([
|
|
3418
|
-
workerCode
|
|
3419
|
-
], {
|
|
3420
|
-
type: "application/javascript"
|
|
3421
|
-
}));
|
|
3422
|
-
return _this._createTranscodePool(workerURL, wasmBuffer);
|
|
3491
|
+
var indicesUint8Array = param[0], valuesUin8Array = param[1];
|
|
3492
|
+
var _indices_byteOffset, _indicesUint8Array_byteOffset;
|
|
3493
|
+
var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesUint8Array_byteOffset = indicesUint8Array.byteOffset) != null ? _indicesUint8Array_byteOffset : 0);
|
|
3494
|
+
var indicesByteLength = indicesUint8Array.byteLength;
|
|
3495
|
+
var _values_byteOffset, _valuesUin8Array_byteOffset;
|
|
3496
|
+
var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesUin8Array_byteOffset = valuesUin8Array.byteOffset) != null ? _valuesUin8Array_byteOffset : 0);
|
|
3497
|
+
var valuesByteLength = valuesUin8Array.byteLength;
|
|
3498
|
+
restoreInfo.typeSize = accessorTypeSize;
|
|
3499
|
+
restoreInfo.sparseCount = count;
|
|
3500
|
+
var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
|
|
3501
|
+
var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
|
|
3502
|
+
var indicesArray = new IndexTypeArray(indicesUint8Array.buffer, indicesByteOffset, indexLength);
|
|
3503
|
+
restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferView.buffer, IndexTypeArray, indicesByteOffset, indexLength);
|
|
3504
|
+
var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
|
|
3505
|
+
var valuesArray = new TypedArray(valuesUin8Array.buffer, valuesByteOffset, valueLength);
|
|
3506
|
+
restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferView.buffer, TypedArray, valuesByteOffset, valueLength);
|
|
3507
|
+
for(var i = 0; i < count; i++){
|
|
3508
|
+
var replaceIndex = indicesArray[i];
|
|
3509
|
+
for(var j = 0; j < accessorTypeSize; j++){
|
|
3510
|
+
data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
|
|
3511
|
+
}
|
|
3423
3512
|
}
|
|
3513
|
+
bufferInfo.data = data;
|
|
3514
|
+
}).catch(function(e) {
|
|
3515
|
+
Logger.error("GLTFUtil processingSparseData error", e);
|
|
3424
3516
|
});
|
|
3425
3517
|
};
|
|
3426
|
-
|
|
3427
|
-
|
|
3428
|
-
|
|
3429
|
-
return
|
|
3430
|
-
|
|
3431
|
-
|
|
3432
|
-
|
|
3433
|
-
|
|
3434
|
-
format: format,
|
|
3435
|
-
type: "transcode"
|
|
3436
|
-
});
|
|
3518
|
+
GLTFUtils.getIndexFormat = function getIndexFormat(type) {
|
|
3519
|
+
switch(type){
|
|
3520
|
+
case AccessorComponentType.UNSIGNED_BYTE:
|
|
3521
|
+
return IndexFormat.UInt8;
|
|
3522
|
+
case AccessorComponentType.UNSIGNED_SHORT:
|
|
3523
|
+
return IndexFormat.UInt16;
|
|
3524
|
+
case AccessorComponentType.UNSIGNED_INT:
|
|
3525
|
+
return IndexFormat.UInt32;
|
|
3437
3526
|
}
|
|
3438
3527
|
};
|
|
3439
|
-
|
|
3440
|
-
|
|
3441
|
-
|
|
3442
|
-
|
|
3443
|
-
|
|
3444
|
-
|
|
3445
|
-
|
|
3446
|
-
|
|
3447
|
-
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
|
|
3451
|
-
|
|
3452
|
-
|
|
3453
|
-
|
|
3528
|
+
GLTFUtils.getElementFormat = function getElementFormat(type, size, normalized) {
|
|
3529
|
+
if (normalized === void 0) normalized = false;
|
|
3530
|
+
if (type == AccessorComponentType.FLOAT) {
|
|
3531
|
+
switch(size){
|
|
3532
|
+
case 1:
|
|
3533
|
+
return VertexElementFormat.Float;
|
|
3534
|
+
case 2:
|
|
3535
|
+
return VertexElementFormat.Vector2;
|
|
3536
|
+
case 3:
|
|
3537
|
+
return VertexElementFormat.Vector3;
|
|
3538
|
+
case 4:
|
|
3539
|
+
return VertexElementFormat.Vector4;
|
|
3540
|
+
}
|
|
3541
|
+
}
|
|
3542
|
+
if (type == AccessorComponentType.SHORT) {
|
|
3543
|
+
switch(size){
|
|
3544
|
+
case 2:
|
|
3545
|
+
return normalized ? VertexElementFormat.NormalizedShort2 : VertexElementFormat.Short2;
|
|
3546
|
+
case 3:
|
|
3547
|
+
case 4:
|
|
3548
|
+
return normalized ? VertexElementFormat.NormalizedShort4 : VertexElementFormat.Short4;
|
|
3549
|
+
}
|
|
3550
|
+
}
|
|
3551
|
+
if (type == AccessorComponentType.UNSIGNED_SHORT) {
|
|
3552
|
+
switch(size){
|
|
3553
|
+
case 2:
|
|
3554
|
+
return normalized ? VertexElementFormat.NormalizedUShort2 : VertexElementFormat.UShort2;
|
|
3555
|
+
case 3:
|
|
3556
|
+
case 4:
|
|
3557
|
+
return normalized ? VertexElementFormat.NormalizedUShort4 : VertexElementFormat.UShort4;
|
|
3558
|
+
}
|
|
3559
|
+
}
|
|
3560
|
+
if (type == AccessorComponentType.BYTE) {
|
|
3561
|
+
switch(size){
|
|
3562
|
+
case 2:
|
|
3563
|
+
case 3:
|
|
3564
|
+
case 4:
|
|
3565
|
+
return normalized ? VertexElementFormat.NormalizedByte4 : VertexElementFormat.Byte4;
|
|
3566
|
+
}
|
|
3567
|
+
}
|
|
3568
|
+
if (type == AccessorComponentType.UNSIGNED_BYTE) {
|
|
3569
|
+
switch(size){
|
|
3570
|
+
case 2:
|
|
3571
|
+
case 3:
|
|
3572
|
+
case 4:
|
|
3573
|
+
return normalized ? VertexElementFormat.NormalizedUByte4 : VertexElementFormat.UByte4;
|
|
3454
3574
|
}
|
|
3455
|
-
return KTX2Loader._getBinomialLLCTranscoder(options.workerCount).init();
|
|
3456
3575
|
}
|
|
3457
3576
|
};
|
|
3458
3577
|
/**
|
|
3459
|
-
*
|
|
3460
|
-
*/
|
|
3461
|
-
return new
|
|
3462
|
-
var
|
|
3463
|
-
|
|
3578
|
+
* Load image buffer
|
|
3579
|
+
*/ GLTFUtils.loadImageBuffer = function loadImageBuffer(imageBuffer, type) {
|
|
3580
|
+
return new Promise(function(resolve, reject) {
|
|
3581
|
+
var blob = new window.Blob([
|
|
3582
|
+
imageBuffer
|
|
3583
|
+
], {
|
|
3584
|
+
type: type
|
|
3464
3585
|
});
|
|
3465
|
-
var
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3586
|
+
var img = new Image();
|
|
3587
|
+
img.onerror = function() {
|
|
3588
|
+
reject(new Error("Failed to load image buffer"));
|
|
3589
|
+
};
|
|
3590
|
+
img.onload = function() {
|
|
3591
|
+
// Call requestAnimationFrame to avoid iOS's bug.
|
|
3592
|
+
requestAnimationFrame(function() {
|
|
3593
|
+
resolve(img);
|
|
3594
|
+
img.onload = null;
|
|
3595
|
+
img.onerror = null;
|
|
3596
|
+
img.onabort = null;
|
|
3474
3597
|
});
|
|
3475
|
-
}
|
|
3598
|
+
};
|
|
3599
|
+
img.crossOrigin = "anonymous";
|
|
3600
|
+
img.src = URL.createObjectURL(blob);
|
|
3476
3601
|
});
|
|
3477
3602
|
};
|
|
3478
3603
|
/**
|
|
3479
|
-
*
|
|
3480
|
-
|
|
3481
|
-
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
|
|
3485
|
-
|
|
3486
|
-
|
|
3487
|
-
|
|
3488
|
-
var
|
|
3489
|
-
|
|
3490
|
-
var
|
|
3491
|
-
|
|
3492
|
-
|
|
3493
|
-
|
|
3604
|
+
* Parse the glb format.
|
|
3605
|
+
*/ GLTFUtils.parseGLB = function parseGLB(context, originBuffer) {
|
|
3606
|
+
var UINT32_LENGTH = 4;
|
|
3607
|
+
var GLB_HEADER_MAGIC = 0x46546c67; // 'glTF'
|
|
3608
|
+
var GLB_HEADER_LENGTH = 12;
|
|
3609
|
+
var GLB_CHUNK_TYPES = {
|
|
3610
|
+
JSON: 0x4e4f534a,
|
|
3611
|
+
BIN: 0x004e4942
|
|
3612
|
+
};
|
|
3613
|
+
var dataView = new DataView(originBuffer);
|
|
3614
|
+
// Read header
|
|
3615
|
+
var header = {
|
|
3616
|
+
magic: dataView.getUint32(0, true),
|
|
3617
|
+
version: dataView.getUint32(UINT32_LENGTH, true),
|
|
3618
|
+
length: dataView.getUint32(2 * UINT32_LENGTH, true)
|
|
3619
|
+
};
|
|
3620
|
+
// Return the original buffer if it is not a glb
|
|
3621
|
+
if (header.magic !== GLB_HEADER_MAGIC) {
|
|
3494
3622
|
return {
|
|
3495
|
-
|
|
3496
|
-
engine: engine,
|
|
3497
|
-
result: result,
|
|
3498
|
-
targetFormat: targetFormat,
|
|
3499
|
-
params: ktx2Container.keyValue["GalaceanTextureParams"]
|
|
3623
|
+
originBuffer: originBuffer
|
|
3500
3624
|
};
|
|
3501
|
-
});
|
|
3502
|
-
};
|
|
3503
|
-
/** @internal */ KTX2Loader._createTextureByBuffer = function _createTextureByBuffer(engine, isSRGB, transcodeResult, targetFormat, params, restoredTexture) {
|
|
3504
|
-
var width = transcodeResult.width, height = transcodeResult.height, faces = transcodeResult.faces;
|
|
3505
|
-
var faceCount = faces.length;
|
|
3506
|
-
var mipmaps = faces[0];
|
|
3507
|
-
var mipmap = mipmaps.length > 1;
|
|
3508
|
-
var engineFormat = this._getEngineTextureFormat(targetFormat, transcodeResult);
|
|
3509
|
-
var texture;
|
|
3510
|
-
if (faceCount !== 6) {
|
|
3511
|
-
texture = restoredTexture || new Texture2D(engine, width, height, engineFormat, mipmap, isSRGB);
|
|
3512
|
-
for(var mipLevel = 0; mipLevel < mipmaps.length; mipLevel++){
|
|
3513
|
-
var data = mipmaps[mipLevel].data;
|
|
3514
|
-
texture.setPixelBuffer(data, mipLevel);
|
|
3515
|
-
}
|
|
3516
|
-
} else {
|
|
3517
|
-
texture = restoredTexture || new TextureCube(engine, height, engineFormat, mipmap, isSRGB);
|
|
3518
|
-
for(var i = 0; i < faces.length; i++){
|
|
3519
|
-
var faceData = faces[i];
|
|
3520
|
-
for(var mipLevel1 = 0; mipLevel1 < mipmaps.length; mipLevel1++){
|
|
3521
|
-
texture.setPixelBuffer(TextureCubeFace.PositiveX + i, faceData[mipLevel1].data, mipLevel1);
|
|
3522
|
-
}
|
|
3523
|
-
}
|
|
3524
3625
|
}
|
|
3525
|
-
|
|
3526
|
-
|
|
3527
|
-
|
|
3528
|
-
|
|
3529
|
-
|
|
3626
|
+
// Read main data
|
|
3627
|
+
var chunkLength = dataView.getUint32(GLB_HEADER_LENGTH, true);
|
|
3628
|
+
var chunkType = dataView.getUint32(GLB_HEADER_LENGTH + UINT32_LENGTH, true);
|
|
3629
|
+
// Read glTF json
|
|
3630
|
+
if (chunkType !== GLB_CHUNK_TYPES.JSON) {
|
|
3631
|
+
console.error("Invalid glb chunk type. Expected 0x4E4F534A, found 0x" + chunkType.toString(16));
|
|
3632
|
+
return null;
|
|
3530
3633
|
}
|
|
3531
|
-
|
|
3634
|
+
var glTFData = new Uint8Array(originBuffer, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength);
|
|
3635
|
+
var glTF = JSON.parse(Utils.decodeText(glTFData));
|
|
3636
|
+
// Read all buffers
|
|
3637
|
+
var buffers = [];
|
|
3638
|
+
var byteOffset = GLB_HEADER_LENGTH + 2 * UINT32_LENGTH + chunkLength;
|
|
3639
|
+
var restoreGLBBufferSlice = context.contentRestorer.glbBufferSlices;
|
|
3640
|
+
while(byteOffset < header.length){
|
|
3641
|
+
chunkLength = dataView.getUint32(byteOffset, true);
|
|
3642
|
+
chunkType = dataView.getUint32(byteOffset + UINT32_LENGTH, true);
|
|
3643
|
+
if (chunkType !== GLB_CHUNK_TYPES.BIN) {
|
|
3644
|
+
console.error("Invalid glb chunk type. Expected 0x004E4942, found 0x" + chunkType.toString(16));
|
|
3645
|
+
return null;
|
|
3646
|
+
}
|
|
3647
|
+
var currentOffset = byteOffset + 2 * UINT32_LENGTH;
|
|
3648
|
+
var buffer = originBuffer.slice(currentOffset, currentOffset + chunkLength);
|
|
3649
|
+
buffers.push(buffer);
|
|
3650
|
+
restoreGLBBufferSlice.push(new Vector2(currentOffset, chunkLength));
|
|
3651
|
+
byteOffset += chunkLength + 2 * UINT32_LENGTH;
|
|
3652
|
+
}
|
|
3653
|
+
return {
|
|
3654
|
+
glTF: glTF,
|
|
3655
|
+
buffers: buffers
|
|
3656
|
+
};
|
|
3532
3657
|
};
|
|
3533
|
-
|
|
3534
|
-
var
|
|
3535
|
-
|
|
3536
|
-
|
|
3537
|
-
if (targetFormat === KTX2TargetFormat.PVRTC && (!MathUtil.isPowerOf2(pixelWidth) || !MathUtil.isPowerOf2(pixelHeight) || pixelWidth !== pixelHeight)) {
|
|
3538
|
-
Logger.warn("PVRTC image need power of 2 and width===height, downgrade to RGBA8");
|
|
3539
|
-
return KTX2TargetFormat.R8G8B8A8;
|
|
3658
|
+
GLTFUtils.parseSampler = function parseSampler(texture, samplerInfo) {
|
|
3659
|
+
var filterMode = samplerInfo.filterMode, wrapModeU = samplerInfo.wrapModeU, wrapModeV = samplerInfo.wrapModeV;
|
|
3660
|
+
if (filterMode !== undefined) {
|
|
3661
|
+
texture.filterMode = filterMode;
|
|
3540
3662
|
}
|
|
3541
|
-
if (
|
|
3542
|
-
|
|
3543
|
-
|
|
3663
|
+
if (wrapModeU !== undefined) {
|
|
3664
|
+
texture.wrapModeU = wrapModeU;
|
|
3665
|
+
}
|
|
3666
|
+
if (wrapModeV !== undefined) {
|
|
3667
|
+
texture.wrapModeV = wrapModeV;
|
|
3544
3668
|
}
|
|
3545
|
-
return targetFormat;
|
|
3546
3669
|
};
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
|
|
3552
|
-
if (
|
|
3553
|
-
|
|
3554
|
-
if (renderer.canIUse(capabilities[j])) {
|
|
3555
|
-
return format;
|
|
3556
|
-
}
|
|
3557
|
-
}
|
|
3670
|
+
GLTFUtils.getSamplerInfo = function getSamplerInfo(sampler) {
|
|
3671
|
+
var minFilter = sampler.minFilter, magFilter = sampler.magFilter, wrapS = sampler.wrapS, wrapT = sampler.wrapT;
|
|
3672
|
+
var info = {};
|
|
3673
|
+
if (minFilter || magFilter) {
|
|
3674
|
+
info.mipmap = minFilter >= TextureMinFilter.NEAREST_MIPMAP_NEAREST;
|
|
3675
|
+
if (magFilter === TextureMagFilter.NEAREST) {
|
|
3676
|
+
info.filterMode = TextureFilterMode.Point;
|
|
3558
3677
|
} else {
|
|
3559
|
-
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
case KTX2TargetFormat.R8G8:
|
|
3564
|
-
if (renderer.isWebGL2) return format;
|
|
3678
|
+
if (minFilter <= TextureMinFilter.LINEAR_MIPMAP_NEAREST) {
|
|
3679
|
+
info.filterMode = TextureFilterMode.Bilinear;
|
|
3680
|
+
} else {
|
|
3681
|
+
info.filterMode = TextureFilterMode.Trilinear;
|
|
3565
3682
|
}
|
|
3566
3683
|
}
|
|
3567
3684
|
}
|
|
3568
|
-
|
|
3569
|
-
|
|
3570
|
-
KTX2Loader._getBinomialLLCTranscoder = function _getBinomialLLCTranscoder(workerCount) {
|
|
3571
|
-
if (workerCount === void 0) workerCount = 4;
|
|
3572
|
-
var _this__binomialLLCTranscoder;
|
|
3573
|
-
return (_this__binomialLLCTranscoder = this._binomialLLCTranscoder) != null ? _this__binomialLLCTranscoder : this._binomialLLCTranscoder = new BinomialLLCTranscoder(workerCount);
|
|
3574
|
-
};
|
|
3575
|
-
KTX2Loader._getEngineTextureFormat = function _getEngineTextureFormat(basisFormat, transcodeResult) {
|
|
3576
|
-
var hasAlpha = transcodeResult.hasAlpha;
|
|
3577
|
-
switch(basisFormat){
|
|
3578
|
-
case KTX2TargetFormat.ASTC:
|
|
3579
|
-
return TextureFormat.ASTC_4x4;
|
|
3580
|
-
case KTX2TargetFormat.ETC:
|
|
3581
|
-
return hasAlpha ? TextureFormat.ETC2_RGBA8 : TextureFormat.ETC2_RGB;
|
|
3582
|
-
case KTX2TargetFormat.BC7:
|
|
3583
|
-
return TextureFormat.BC7;
|
|
3584
|
-
case KTX2TargetFormat.BC1_BC3:
|
|
3585
|
-
return hasAlpha ? TextureFormat.BC3 : TextureFormat.BC1;
|
|
3586
|
-
case KTX2TargetFormat.PVRTC:
|
|
3587
|
-
return hasAlpha ? TextureFormat.PVRTC_RGBA4 : TextureFormat.PVRTC_RGB4;
|
|
3588
|
-
case KTX2TargetFormat.R8G8B8A8:
|
|
3589
|
-
return TextureFormat.R8G8B8A8;
|
|
3590
|
-
case KTX2TargetFormat.BC6H:
|
|
3591
|
-
return TextureFormat.BC6H;
|
|
3592
|
-
case KTX2TargetFormat.ASTC_HDR_4x4:
|
|
3593
|
-
return TextureFormat.ASTC_4x4;
|
|
3594
|
-
case KTX2TargetFormat.R16G16B16A16:
|
|
3595
|
-
return TextureFormat.R16G16B16A16;
|
|
3685
|
+
if (wrapS) {
|
|
3686
|
+
info.wrapModeU = GLTFTextureParser._wrapMap[wrapS];
|
|
3596
3687
|
}
|
|
3688
|
+
if (wrapT) {
|
|
3689
|
+
info.wrapModeV = GLTFTextureParser._wrapMap[wrapT];
|
|
3690
|
+
}
|
|
3691
|
+
return info;
|
|
3597
3692
|
};
|
|
3598
|
-
return
|
|
3599
|
-
}(
|
|
3600
|
-
var _obj$1;
|
|
3601
|
-
KTX2Loader._priorityFormats = (_obj$1 = {}, _obj$1[ColorModel.ETC1S] = [
|
|
3602
|
-
KTX2TargetFormat.ETC,
|
|
3603
|
-
KTX2TargetFormat.BC7,
|
|
3604
|
-
KTX2TargetFormat.ASTC,
|
|
3605
|
-
KTX2TargetFormat.BC1_BC3,
|
|
3606
|
-
KTX2TargetFormat.PVRTC
|
|
3607
|
-
], _obj$1[ColorModel.UASTC_LDR_4X4] = [
|
|
3608
|
-
KTX2TargetFormat.ASTC,
|
|
3609
|
-
KTX2TargetFormat.BC7,
|
|
3610
|
-
KTX2TargetFormat.ETC,
|
|
3611
|
-
KTX2TargetFormat.BC1_BC3,
|
|
3612
|
-
KTX2TargetFormat.PVRTC
|
|
3613
|
-
], _obj$1[ColorModel.UASTC_HDR_4X4] = [
|
|
3614
|
-
KTX2TargetFormat.ASTC_HDR_4x4,
|
|
3615
|
-
KTX2TargetFormat.BC6H,
|
|
3616
|
-
KTX2TargetFormat.R16G16B16A16
|
|
3617
|
-
], _obj$1);
|
|
3618
|
-
var _obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9;
|
|
3619
|
-
KTX2Loader._capabilityMap = (_obj9 = {}, _obj9[KTX2TargetFormat.ASTC] = (_obj1 = {}, _obj1[DFDTransferFunction.linear] = [
|
|
3620
|
-
GLCapabilityType.astc,
|
|
3621
|
-
GLCapabilityType.astc_webkit
|
|
3622
|
-
], _obj1[DFDTransferFunction.sRGB] = [
|
|
3623
|
-
GLCapabilityType.astc,
|
|
3624
|
-
GLCapabilityType.astc_webkit
|
|
3625
|
-
], _obj1), _obj9[KTX2TargetFormat.ETC] = (_obj2 = {}, _obj2[DFDTransferFunction.linear] = [
|
|
3626
|
-
GLCapabilityType.etc,
|
|
3627
|
-
GLCapabilityType.etc_webkit
|
|
3628
|
-
], _obj2[DFDTransferFunction.sRGB] = [
|
|
3629
|
-
GLCapabilityType.etc,
|
|
3630
|
-
GLCapabilityType.etc_webkit
|
|
3631
|
-
], _obj2), _obj9[KTX2TargetFormat.BC7] = (_obj3 = {}, _obj3[DFDTransferFunction.linear] = [
|
|
3632
|
-
GLCapabilityType.bptc
|
|
3633
|
-
], _obj3[DFDTransferFunction.sRGB] = [
|
|
3634
|
-
GLCapabilityType.bptc
|
|
3635
|
-
], _obj3), _obj9[KTX2TargetFormat.BC1_BC3] = (_obj4 = {}, _obj4[DFDTransferFunction.linear] = [
|
|
3636
|
-
GLCapabilityType.s3tc
|
|
3637
|
-
], _obj4[DFDTransferFunction.sRGB] = [
|
|
3638
|
-
GLCapabilityType.s3tc_srgb
|
|
3639
|
-
], _obj4), _obj9[KTX2TargetFormat.BC6H] = (_obj5 = {}, _obj5[DFDTransferFunction.linear] = [
|
|
3640
|
-
GLCapabilityType.bptc
|
|
3641
|
-
], _obj5), _obj9[KTX2TargetFormat.ASTC_HDR_4x4] = (_obj6 = {}, _obj6[DFDTransferFunction.linear] = [
|
|
3642
|
-
GLCapabilityType.astc_hdr
|
|
3643
|
-
], _obj6), _obj9[KTX2TargetFormat.R16G16B16A16] = (_obj7 = {}, _obj7[DFDTransferFunction.linear] = [
|
|
3644
|
-
GLCapabilityType.textureHalfFloat
|
|
3645
|
-
], _obj7), _obj9[KTX2TargetFormat.PVRTC] = (_obj8 = {}, _obj8[DFDTransferFunction.linear] = [
|
|
3646
|
-
GLCapabilityType.pvrtc,
|
|
3647
|
-
GLCapabilityType.pvrtc_webkit
|
|
3648
|
-
], _obj8), _obj9);
|
|
3649
|
-
KTX2Loader = __decorate([
|
|
3650
|
-
resourceLoader(AssetType.KTX2, [
|
|
3651
|
-
"ktx2"
|
|
3652
|
-
])
|
|
3653
|
-
], KTX2Loader);
|
|
3654
|
-
var KTX2ContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
3655
|
-
_inherits(KTX2ContentRestorer, ContentRestorer);
|
|
3656
|
-
function KTX2ContentRestorer(resource, url, requestConfig) {
|
|
3657
|
-
var _this;
|
|
3658
|
-
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
3659
|
-
return _this;
|
|
3660
|
-
}
|
|
3661
|
-
var _proto = KTX2ContentRestorer.prototype;
|
|
3662
|
-
_proto.restoreContent = function restoreContent() {
|
|
3663
|
-
var _this = this;
|
|
3664
|
-
var _this1 = this, resource = _this1.resource, requestConfig = _this1.requestConfig;
|
|
3665
|
-
var engine = resource.engine;
|
|
3666
|
-
return new AssetPromise(function(resolve, reject) {
|
|
3667
|
-
engine.resourceManager// @ts-ignore
|
|
3668
|
-
._request(_this.url, requestConfig).then(function(buffer) {
|
|
3669
|
-
return KTX2Loader._parseBuffer(new Uint8Array(buffer), engine, requestConfig.params).then(function(param) {
|
|
3670
|
-
var ktx2Container = param.ktx2Container, engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
|
|
3671
|
-
return KTX2Loader._createTextureByBuffer(engine, ktx2Container.isSRGB, result, targetFormat, params, resource);
|
|
3672
|
-
});
|
|
3673
|
-
}).then(resolve).catch(reject);
|
|
3674
|
-
});
|
|
3675
|
-
};
|
|
3676
|
-
return KTX2ContentRestorer;
|
|
3677
|
-
}(ContentRestorer);
|
|
3693
|
+
return GLTFUtils;
|
|
3694
|
+
}();
|
|
3678
3695
|
|
|
3679
3696
|
/**
|
|
3680
3697
|
* @internal
|
|
@@ -6406,13 +6423,6 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6406
6423
|
}
|
|
6407
6424
|
var _proto = TextureCubeLoader.prototype;
|
|
6408
6425
|
_proto.load = function load(item, resourceManager) {
|
|
6409
|
-
if (item.urls) {
|
|
6410
|
-
return this._loadCubeFaces(item, resourceManager);
|
|
6411
|
-
} else {
|
|
6412
|
-
return this._loadHDR(item, resourceManager);
|
|
6413
|
-
}
|
|
6414
|
-
};
|
|
6415
|
-
_proto._loadHDR = function _loadHDR(item, resourceManager) {
|
|
6416
6426
|
return new AssetPromise(function(resolve, reject) {
|
|
6417
6427
|
var engine = resourceManager.engine;
|
|
6418
6428
|
var url = item.url;
|
|
@@ -6443,39 +6453,6 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6443
6453
|
}).catch(reject);
|
|
6444
6454
|
});
|
|
6445
6455
|
};
|
|
6446
|
-
_proto._loadCubeFaces = function _loadCubeFaces(item, resourceManager) {
|
|
6447
|
-
return new AssetPromise(function(resolve, reject) {
|
|
6448
|
-
var urls = item.urls;
|
|
6449
|
-
var requestConfig = _extends({}, item, {
|
|
6450
|
-
type: "image"
|
|
6451
|
-
});
|
|
6452
|
-
// @ts-ignore
|
|
6453
|
-
Promise.all(urls.map(function(url) {
|
|
6454
|
-
return resourceManager._request(url, requestConfig);
|
|
6455
|
-
})).then(function(images) {
|
|
6456
|
-
var _item_params;
|
|
6457
|
-
var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_format = _ref.format, format = _ref_format === void 0 ? TextureFormat.R8G8B8A8 : _ref_format, anisoLevel = _ref.anisoLevel, wrapModeU = _ref.wrapModeU, wrapModeV = _ref.wrapModeV, filterMode = _ref.filterMode, _ref_isSRGBColorSpace = _ref.isSRGBColorSpace, isSRGBColorSpace = _ref_isSRGBColorSpace === void 0 ? true : _ref_isSRGBColorSpace, _ref_mipmap = _ref.mipmap, mipmap = _ref_mipmap === void 0 ? true : _ref_mipmap;
|
|
6458
|
-
var _images_ = images[0], width = _images_.width, height = _images_.height;
|
|
6459
|
-
if (width !== height) {
|
|
6460
|
-
reject(new Error("The cube texture must have the same width and height"));
|
|
6461
|
-
return;
|
|
6462
|
-
}
|
|
6463
|
-
var engine = resourceManager.engine;
|
|
6464
|
-
var generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(engine, width, height, format, mipmap, isSRGBColorSpace);
|
|
6465
|
-
var texture = new TextureCube(engine, width, format, generateMipmap, isSRGBColorSpace);
|
|
6466
|
-
texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
|
|
6467
|
-
texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
|
|
6468
|
-
texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
|
|
6469
|
-
texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
|
|
6470
|
-
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6471
|
-
texture.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
|
|
6472
|
-
}
|
|
6473
|
-
texture.generateMipmaps();
|
|
6474
|
-
resourceManager.addContentRestorer(new CubeFaceContentRestorer(texture, urls, requestConfig));
|
|
6475
|
-
resolve(texture);
|
|
6476
|
-
}).catch(reject);
|
|
6477
|
-
});
|
|
6478
|
-
};
|
|
6479
6456
|
return TextureCubeLoader;
|
|
6480
6457
|
}(Loader);
|
|
6481
6458
|
TextureCubeLoader = __decorate([
|
|
@@ -6509,31 +6486,6 @@ var HDRContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
|
6509
6486
|
};
|
|
6510
6487
|
return HDRContentRestorer;
|
|
6511
6488
|
}(ContentRestorer);
|
|
6512
|
-
var CubeFaceContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6513
|
-
_inherits(CubeFaceContentRestorer, ContentRestorer);
|
|
6514
|
-
function CubeFaceContentRestorer(resource, urls, requestConfig) {
|
|
6515
|
-
var _this;
|
|
6516
|
-
_this = ContentRestorer.call(this, resource) || this, _this.urls = urls, _this.requestConfig = requestConfig;
|
|
6517
|
-
return _this;
|
|
6518
|
-
}
|
|
6519
|
-
var _proto = CubeFaceContentRestorer.prototype;
|
|
6520
|
-
_proto.restoreContent = function restoreContent() {
|
|
6521
|
-
var _this = this;
|
|
6522
|
-
return new AssetPromise(function(resolve, reject) {
|
|
6523
|
-
Promise.all(_this.urls.map(function(url) {
|
|
6524
|
-
return request(url, _this.requestConfig);
|
|
6525
|
-
})).then(function(images) {
|
|
6526
|
-
var resource = _this.resource;
|
|
6527
|
-
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6528
|
-
resource.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
|
|
6529
|
-
}
|
|
6530
|
-
resource.generateMipmaps();
|
|
6531
|
-
resolve(resource);
|
|
6532
|
-
}).catch(reject);
|
|
6533
|
-
});
|
|
6534
|
-
};
|
|
6535
|
-
return CubeFaceContentRestorer;
|
|
6536
|
-
}(ContentRestorer);
|
|
6537
6489
|
|
|
6538
6490
|
var AudioLoader = /*#__PURE__*/ function(Loader) {
|
|
6539
6491
|
_inherits(AudioLoader, Loader);
|