@galacean/engine-loader 2.0.0-alpha.2 → 2.0.0-alpha.6
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 +541 -516
- package/dist/main.js.map +1 -1
- package/dist/module.js +543 -518
- package/dist/module.js.map +1 -1
- package/package.json +4 -4
- package/types/HDRDecoder.d.ts +23 -0
- package/types/gltf/extensions/GLTFExtensionSchema.d.ts +1 -1
- package/types/index.d.ts +1 -1
- package/types/resource-deserialize/index.d.ts +0 -1
- package/types/resource-deserialize/resources/parser/ParserContext.d.ts +1 -1
- package/types/resource-deserialize/resources/schema/BasicSchema.d.ts +3 -3
- package/types/resource-deserialize/resources/texture2D/TextureDecoder.d.ts +4 -0
- package/types/resource-deserialize/utils/FileHeader.d.ts +5 -0
- package/types/HDRLoader.d.ts +0 -1
- package/types/Texture2DContentRestorer.d.ts +0 -10
- package/types/TextureCubeContentRestorer.d.ts +0 -10
- package/types/resource-deserialize/resources/scene/EditorTextureLoader.d.ts +0 -4
package/dist/main.js
CHANGED
|
@@ -252,7 +252,9 @@ var decoderMap = {};
|
|
|
252
252
|
};
|
|
253
253
|
}
|
|
254
254
|
|
|
255
|
-
|
|
255
|
+
/**
|
|
256
|
+
* Binary format: [MAGIC(4B)] [totalLength(4B)] [version(1B)] [typeLen(2B)] [type] [nameLen(2B)] [name] [data...]
|
|
257
|
+
*/ var FileHeader = /*#__PURE__*/ function() {
|
|
256
258
|
function FileHeader() {
|
|
257
259
|
this.totalLength = 0;
|
|
258
260
|
this.version = 0;
|
|
@@ -260,14 +262,23 @@ var FileHeader = /*#__PURE__*/ function() {
|
|
|
260
262
|
this.name = "";
|
|
261
263
|
this.headerLength = 0;
|
|
262
264
|
}
|
|
265
|
+
FileHeader.checkMagic = function checkMagic(arrayBuffer) {
|
|
266
|
+
if (arrayBuffer.byteLength < 4) return false;
|
|
267
|
+
var view = new DataView(arrayBuffer);
|
|
268
|
+
return view.getUint32(0, true) === FileHeader.MAGIC;
|
|
269
|
+
};
|
|
263
270
|
FileHeader.decode = function decode(arrayBuffer) {
|
|
264
271
|
var dataView = new DataView(arrayBuffer);
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
var
|
|
269
|
-
var
|
|
270
|
-
var
|
|
272
|
+
if (!FileHeader.checkMagic(arrayBuffer)) {
|
|
273
|
+
throw new Error("Invalid Galacean binary file: missing GLCN magic header.");
|
|
274
|
+
}
|
|
275
|
+
var offset = 4;
|
|
276
|
+
var totalLen = dataView.getUint32(offset, true);
|
|
277
|
+
var fileVersion = dataView.getUint8(offset + 4);
|
|
278
|
+
var typeLen = dataView.getUint16(offset + 5, true);
|
|
279
|
+
var typeUint8Array = new Uint8Array(arrayBuffer, offset + 7, typeLen);
|
|
280
|
+
var nameLen = dataView.getUint16(offset + 7 + typeLen, true);
|
|
281
|
+
var nameUint8Array = new Uint8Array(arrayBuffer, offset + 9 + typeLen, nameLen);
|
|
271
282
|
var name = engineCore.Utils.decodeText(nameUint8Array);
|
|
272
283
|
var type = engineCore.Utils.decodeText(typeUint8Array);
|
|
273
284
|
var header = new FileHeader();
|
|
@@ -275,7 +286,7 @@ var FileHeader = /*#__PURE__*/ function() {
|
|
|
275
286
|
header.name = name;
|
|
276
287
|
header.type = type;
|
|
277
288
|
header.version = fileVersion;
|
|
278
|
-
header.headerLength = nameUint8Array.byteLength + typeUint8Array.byteLength + 9;
|
|
289
|
+
header.headerLength = offset + nameUint8Array.byteLength + typeUint8Array.byteLength + 9;
|
|
279
290
|
return header;
|
|
280
291
|
};
|
|
281
292
|
_create_class(FileHeader, [
|
|
@@ -288,6 +299,8 @@ var FileHeader = /*#__PURE__*/ function() {
|
|
|
288
299
|
]);
|
|
289
300
|
return FileHeader;
|
|
290
301
|
}();
|
|
302
|
+
FileHeader.MAGIC = 0x4e434c47 // "GLCN" in little-endian
|
|
303
|
+
;
|
|
291
304
|
|
|
292
305
|
var InterpolableValueType = /*#__PURE__*/ function(InterpolableValueType) {
|
|
293
306
|
InterpolableValueType[InterpolableValueType["Float"] = 0] = "Float";
|
|
@@ -694,12 +707,12 @@ var ParserType = /*#__PURE__*/ function(ParserType) {
|
|
|
694
707
|
this.rootIds.length = 0;
|
|
695
708
|
this.strippedIds.length = 0;
|
|
696
709
|
};
|
|
697
|
-
/** @internal */ _proto._addDependentAsset = function _addDependentAsset(
|
|
710
|
+
/** @internal */ _proto._addDependentAsset = function _addDependentAsset(url, promise) {
|
|
698
711
|
var _this = this;
|
|
699
712
|
var tasks = this._tasks;
|
|
700
|
-
if (tasks.has(
|
|
713
|
+
if (tasks.has(url)) return;
|
|
701
714
|
++this._total;
|
|
702
|
-
tasks.add(
|
|
715
|
+
tasks.add(url);
|
|
703
716
|
promise.finally(function() {
|
|
704
717
|
++_this._loaded;
|
|
705
718
|
_this._setTaskCompleteProgress(_this._loaded, _this._total);
|
|
@@ -807,7 +820,7 @@ var ReflectionParser = /*#__PURE__*/ function() {
|
|
|
807
820
|
// reference object
|
|
808
821
|
// @ts-ignore
|
|
809
822
|
return context.resourceManager.getResourceByRef(value).then(function(resource) {
|
|
810
|
-
if (context.type === ParserType.Prefab) {
|
|
823
|
+
if (resource && context.type === ParserType.Prefab) {
|
|
811
824
|
// @ts-ignore
|
|
812
825
|
context.resource._addDependenceAsset(resource);
|
|
813
826
|
}
|
|
@@ -850,18 +863,18 @@ var ReflectionParser = /*#__PURE__*/ function() {
|
|
|
850
863
|
_proto._getEntityByConfig = function _getEntityByConfig(entityConfig) {
|
|
851
864
|
var _this = this;
|
|
852
865
|
// @ts-ignore
|
|
853
|
-
var
|
|
866
|
+
var assetUrl = entityConfig.assetUrl;
|
|
854
867
|
var engine = this._context.engine;
|
|
855
|
-
if (
|
|
868
|
+
if (assetUrl) {
|
|
856
869
|
return engine.resourceManager// @ts-ignore
|
|
857
870
|
.getResourceByRef({
|
|
858
|
-
|
|
871
|
+
url: assetUrl,
|
|
859
872
|
key: entityConfig.key,
|
|
860
873
|
isClone: entityConfig.isClone
|
|
861
874
|
}).then(function(entity) {
|
|
862
875
|
// @ts-ignore
|
|
863
|
-
var resource = engine.resourceManager._objectPool[
|
|
864
|
-
if (_this._context.type === ParserType.Prefab) {
|
|
876
|
+
var resource = engine.resourceManager._objectPool[assetUrl];
|
|
877
|
+
if (resource && _this._context.type === ParserType.Prefab) {
|
|
865
878
|
// @ts-ignore
|
|
866
879
|
_this._context.resource._addDependenceAsset(resource);
|
|
867
880
|
}
|
|
@@ -884,7 +897,7 @@ var ReflectionParser = /*#__PURE__*/ function() {
|
|
|
884
897
|
return value["classType"] !== undefined;
|
|
885
898
|
};
|
|
886
899
|
ReflectionParser._isAssetRef = function _isAssetRef(value) {
|
|
887
|
-
return value["
|
|
900
|
+
return value["url"] !== undefined;
|
|
888
901
|
};
|
|
889
902
|
ReflectionParser._isEntityRef = function _isEntityRef(value) {
|
|
890
903
|
return value["entityId"] !== undefined;
|
|
@@ -903,7 +916,7 @@ exports.Texture2DDecoder = /*#__PURE__*/ function() {
|
|
|
903
916
|
function Texture2DDecoder() {}
|
|
904
917
|
Texture2DDecoder.decode = function decode(engine, bufferReader, restoredTexture) {
|
|
905
918
|
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
906
|
-
var
|
|
919
|
+
var url = bufferReader.nextStr();
|
|
907
920
|
var mipmap = !!bufferReader.nextUint8();
|
|
908
921
|
var filterMode = bufferReader.nextUint8();
|
|
909
922
|
var anisoLevel = bufferReader.nextUint8();
|
|
@@ -932,7 +945,7 @@ exports.Texture2DDecoder = /*#__PURE__*/ function() {
|
|
|
932
945
|
}
|
|
933
946
|
}
|
|
934
947
|
// @ts-ignore
|
|
935
|
-
engine.resourceManager._objectPool[
|
|
948
|
+
engine.resourceManager._objectPool[url] = texture2D;
|
|
936
949
|
resolve(texture2D);
|
|
937
950
|
} else {
|
|
938
951
|
var blob = new window.Blob([
|
|
@@ -1236,7 +1249,7 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1236
1249
|
_proto._getEntityByConfig = function _getEntityByConfig(entityConfig, engine) {
|
|
1237
1250
|
var _this = this;
|
|
1238
1251
|
var entityPromise;
|
|
1239
|
-
if (entityConfig.
|
|
1252
|
+
if (entityConfig.assetUrl) {
|
|
1240
1253
|
entityPromise = this._parsePrefab(entityConfig, engine);
|
|
1241
1254
|
} else if (entityConfig.strippedId) {
|
|
1242
1255
|
entityPromise = this._parseStrippedEntity(entityConfig);
|
|
@@ -1256,10 +1269,10 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1256
1269
|
};
|
|
1257
1270
|
_proto._parsePrefab = function _parsePrefab(entityConfig, engine) {
|
|
1258
1271
|
var _this = this;
|
|
1259
|
-
var
|
|
1272
|
+
var assetUrl = entityConfig.assetUrl;
|
|
1260
1273
|
return engine.resourceManager// @ts-ignore
|
|
1261
1274
|
.getResourceByRef({
|
|
1262
|
-
|
|
1275
|
+
url: assetUrl
|
|
1263
1276
|
}).then(function(prefabResource) {
|
|
1264
1277
|
var entity = _instanceof(prefabResource, PrefabResource) ? prefabResource.instantiate() : prefabResource.instantiateSceneRoot();
|
|
1265
1278
|
var instanceContext = new ParserContext(engine, ParserType.Prefab, null);
|
|
@@ -1310,7 +1323,7 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1310
1323
|
var componentConfigMap = context.componentConfigMap;
|
|
1311
1324
|
for(var i = 0, n = components.length; i < n; i++){
|
|
1312
1325
|
var componentConfig = components[i];
|
|
1313
|
-
var key = !componentConfig.
|
|
1326
|
+
var key = !componentConfig.url ? componentConfig.class : componentConfig.url;
|
|
1314
1327
|
var componentId = componentConfig.id;
|
|
1315
1328
|
var component = entity.addComponent(engineCore.Loader.getClass(key));
|
|
1316
1329
|
componentMap.set(componentId, component);
|
|
@@ -1358,53 +1371,6 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1358
1371
|
return HierarchyParser;
|
|
1359
1372
|
}();
|
|
1360
1373
|
|
|
1361
|
-
exports.EditorTextureLoader = /*#__PURE__*/ function(Loader) {
|
|
1362
|
-
_inherits(EditorTextureLoader, Loader);
|
|
1363
|
-
function EditorTextureLoader() {
|
|
1364
|
-
return Loader.apply(this, arguments) || this;
|
|
1365
|
-
}
|
|
1366
|
-
var _proto = EditorTextureLoader.prototype;
|
|
1367
|
-
_proto.load = function load(item, resourceManager) {
|
|
1368
|
-
var requestConfig = _extends({}, item, {
|
|
1369
|
-
type: "arraybuffer"
|
|
1370
|
-
});
|
|
1371
|
-
var url = item.url;
|
|
1372
|
-
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
1373
|
-
resourceManager// @ts-ignore
|
|
1374
|
-
._request(url, requestConfig).then(function(data) {
|
|
1375
|
-
decode(data, resourceManager.engine).then(function(texture) {
|
|
1376
|
-
resourceManager.addContentRestorer(new EditorTexture2DContentRestorer(texture, url, requestConfig));
|
|
1377
|
-
resolve(texture);
|
|
1378
|
-
});
|
|
1379
|
-
}).catch(reject);
|
|
1380
|
-
});
|
|
1381
|
-
};
|
|
1382
|
-
return EditorTextureLoader;
|
|
1383
|
-
}(engineCore.Loader);
|
|
1384
|
-
exports.EditorTextureLoader = __decorate([
|
|
1385
|
-
engineCore.resourceLoader("EditorTexture2D", [
|
|
1386
|
-
"prefab"
|
|
1387
|
-
], true)
|
|
1388
|
-
], exports.EditorTextureLoader);
|
|
1389
|
-
var EditorTexture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
1390
|
-
_inherits(EditorTexture2DContentRestorer, ContentRestorer);
|
|
1391
|
-
function EditorTexture2DContentRestorer(resource, url, requestConfig) {
|
|
1392
|
-
var _this;
|
|
1393
|
-
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
1394
|
-
return _this;
|
|
1395
|
-
}
|
|
1396
|
-
var _proto = EditorTexture2DContentRestorer.prototype;
|
|
1397
|
-
_proto.restoreContent = function restoreContent() {
|
|
1398
|
-
var texture = this.resource;
|
|
1399
|
-
var engine = texture.engine;
|
|
1400
|
-
return engine.resourceManager// @ts-ignore
|
|
1401
|
-
._request(this.url, this.requestConfig).then(function(data) {
|
|
1402
|
-
return decode(data, engine, texture);
|
|
1403
|
-
});
|
|
1404
|
-
};
|
|
1405
|
-
return EditorTexture2DContentRestorer;
|
|
1406
|
-
}(engineCore.ContentRestorer);
|
|
1407
|
-
|
|
1408
1374
|
var MaterialLoaderType = /*#__PURE__*/ function(MaterialLoaderType) {
|
|
1409
1375
|
MaterialLoaderType["Vector2"] = "Vector2";
|
|
1410
1376
|
MaterialLoaderType["Vector3"] = "Vector3";
|
|
@@ -1445,11 +1411,11 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
|
|
|
1445
1411
|
var customAmbientLight = ambient.customAmbientLight, ambientLight = ambient.ambientLight;
|
|
1446
1412
|
if (useCustomAmbient && customAmbientLight) {
|
|
1447
1413
|
// @ts-ignore
|
|
1448
|
-
context._addDependentAsset(customAmbientLight.
|
|
1414
|
+
context._addDependentAsset(customAmbientLight.url, resourceManager.getResourceByRef(customAmbientLight));
|
|
1449
1415
|
}
|
|
1450
1416
|
if (ambientLight && (!useCustomAmbient || useSH)) {
|
|
1451
1417
|
// @ts-ignore
|
|
1452
|
-
context._addDependentAsset(ambientLight.
|
|
1418
|
+
context._addDependentAsset(ambientLight.url, resourceManager.getResourceByRef(ambientLight));
|
|
1453
1419
|
}
|
|
1454
1420
|
}
|
|
1455
1421
|
var background = scene.background;
|
|
@@ -1457,14 +1423,14 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
|
|
|
1457
1423
|
if (backgroundMode === engineCore.BackgroundMode.Texture) {
|
|
1458
1424
|
var texture = background.texture;
|
|
1459
1425
|
// @ts-ignore
|
|
1460
|
-
texture && context._addDependentAsset(texture.
|
|
1426
|
+
texture && context._addDependentAsset(texture.url, resourceManager.getResourceByRef(texture));
|
|
1461
1427
|
} else if (backgroundMode === engineCore.BackgroundMode.Sky) {
|
|
1462
1428
|
var skyMesh = background.skyMesh, skyMaterial = background.skyMaterial;
|
|
1463
1429
|
if (skyMesh && skyMaterial) {
|
|
1464
1430
|
// @ts-ignore
|
|
1465
|
-
context._addDependentAsset(skyMesh.
|
|
1431
|
+
context._addDependentAsset(skyMesh.url, resourceManager.getResourceByRef(skyMesh));
|
|
1466
1432
|
// @ts-ignore
|
|
1467
|
-
context._addDependentAsset(skyMaterial.
|
|
1433
|
+
context._addDependentAsset(skyMaterial.url, resourceManager.getResourceByRef(skyMaterial));
|
|
1468
1434
|
}
|
|
1469
1435
|
}
|
|
1470
1436
|
};
|
|
@@ -1480,12 +1446,12 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
|
|
|
1480
1446
|
var entities = file.entities;
|
|
1481
1447
|
for(var i = 0, n = entities.length; i < n; i++){
|
|
1482
1448
|
var entity = entities[i];
|
|
1483
|
-
if (!!entity.
|
|
1449
|
+
if (!!entity.assetUrl) {
|
|
1484
1450
|
var context = this.context;
|
|
1485
|
-
var
|
|
1451
|
+
var url = entity.assetUrl, key = entity.key;
|
|
1486
1452
|
// @ts-ignore
|
|
1487
|
-
context._addDependentAsset(
|
|
1488
|
-
|
|
1453
|
+
context._addDependentAsset(url, context.resourceManager.getResourceByRef({
|
|
1454
|
+
url: url,
|
|
1489
1455
|
key: key
|
|
1490
1456
|
}));
|
|
1491
1457
|
} else if (entity.strippedId) {
|
|
@@ -1510,7 +1476,7 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
|
|
|
1510
1476
|
if (ReflectionParser._isAssetRef(value)) {
|
|
1511
1477
|
var context = this.context;
|
|
1512
1478
|
// @ts-ignore
|
|
1513
|
-
context._addDependentAsset(value.
|
|
1479
|
+
context._addDependentAsset(value.url, context.resourceManager.getResourceByRef(value));
|
|
1514
1480
|
} else {
|
|
1515
1481
|
for(var key in value){
|
|
1516
1482
|
this._searchDependentAssets(value[key]);
|
|
@@ -1574,7 +1540,7 @@ var AnimationClipLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1574
1540
|
};
|
|
1575
1541
|
_proto._parseKeyframeValue = function _parseKeyframeValue(keyframe, resourceManager) {
|
|
1576
1542
|
var value = keyframe.value;
|
|
1577
|
-
if ((typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && (value == null ? void 0 : value.
|
|
1543
|
+
if ((typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && (value == null ? void 0 : value.url)) {
|
|
1578
1544
|
return new Promise(function(resolve) {
|
|
1579
1545
|
resourceManager// @ts-ignore
|
|
1580
1546
|
.getResourceByRef(value).then(function(asset) {
|
|
@@ -1590,7 +1556,7 @@ var AnimationClipLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1590
1556
|
}(engineCore.Loader);
|
|
1591
1557
|
AnimationClipLoader = __decorate([
|
|
1592
1558
|
engineCore.resourceLoader(engineCore.AssetType.AnimationClip, [
|
|
1593
|
-
"
|
|
1559
|
+
"anim"
|
|
1594
1560
|
])
|
|
1595
1561
|
], AnimationClipLoader);
|
|
1596
1562
|
|
|
@@ -1702,13 +1668,11 @@ var AnimatorControllerLoader = /*#__PURE__*/ function(Loader1) {
|
|
|
1702
1668
|
}(engineCore.Loader);
|
|
1703
1669
|
AnimatorControllerLoader = __decorate([
|
|
1704
1670
|
engineCore.resourceLoader(engineCore.AssetType.AnimatorController, [
|
|
1705
|
-
"
|
|
1706
|
-
]
|
|
1671
|
+
"animCtrl"
|
|
1672
|
+
])
|
|
1707
1673
|
], AnimatorControllerLoader);
|
|
1708
1674
|
|
|
1709
|
-
|
|
1710
|
-
return /^data:(.+?);base64,/.test(url);
|
|
1711
|
-
}
|
|
1675
|
+
var base64Regex = /^data:(.+?);base64,/;
|
|
1712
1676
|
var BufferLoader = /*#__PURE__*/ function(Loader) {
|
|
1713
1677
|
_inherits(BufferLoader, Loader);
|
|
1714
1678
|
function BufferLoader() {
|
|
@@ -1717,27 +1681,24 @@ var BufferLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1717
1681
|
var _proto = BufferLoader.prototype;
|
|
1718
1682
|
_proto.load = function load(item, resourceManager) {
|
|
1719
1683
|
var url = item.url;
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
return c.charCodeAt(0);
|
|
1725
|
-
});
|
|
1726
|
-
resolve(result.buffer);
|
|
1727
|
-
});
|
|
1728
|
-
}
|
|
1729
|
-
// @ts-ignore
|
|
1730
|
-
return resourceManager._request(url, _extends({}, item, {
|
|
1684
|
+
var base64Match = base64Regex.exec(url);
|
|
1685
|
+
var bufferPromise = base64Match ? Promise.resolve(Uint8Array.from(atob(url.slice(13 + base64Match[1].length)), function(c) {
|
|
1686
|
+
return c.charCodeAt(0);
|
|
1687
|
+
}).buffer) : resourceManager._request(url, _extends({}, item, {
|
|
1731
1688
|
type: "arraybuffer"
|
|
1732
1689
|
}));
|
|
1690
|
+
return engineCore.AssetPromise.resolve(bufferPromise).then(function(buffer) {
|
|
1691
|
+
var asset = new engineCore.BufferAsset(resourceManager.engine);
|
|
1692
|
+
asset.buffer = buffer;
|
|
1693
|
+
return asset;
|
|
1694
|
+
});
|
|
1733
1695
|
};
|
|
1734
1696
|
return BufferLoader;
|
|
1735
1697
|
}(engineCore.Loader);
|
|
1736
1698
|
BufferLoader = __decorate([
|
|
1737
1699
|
engineCore.resourceLoader(engineCore.AssetType.Buffer, [
|
|
1738
|
-
"bin"
|
|
1739
|
-
|
|
1740
|
-
], false)
|
|
1700
|
+
"bin"
|
|
1701
|
+
])
|
|
1741
1702
|
], BufferLoader);
|
|
1742
1703
|
|
|
1743
1704
|
var EnvLoader = /*#__PURE__*/ function(Loader) {
|
|
@@ -5314,341 +5275,6 @@ PrefabLoader = __decorate([
|
|
|
5314
5275
|
])
|
|
5315
5276
|
], PrefabLoader);
|
|
5316
5277
|
|
|
5317
|
-
var PI = Math.PI;
|
|
5318
|
-
// referenece: https://www.flipcode.com/archives/HDR_Image_Reader.shtml
|
|
5319
|
-
var HDRLoader = /*#__PURE__*/ function(Loader) {
|
|
5320
|
-
_inherits(HDRLoader, Loader);
|
|
5321
|
-
function HDRLoader() {
|
|
5322
|
-
return Loader.apply(this, arguments) || this;
|
|
5323
|
-
}
|
|
5324
|
-
var _proto = HDRLoader.prototype;
|
|
5325
|
-
_proto.load = function load(item, resourceManager) {
|
|
5326
|
-
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
5327
|
-
var engine = resourceManager.engine;
|
|
5328
|
-
var requestConfig = _extends({}, item, {
|
|
5329
|
-
type: "arraybuffer"
|
|
5330
|
-
});
|
|
5331
|
-
var url = item.url;
|
|
5332
|
-
resourceManager// @ts-ignore
|
|
5333
|
-
._request(url, requestConfig).then(function(buffer) {
|
|
5334
|
-
var texture = HDRLoader._setTextureByBuffer(engine, buffer);
|
|
5335
|
-
engine.resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));
|
|
5336
|
-
resolve(texture);
|
|
5337
|
-
}).catch(reject);
|
|
5338
|
-
});
|
|
5339
|
-
};
|
|
5340
|
-
/**
|
|
5341
|
-
* @internal
|
|
5342
|
-
*/ HDRLoader._setTextureByBuffer = function _setTextureByBuffer(engine, buffer, texture) {
|
|
5343
|
-
var bufferArray = new Uint8Array(buffer);
|
|
5344
|
-
var _HDRLoader__parseHeader = HDRLoader._parseHeader(bufferArray), width = _HDRLoader__parseHeader.width, height = _HDRLoader__parseHeader.height, dataPosition = _HDRLoader__parseHeader.dataPosition;
|
|
5345
|
-
var cubeSize = height >> 1;
|
|
5346
|
-
texture || (texture = new engineCore.TextureCube(engine, cubeSize, undefined, undefined, false));
|
|
5347
|
-
var pixels = HDRLoader._readPixels(bufferArray.subarray(dataPosition), width, height);
|
|
5348
|
-
var cubeMapData = HDRLoader._convertToCubemap(pixels, width, height, cubeSize);
|
|
5349
|
-
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
5350
|
-
texture.setPixelBuffer(engineCore.TextureCubeFace.PositiveX + faceIndex, cubeMapData[faceIndex], 0);
|
|
5351
|
-
}
|
|
5352
|
-
texture.generateMipmaps();
|
|
5353
|
-
return texture;
|
|
5354
|
-
};
|
|
5355
|
-
HDRLoader._convertToCubemap = function _convertToCubemap(pixels, inputWidth, inputHeight, size) {
|
|
5356
|
-
if (!pixels) {
|
|
5357
|
-
throw "ConvertPanoramaToCubemap: input cannot be null";
|
|
5358
|
-
}
|
|
5359
|
-
if (pixels.length != inputWidth * inputHeight * 4) {
|
|
5360
|
-
throw "ConvertPanoramaToCubemap: input size is wrong";
|
|
5361
|
-
}
|
|
5362
|
-
var textureRight = this._createCubemapData(size, this._faceRight, pixels, inputWidth, inputHeight);
|
|
5363
|
-
var textureLeft = this._createCubemapData(size, this._faceLeft, pixels, inputWidth, inputHeight);
|
|
5364
|
-
var textureUp = this._createCubemapData(size, this._faceUp, pixels, inputWidth, inputHeight);
|
|
5365
|
-
var textureDown = this._createCubemapData(size, this._faceBottom, pixels, inputWidth, inputHeight);
|
|
5366
|
-
var textureFront = this._createCubemapData(size, this._faceFront, pixels, inputWidth, inputHeight);
|
|
5367
|
-
var textureBack = this._createCubemapData(size, this._faceBack, pixels, inputWidth, inputHeight);
|
|
5368
|
-
return [
|
|
5369
|
-
textureRight,
|
|
5370
|
-
textureLeft,
|
|
5371
|
-
textureUp,
|
|
5372
|
-
textureDown,
|
|
5373
|
-
textureFront,
|
|
5374
|
-
textureBack
|
|
5375
|
-
];
|
|
5376
|
-
};
|
|
5377
|
-
HDRLoader._createCubemapData = function _createCubemapData(texSize, faceData, pixels, inputWidth, inputHeight) {
|
|
5378
|
-
var textureArray = new Uint8ClampedArray(texSize * texSize * 4);
|
|
5379
|
-
var rotDX1 = this._tempVector3.set(0, 0, 0).add(faceData[1]).subtract(faceData[0]).scale(1 / texSize);
|
|
5380
|
-
var rotDX2 = this._temp2Vector3.set(0, 0, 0).add(faceData[3]).subtract(faceData[2]).scale(1 / texSize);
|
|
5381
|
-
var dy = 1 / texSize;
|
|
5382
|
-
var fy = 0;
|
|
5383
|
-
for(var y = 0; y < texSize; y++){
|
|
5384
|
-
var xv1 = this._temp3Vector3.set(0, 0, 0).add(faceData[0]);
|
|
5385
|
-
var xv2 = this._temp4Vector3.set(0, 0, 0).add(faceData[2]);
|
|
5386
|
-
for(var x = 0; x < texSize; x++){
|
|
5387
|
-
var v = this._temp5Vector3.set(0, 0, 0).add(xv2).subtract(xv1).scale(fy).add(xv1);
|
|
5388
|
-
v.normalize();
|
|
5389
|
-
var color = this._calcProjectionSpherical(v, pixels, inputWidth, inputHeight);
|
|
5390
|
-
this._RGBEToLinear(color);
|
|
5391
|
-
this._linearToRGBM(color, 5);
|
|
5392
|
-
// 4 channels per pixels
|
|
5393
|
-
var index = y * texSize * 4 + x * 4;
|
|
5394
|
-
textureArray[index] = color.r;
|
|
5395
|
-
textureArray[index + 1] = color.g;
|
|
5396
|
-
textureArray[index + 2] = color.b;
|
|
5397
|
-
textureArray[index + 3] = color.a;
|
|
5398
|
-
xv1.add(rotDX1);
|
|
5399
|
-
xv2.add(rotDX2);
|
|
5400
|
-
}
|
|
5401
|
-
fy += dy;
|
|
5402
|
-
}
|
|
5403
|
-
return textureArray;
|
|
5404
|
-
};
|
|
5405
|
-
HDRLoader._calcProjectionSpherical = function _calcProjectionSpherical(vDir, pixels, inputWidth, inputHeight) {
|
|
5406
|
-
var theta = Math.atan2(vDir.z, vDir.x);
|
|
5407
|
-
var phi = Math.acos(vDir.y);
|
|
5408
|
-
while(theta < -PI){
|
|
5409
|
-
theta += 2 * PI;
|
|
5410
|
-
}
|
|
5411
|
-
while(theta > PI){
|
|
5412
|
-
theta -= 2 * PI;
|
|
5413
|
-
}
|
|
5414
|
-
var dx = theta / PI;
|
|
5415
|
-
var dy = phi / PI;
|
|
5416
|
-
// recenter.
|
|
5417
|
-
dx = dx * 0.5 + 0.5;
|
|
5418
|
-
var px = Math.round(dx * inputWidth);
|
|
5419
|
-
if (px < 0) {
|
|
5420
|
-
px = 0;
|
|
5421
|
-
} else if (px >= inputWidth) {
|
|
5422
|
-
px = inputWidth - 1;
|
|
5423
|
-
}
|
|
5424
|
-
var py = Math.round(dy * inputHeight);
|
|
5425
|
-
if (py < 0) {
|
|
5426
|
-
py = 0;
|
|
5427
|
-
} else if (py >= inputHeight) {
|
|
5428
|
-
py = inputHeight - 1;
|
|
5429
|
-
}
|
|
5430
|
-
var inputY = inputHeight - py - 1;
|
|
5431
|
-
var index = inputY * inputWidth * 4 + px * 4;
|
|
5432
|
-
var r = pixels[index];
|
|
5433
|
-
var g = pixels[index + 1];
|
|
5434
|
-
var b = pixels[index + 2];
|
|
5435
|
-
var a = pixels[index + 3];
|
|
5436
|
-
return new engineMath.Color(r, g, b, a);
|
|
5437
|
-
};
|
|
5438
|
-
HDRLoader._readStringLine = function _readStringLine(uint8array, startIndex) {
|
|
5439
|
-
var line = "";
|
|
5440
|
-
var character = "";
|
|
5441
|
-
for(var i = startIndex; i < uint8array.length - startIndex; i++){
|
|
5442
|
-
character = String.fromCharCode(uint8array[i]);
|
|
5443
|
-
if (character == "\n") {
|
|
5444
|
-
break;
|
|
5445
|
-
}
|
|
5446
|
-
line += character;
|
|
5447
|
-
}
|
|
5448
|
-
return line;
|
|
5449
|
-
};
|
|
5450
|
-
HDRLoader._parseHeader = function _parseHeader(uint8array) {
|
|
5451
|
-
var height = 0;
|
|
5452
|
-
var width = 0;
|
|
5453
|
-
var line = this._readStringLine(uint8array, 0);
|
|
5454
|
-
if (line[0] != "#" || line[1] != "?") {
|
|
5455
|
-
throw "Bad HDR Format.";
|
|
5456
|
-
}
|
|
5457
|
-
var endOfHeader = false;
|
|
5458
|
-
var findFormat = false;
|
|
5459
|
-
var lineIndex = 0;
|
|
5460
|
-
do {
|
|
5461
|
-
lineIndex += line.length + 1;
|
|
5462
|
-
line = this._readStringLine(uint8array, lineIndex);
|
|
5463
|
-
if (line == "FORMAT=32-bit_rle_rgbe") {
|
|
5464
|
-
findFormat = true;
|
|
5465
|
-
} else if (line.length == 0) {
|
|
5466
|
-
endOfHeader = true;
|
|
5467
|
-
}
|
|
5468
|
-
}while (!endOfHeader);
|
|
5469
|
-
if (!findFormat) {
|
|
5470
|
-
throw "HDR Bad header format, unsupported FORMAT";
|
|
5471
|
-
}
|
|
5472
|
-
lineIndex += line.length + 1;
|
|
5473
|
-
line = this._readStringLine(uint8array, lineIndex);
|
|
5474
|
-
var sizeRegexp = /^\-Y (.*) \+X (.*)$/g;
|
|
5475
|
-
var match = sizeRegexp.exec(line);
|
|
5476
|
-
// TODO. Support +Y and -X if needed.
|
|
5477
|
-
if (!match || match.length < 3) {
|
|
5478
|
-
throw "HDR Bad header format, no size";
|
|
5479
|
-
}
|
|
5480
|
-
width = parseInt(match[2]);
|
|
5481
|
-
height = parseInt(match[1]);
|
|
5482
|
-
if (width < 8 || width > 0x7fff) {
|
|
5483
|
-
throw "HDR Bad header format, unsupported size";
|
|
5484
|
-
}
|
|
5485
|
-
lineIndex += line.length + 1;
|
|
5486
|
-
return {
|
|
5487
|
-
height: height,
|
|
5488
|
-
width: width,
|
|
5489
|
-
dataPosition: lineIndex
|
|
5490
|
-
};
|
|
5491
|
-
};
|
|
5492
|
-
HDRLoader._readPixels = function _readPixels(buffer, width, height) {
|
|
5493
|
-
var scanLineWidth = width;
|
|
5494
|
-
var byteLength = buffer.byteLength;
|
|
5495
|
-
var dataRGBA = new Uint8Array(4 * width * height);
|
|
5496
|
-
var offset = 0, pos = 0;
|
|
5497
|
-
var ptrEnd = 4 * scanLineWidth;
|
|
5498
|
-
var scanLineBuffer = new Uint8Array(ptrEnd);
|
|
5499
|
-
var numScanLines = height; // read in each successive scanLine
|
|
5500
|
-
while(numScanLines > 0 && pos < byteLength){
|
|
5501
|
-
var a = buffer[pos++];
|
|
5502
|
-
var b = buffer[pos++];
|
|
5503
|
-
var c = buffer[pos++];
|
|
5504
|
-
var d = buffer[pos++];
|
|
5505
|
-
if (a != 2 || b != 2 || c & 0x80 || width < 8 || width > 32767) {
|
|
5506
|
-
// this file is not run length encoded
|
|
5507
|
-
// read values sequentially
|
|
5508
|
-
return buffer;
|
|
5509
|
-
}
|
|
5510
|
-
if ((c << 8 | d) != scanLineWidth) {
|
|
5511
|
-
// eslint-disable-next-line no-throw-literal
|
|
5512
|
-
throw "HDR Bad header format, wrong scan line width";
|
|
5513
|
-
}
|
|
5514
|
-
// read each of the four channels for the scanline into the buffer
|
|
5515
|
-
// first red, then green, then blue, then exponent
|
|
5516
|
-
var ptr = 0, count = void 0;
|
|
5517
|
-
while(ptr < ptrEnd && pos < byteLength){
|
|
5518
|
-
count = buffer[pos++];
|
|
5519
|
-
var isEncodedRun = count > 128;
|
|
5520
|
-
if (isEncodedRun) count -= 128;
|
|
5521
|
-
if (0 === count || ptr + count > ptrEnd) {
|
|
5522
|
-
throw "HDR Bad Format, bad scanline data (run)";
|
|
5523
|
-
}
|
|
5524
|
-
if (isEncodedRun) {
|
|
5525
|
-
// a (encoded) run of the same value
|
|
5526
|
-
var byteValue = buffer[pos++];
|
|
5527
|
-
for(var i = 0; i < count; i++){
|
|
5528
|
-
scanLineBuffer[ptr++] = byteValue;
|
|
5529
|
-
} //ptr += count;
|
|
5530
|
-
} else {
|
|
5531
|
-
// a literal-run
|
|
5532
|
-
scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);
|
|
5533
|
-
ptr += count;
|
|
5534
|
-
pos += count;
|
|
5535
|
-
}
|
|
5536
|
-
} // now convert data from buffer into rgba
|
|
5537
|
-
// first red, then green, then blue, then exponent (alpha)
|
|
5538
|
-
var l = scanLineWidth; //scanLine_buffer.byteLength;
|
|
5539
|
-
for(var i1 = 0; i1 < l; i1++){
|
|
5540
|
-
var off = 0;
|
|
5541
|
-
dataRGBA[offset] = scanLineBuffer[i1 + off];
|
|
5542
|
-
off += scanLineWidth;
|
|
5543
|
-
dataRGBA[offset + 1] = scanLineBuffer[i1 + off];
|
|
5544
|
-
off += scanLineWidth;
|
|
5545
|
-
dataRGBA[offset + 2] = scanLineBuffer[i1 + off];
|
|
5546
|
-
off += scanLineWidth;
|
|
5547
|
-
dataRGBA[offset + 3] = scanLineBuffer[i1 + off];
|
|
5548
|
-
offset += 4;
|
|
5549
|
-
}
|
|
5550
|
-
numScanLines--;
|
|
5551
|
-
}
|
|
5552
|
-
return dataRGBA;
|
|
5553
|
-
};
|
|
5554
|
-
HDRLoader._RGBEToLinear = function _RGBEToLinear(color) {
|
|
5555
|
-
var scaleFactor = Math.pow(2, color.a - 128) / 255;
|
|
5556
|
-
color.r *= scaleFactor;
|
|
5557
|
-
color.g *= scaleFactor;
|
|
5558
|
-
color.b *= scaleFactor;
|
|
5559
|
-
color.a = 1;
|
|
5560
|
-
};
|
|
5561
|
-
HDRLoader._linearToRGBM = function _linearToRGBM(color, maxRange) {
|
|
5562
|
-
var maxRGB = Math.max(color.r, Math.max(color.g, color.b));
|
|
5563
|
-
var M = Math.min(maxRGB / maxRange, 1);
|
|
5564
|
-
M = Math.ceil(M * 255);
|
|
5565
|
-
var scaleFactor = 65025 / (M * maxRange); // 255 * (255 / (M * maxRange) )
|
|
5566
|
-
color.r *= scaleFactor;
|
|
5567
|
-
color.g *= scaleFactor;
|
|
5568
|
-
color.b *= scaleFactor;
|
|
5569
|
-
color.a *= M;
|
|
5570
|
-
};
|
|
5571
|
-
return HDRLoader;
|
|
5572
|
-
}(engineCore.Loader);
|
|
5573
|
-
HDRLoader._rightBottomBack = new engineMath.Vector3(1.0, -1.0, -1.0);
|
|
5574
|
-
HDRLoader._rightBottomFront = new engineMath.Vector3(1.0, -1.0, 1.0);
|
|
5575
|
-
HDRLoader._rightUpBack = new engineMath.Vector3(1.0, 1.0, -1.0);
|
|
5576
|
-
HDRLoader._rightUpFront = new engineMath.Vector3(1.0, 1.0, 1.0);
|
|
5577
|
-
HDRLoader._leftBottomBack = new engineMath.Vector3(-1.0, -1.0, -1.0);
|
|
5578
|
-
HDRLoader._leftBottomFront = new engineMath.Vector3(-1.0, -1.0, 1.0);
|
|
5579
|
-
HDRLoader._leftUpBack = new engineMath.Vector3(-1.0, 1.0, -1.0);
|
|
5580
|
-
HDRLoader._leftUpFront = new engineMath.Vector3(-1.0, 1.0, 1.0);
|
|
5581
|
-
HDRLoader._faceRight = [
|
|
5582
|
-
HDRLoader._rightBottomBack,
|
|
5583
|
-
HDRLoader._rightBottomFront,
|
|
5584
|
-
HDRLoader._rightUpBack,
|
|
5585
|
-
HDRLoader._rightUpFront
|
|
5586
|
-
];
|
|
5587
|
-
HDRLoader._faceLeft = [
|
|
5588
|
-
HDRLoader._leftBottomFront,
|
|
5589
|
-
HDRLoader._leftBottomBack,
|
|
5590
|
-
HDRLoader._leftUpFront,
|
|
5591
|
-
HDRLoader._leftUpBack
|
|
5592
|
-
];
|
|
5593
|
-
HDRLoader._faceUp = [
|
|
5594
|
-
HDRLoader._leftBottomFront,
|
|
5595
|
-
HDRLoader._rightBottomFront,
|
|
5596
|
-
HDRLoader._leftBottomBack,
|
|
5597
|
-
HDRLoader._rightBottomBack
|
|
5598
|
-
];
|
|
5599
|
-
HDRLoader._faceBottom = [
|
|
5600
|
-
HDRLoader._leftUpBack,
|
|
5601
|
-
HDRLoader._rightUpBack,
|
|
5602
|
-
HDRLoader._leftUpFront,
|
|
5603
|
-
HDRLoader._rightUpFront
|
|
5604
|
-
];
|
|
5605
|
-
HDRLoader._faceFront = [
|
|
5606
|
-
HDRLoader._leftBottomBack,
|
|
5607
|
-
HDRLoader._rightBottomBack,
|
|
5608
|
-
HDRLoader._leftUpBack,
|
|
5609
|
-
HDRLoader._rightUpBack
|
|
5610
|
-
];
|
|
5611
|
-
HDRLoader._faceBack = [
|
|
5612
|
-
HDRLoader._rightBottomFront,
|
|
5613
|
-
HDRLoader._leftBottomFront,
|
|
5614
|
-
HDRLoader._rightUpFront,
|
|
5615
|
-
HDRLoader._leftUpFront
|
|
5616
|
-
];
|
|
5617
|
-
HDRLoader._tempVector3 = new engineMath.Vector3();
|
|
5618
|
-
HDRLoader._temp2Vector3 = new engineMath.Vector3();
|
|
5619
|
-
HDRLoader._temp3Vector3 = new engineMath.Vector3();
|
|
5620
|
-
HDRLoader._temp4Vector3 = new engineMath.Vector3();
|
|
5621
|
-
HDRLoader._temp5Vector3 = new engineMath.Vector3();
|
|
5622
|
-
HDRLoader = __decorate([
|
|
5623
|
-
engineCore.resourceLoader(engineCore.AssetType.HDR, [
|
|
5624
|
-
"hdr"
|
|
5625
|
-
])
|
|
5626
|
-
], HDRLoader);
|
|
5627
|
-
/**
|
|
5628
|
-
* @internal
|
|
5629
|
-
*/ var HDRContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
5630
|
-
_inherits(HDRContentRestorer, ContentRestorer);
|
|
5631
|
-
function HDRContentRestorer(resource, url, requestConfig) {
|
|
5632
|
-
var _this;
|
|
5633
|
-
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
5634
|
-
return _this;
|
|
5635
|
-
}
|
|
5636
|
-
var _proto = HDRContentRestorer.prototype;
|
|
5637
|
-
_proto.restoreContent = function restoreContent() {
|
|
5638
|
-
var _this = this;
|
|
5639
|
-
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
5640
|
-
var resource = _this.resource;
|
|
5641
|
-
var engine = resource.engine;
|
|
5642
|
-
engine.resourceManager// @ts-ignore
|
|
5643
|
-
._request(_this.url, _this.requestConfig).then(function(buffer) {
|
|
5644
|
-
HDRLoader._setTextureByBuffer(engine, buffer, resource);
|
|
5645
|
-
resolve(resource);
|
|
5646
|
-
}).catch(reject);
|
|
5647
|
-
});
|
|
5648
|
-
};
|
|
5649
|
-
return HDRContentRestorer;
|
|
5650
|
-
}(engineCore.ContentRestorer);
|
|
5651
|
-
|
|
5652
5278
|
var JSONLoader = /*#__PURE__*/ function(Loader) {
|
|
5653
5279
|
_inherits(JSONLoader, Loader);
|
|
5654
5280
|
function JSONLoader() {
|
|
@@ -5659,14 +5285,18 @@ var JSONLoader = /*#__PURE__*/ function(Loader) {
|
|
|
5659
5285
|
// @ts-ignore
|
|
5660
5286
|
return resourceManager._request(item.url, _extends({}, item, {
|
|
5661
5287
|
type: "json"
|
|
5662
|
-
}))
|
|
5288
|
+
})).then(function(data) {
|
|
5289
|
+
var asset = new engineCore.JSONAsset(resourceManager.engine);
|
|
5290
|
+
asset.data = data;
|
|
5291
|
+
return asset;
|
|
5292
|
+
});
|
|
5663
5293
|
};
|
|
5664
5294
|
return JSONLoader;
|
|
5665
5295
|
}(engineCore.Loader);
|
|
5666
5296
|
JSONLoader = __decorate([
|
|
5667
5297
|
engineCore.resourceLoader(engineCore.AssetType.JSON, [
|
|
5668
5298
|
"json"
|
|
5669
|
-
]
|
|
5299
|
+
])
|
|
5670
5300
|
], JSONLoader);
|
|
5671
5301
|
|
|
5672
5302
|
var HEADER_LEN = 12 + 13 * 4; // identifier + header elements (not including key value meta-data pairs)
|
|
@@ -6047,7 +5677,7 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6047
5677
|
}(engineCore.Loader);
|
|
6048
5678
|
MaterialLoader = __decorate([
|
|
6049
5679
|
engineCore.resourceLoader(engineCore.AssetType.Material, [
|
|
6050
|
-
"
|
|
5680
|
+
"mat"
|
|
6051
5681
|
])
|
|
6052
5682
|
], MaterialLoader);
|
|
6053
5683
|
|
|
@@ -6170,7 +5800,7 @@ var ProjectLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6170
5800
|
}(engineCore.Loader);
|
|
6171
5801
|
ProjectLoader = __decorate([
|
|
6172
5802
|
engineCore.resourceLoader(engineCore.AssetType.Project, [
|
|
6173
|
-
"
|
|
5803
|
+
"project"
|
|
6174
5804
|
], false)
|
|
6175
5805
|
], ProjectLoader);
|
|
6176
5806
|
|
|
@@ -6367,28 +5997,44 @@ SpriteLoader = __decorate([
|
|
|
6367
5997
|
])
|
|
6368
5998
|
], SpriteLoader);
|
|
6369
5999
|
|
|
6370
|
-
|
|
6371
|
-
|
|
6372
|
-
|
|
6373
|
-
|
|
6374
|
-
function Texture2DContentRestorer(resource, url, requestConfig) {
|
|
6375
|
-
var _this;
|
|
6376
|
-
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
6377
|
-
return _this;
|
|
6000
|
+
var TextLoader = /*#__PURE__*/ function(Loader) {
|
|
6001
|
+
_inherits(TextLoader, Loader);
|
|
6002
|
+
function TextLoader() {
|
|
6003
|
+
return Loader.apply(this, arguments) || this;
|
|
6378
6004
|
}
|
|
6379
|
-
var _proto =
|
|
6380
|
-
_proto.
|
|
6381
|
-
|
|
6382
|
-
return
|
|
6383
|
-
|
|
6384
|
-
|
|
6385
|
-
|
|
6386
|
-
|
|
6005
|
+
var _proto = TextLoader.prototype;
|
|
6006
|
+
_proto.load = function load(item, resourceManager) {
|
|
6007
|
+
// @ts-ignore
|
|
6008
|
+
return resourceManager._request(item.url, _extends({}, item, {
|
|
6009
|
+
type: "text"
|
|
6010
|
+
})).then(function(text) {
|
|
6011
|
+
var asset = new engineCore.TextAsset(resourceManager.engine);
|
|
6012
|
+
asset.text = text;
|
|
6013
|
+
return asset;
|
|
6387
6014
|
});
|
|
6388
6015
|
};
|
|
6389
|
-
return
|
|
6390
|
-
}(engineCore.
|
|
6016
|
+
return TextLoader;
|
|
6017
|
+
}(engineCore.Loader);
|
|
6018
|
+
TextLoader = __decorate([
|
|
6019
|
+
engineCore.resourceLoader(engineCore.AssetType.Text, [
|
|
6020
|
+
"txt"
|
|
6021
|
+
])
|
|
6022
|
+
], TextLoader);
|
|
6391
6023
|
|
|
6024
|
+
function loadImageFromBuffer(buffer) {
|
|
6025
|
+
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
6026
|
+
var blob = new Blob([
|
|
6027
|
+
buffer
|
|
6028
|
+
]);
|
|
6029
|
+
var img = new Image();
|
|
6030
|
+
img.onload = function() {
|
|
6031
|
+
URL.revokeObjectURL(img.src);
|
|
6032
|
+
resolve(img);
|
|
6033
|
+
};
|
|
6034
|
+
img.onerror = reject;
|
|
6035
|
+
img.src = URL.createObjectURL(blob);
|
|
6036
|
+
});
|
|
6037
|
+
}
|
|
6392
6038
|
var Texture2DLoader = /*#__PURE__*/ function(Loader) {
|
|
6393
6039
|
_inherits(Texture2DLoader, Loader);
|
|
6394
6040
|
function Texture2DLoader() {
|
|
@@ -6396,36 +6042,48 @@ var Texture2DLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6396
6042
|
}
|
|
6397
6043
|
var _proto = Texture2DLoader.prototype;
|
|
6398
6044
|
_proto.load = function load(item, resourceManager) {
|
|
6045
|
+
var _this = this;
|
|
6046
|
+
var url = item.url;
|
|
6047
|
+
var requestConfig = _extends({}, item, {
|
|
6048
|
+
type: "arraybuffer"
|
|
6049
|
+
});
|
|
6399
6050
|
return new engineCore.AssetPromise(function(resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) {
|
|
6400
|
-
var url = item.url;
|
|
6401
|
-
var requestConfig = _extends({}, item, {
|
|
6402
|
-
type: "image"
|
|
6403
|
-
});
|
|
6404
6051
|
resourceManager// @ts-ignore
|
|
6405
|
-
._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(
|
|
6406
|
-
|
|
6407
|
-
|
|
6408
|
-
|
|
6409
|
-
|
|
6410
|
-
|
|
6411
|
-
|
|
6412
|
-
|
|
6413
|
-
|
|
6414
|
-
|
|
6415
|
-
|
|
6416
|
-
|
|
6417
|
-
generateMipmap && texture.generateMipmaps();
|
|
6418
|
-
if (url.indexOf("data:") !== 0) {
|
|
6419
|
-
var index = url.lastIndexOf("/");
|
|
6420
|
-
texture.name = url.substring(index + 1);
|
|
6052
|
+
._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(buffer) {
|
|
6053
|
+
if (FileHeader.checkMagic(buffer)) {
|
|
6054
|
+
decode(buffer, resourceManager.engine).then(function(texture) {
|
|
6055
|
+
resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
|
|
6056
|
+
resolve(texture);
|
|
6057
|
+
}, reject);
|
|
6058
|
+
} else {
|
|
6059
|
+
loadImageFromBuffer(buffer).then(function(img) {
|
|
6060
|
+
var texture = _this._createTexture(img, item, resourceManager);
|
|
6061
|
+
resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
|
|
6062
|
+
resolve(texture);
|
|
6063
|
+
}, reject);
|
|
6421
6064
|
}
|
|
6422
|
-
|
|
6423
|
-
resolve(texture);
|
|
6424
|
-
}).catch(function(e) {
|
|
6425
|
-
reject(e);
|
|
6426
|
-
});
|
|
6065
|
+
}).catch(reject);
|
|
6427
6066
|
});
|
|
6428
6067
|
};
|
|
6068
|
+
_proto._createTexture = function _createTexture(img, item, resourceManager) {
|
|
6069
|
+
var _item_params;
|
|
6070
|
+
var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_format = _ref.format, format = _ref_format === void 0 ? engineCore.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;
|
|
6071
|
+
var width = img.width, height = img.height;
|
|
6072
|
+
var engine = resourceManager.engine;
|
|
6073
|
+
var generateMipmap = engineCore.TextureUtils.supportGenerateMipmapsWithCorrection(engine, width, height, format, mipmap, isSRGBColorSpace);
|
|
6074
|
+
var texture = new engineCore.Texture2D(engine, width, height, format, generateMipmap, isSRGBColorSpace);
|
|
6075
|
+
texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
|
|
6076
|
+
texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
|
|
6077
|
+
texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
|
|
6078
|
+
texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
|
|
6079
|
+
texture.setImageSource(img);
|
|
6080
|
+
generateMipmap && texture.generateMipmaps();
|
|
6081
|
+
var url = item.url;
|
|
6082
|
+
if (url.indexOf("data:") !== 0) {
|
|
6083
|
+
texture.name = url.substring(url.lastIndexOf("/") + 1);
|
|
6084
|
+
}
|
|
6085
|
+
return texture;
|
|
6086
|
+
};
|
|
6429
6087
|
return Texture2DLoader;
|
|
6430
6088
|
}(engineCore.Loader);
|
|
6431
6089
|
Texture2DLoader = __decorate([
|
|
@@ -6433,40 +6091,319 @@ Texture2DLoader = __decorate([
|
|
|
6433
6091
|
"png",
|
|
6434
6092
|
"jpg",
|
|
6435
6093
|
"webp",
|
|
6436
|
-
"jpeg"
|
|
6094
|
+
"jpeg",
|
|
6095
|
+
"tex"
|
|
6437
6096
|
])
|
|
6438
6097
|
], Texture2DLoader);
|
|
6439
|
-
|
|
6440
|
-
|
|
6441
|
-
|
|
6442
|
-
*/ var TextureCubeContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6443
|
-
_inherits(TextureCubeContentRestorer, ContentRestorer);
|
|
6444
|
-
function TextureCubeContentRestorer(resource, urls, requestConfig) {
|
|
6098
|
+
var Texture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6099
|
+
_inherits(Texture2DContentRestorer, ContentRestorer);
|
|
6100
|
+
function Texture2DContentRestorer(resource, url, requestConfig) {
|
|
6445
6101
|
var _this;
|
|
6446
|
-
_this = ContentRestorer.call(this, resource) || this, _this.
|
|
6102
|
+
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
6447
6103
|
return _this;
|
|
6448
6104
|
}
|
|
6449
|
-
var _proto =
|
|
6105
|
+
var _proto = Texture2DContentRestorer.prototype;
|
|
6450
6106
|
_proto.restoreContent = function restoreContent() {
|
|
6451
|
-
var
|
|
6452
|
-
|
|
6453
|
-
|
|
6454
|
-
|
|
6455
|
-
|
|
6456
|
-
|
|
6457
|
-
|
|
6458
|
-
|
|
6459
|
-
|
|
6460
|
-
|
|
6461
|
-
|
|
6462
|
-
|
|
6463
|
-
|
|
6464
|
-
});
|
|
6107
|
+
var texture = this.resource;
|
|
6108
|
+
var engine = texture.engine;
|
|
6109
|
+
return engine.resourceManager// @ts-ignore
|
|
6110
|
+
._request(this.url, this.requestConfig).then(function(buffer) {
|
|
6111
|
+
if (FileHeader.checkMagic(buffer)) {
|
|
6112
|
+
return decode(buffer, engine, texture);
|
|
6113
|
+
} else {
|
|
6114
|
+
return loadImageFromBuffer(buffer).then(function(img) {
|
|
6115
|
+
texture.setImageSource(img);
|
|
6116
|
+
texture.generateMipmaps();
|
|
6117
|
+
return texture;
|
|
6118
|
+
});
|
|
6119
|
+
}
|
|
6465
6120
|
});
|
|
6466
6121
|
};
|
|
6467
|
-
return
|
|
6122
|
+
return Texture2DContentRestorer;
|
|
6468
6123
|
}(engineCore.ContentRestorer);
|
|
6469
6124
|
|
|
6125
|
+
/**
|
|
6126
|
+
* @internal
|
|
6127
|
+
* HDR panorama to cubemap decoder.
|
|
6128
|
+
*/ var HDRDecoder = /*#__PURE__*/ function() {
|
|
6129
|
+
function HDRDecoder() {}
|
|
6130
|
+
HDRDecoder.parseHeader = function parseHeader(uint8array) {
|
|
6131
|
+
var line = this._readStringLine(uint8array, 0);
|
|
6132
|
+
if (line[0] !== "#" || line[1] !== "?") {
|
|
6133
|
+
throw "HDRDecoder: invalid file header";
|
|
6134
|
+
}
|
|
6135
|
+
var endOfHeader = false;
|
|
6136
|
+
var findFormat = false;
|
|
6137
|
+
var lineIndex = 0;
|
|
6138
|
+
do {
|
|
6139
|
+
lineIndex += line.length + 1;
|
|
6140
|
+
line = this._readStringLine(uint8array, lineIndex);
|
|
6141
|
+
if (line === "FORMAT=32-bit_rle_rgbe") findFormat = true;
|
|
6142
|
+
else if (line.length === 0) endOfHeader = true;
|
|
6143
|
+
}while (!endOfHeader);
|
|
6144
|
+
if (!findFormat) {
|
|
6145
|
+
throw "HDRDecoder: unsupported format, expected 32-bit_rle_rgbe";
|
|
6146
|
+
}
|
|
6147
|
+
lineIndex += line.length + 1;
|
|
6148
|
+
line = this._readStringLine(uint8array, lineIndex);
|
|
6149
|
+
var match = /^\-Y (.*) \+X (.*)$/g.exec(line);
|
|
6150
|
+
if (!match || match.length < 3) {
|
|
6151
|
+
throw "HDRDecoder: missing image size, only -Y +X layout is supported";
|
|
6152
|
+
}
|
|
6153
|
+
var width = parseInt(match[2]);
|
|
6154
|
+
var height = parseInt(match[1]);
|
|
6155
|
+
if (width < 8 || width > 0x7fff) {
|
|
6156
|
+
throw "HDRDecoder: unsupported image width, must be between 8 and 32767";
|
|
6157
|
+
}
|
|
6158
|
+
return {
|
|
6159
|
+
height: height,
|
|
6160
|
+
width: width,
|
|
6161
|
+
dataPosition: lineIndex + line.length + 1
|
|
6162
|
+
};
|
|
6163
|
+
};
|
|
6164
|
+
HDRDecoder.decodeFaces = function decodeFaces(bufferArray, header, onFace) {
|
|
6165
|
+
var width = header.width, height = header.height, dataPosition = header.dataPosition;
|
|
6166
|
+
var cubeSize = height >> 1;
|
|
6167
|
+
var pixels = HDRDecoder._readPixels(bufferArray.subarray(dataPosition), width, height);
|
|
6168
|
+
var faces = HDRDecoder._faces;
|
|
6169
|
+
var faceBuffer = new Uint16Array(cubeSize * cubeSize * 4);
|
|
6170
|
+
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6171
|
+
HDRDecoder._createCubemapData(cubeSize, faces[faceIndex], pixels, width, height, faceBuffer);
|
|
6172
|
+
onFace(faceIndex, faceBuffer);
|
|
6173
|
+
}
|
|
6174
|
+
};
|
|
6175
|
+
HDRDecoder._generateFloat2HalfTables = function _generateFloat2HalfTables() {
|
|
6176
|
+
var baseTable = new Uint32Array(512);
|
|
6177
|
+
var shiftTable = new Uint32Array(512);
|
|
6178
|
+
for(var i = 0; i < 256; ++i){
|
|
6179
|
+
var e = i - 127;
|
|
6180
|
+
if (e < -27) {
|
|
6181
|
+
baseTable[i] = 0x0000;
|
|
6182
|
+
baseTable[i | 0x100] = 0x8000;
|
|
6183
|
+
shiftTable[i] = 24;
|
|
6184
|
+
shiftTable[i | 0x100] = 24;
|
|
6185
|
+
} else if (e < -14) {
|
|
6186
|
+
baseTable[i] = 0x0400 >> -e - 14;
|
|
6187
|
+
baseTable[i | 0x100] = 0x0400 >> -e - 14 | 0x8000;
|
|
6188
|
+
shiftTable[i] = -e - 1;
|
|
6189
|
+
shiftTable[i | 0x100] = -e - 1;
|
|
6190
|
+
} else if (e <= 15) {
|
|
6191
|
+
baseTable[i] = e + 15 << 10;
|
|
6192
|
+
baseTable[i | 0x100] = e + 15 << 10 | 0x8000;
|
|
6193
|
+
shiftTable[i] = 13;
|
|
6194
|
+
shiftTable[i | 0x100] = 13;
|
|
6195
|
+
} else if (e < 128) {
|
|
6196
|
+
baseTable[i] = 0x7c00;
|
|
6197
|
+
baseTable[i | 0x100] = 0xfc00;
|
|
6198
|
+
shiftTable[i] = 24;
|
|
6199
|
+
shiftTable[i | 0x100] = 24;
|
|
6200
|
+
} else {
|
|
6201
|
+
baseTable[i] = 0x7c00;
|
|
6202
|
+
baseTable[i | 0x100] = 0xfc00;
|
|
6203
|
+
shiftTable[i] = 13;
|
|
6204
|
+
shiftTable[i | 0x100] = 13;
|
|
6205
|
+
}
|
|
6206
|
+
}
|
|
6207
|
+
return {
|
|
6208
|
+
baseTable: baseTable,
|
|
6209
|
+
shiftTable: shiftTable
|
|
6210
|
+
};
|
|
6211
|
+
};
|
|
6212
|
+
HDRDecoder._createCubemapData = function _createCubemapData(texSize, face, pixels, inputWidth, inputHeight, facePixels) {
|
|
6213
|
+
var invSize = 1 / texSize;
|
|
6214
|
+
var rotDX1X = (face[3] - face[0]) * invSize;
|
|
6215
|
+
var rotDX1Y = (face[4] - face[1]) * invSize;
|
|
6216
|
+
var rotDX1Z = (face[5] - face[2]) * invSize;
|
|
6217
|
+
var rotDX2X = (face[9] - face[6]) * invSize;
|
|
6218
|
+
var rotDX2Y = (face[10] - face[7]) * invSize;
|
|
6219
|
+
var rotDX2Z = (face[11] - face[8]) * invSize;
|
|
6220
|
+
var floatView = HDRDecoder._floatView;
|
|
6221
|
+
var uint32View = HDRDecoder._uint32View;
|
|
6222
|
+
var _HDRDecoder__float2HalfTables = HDRDecoder._float2HalfTables, baseTable = _HDRDecoder__float2HalfTables.baseTable, shiftTable = _HDRDecoder__float2HalfTables.shiftTable;
|
|
6223
|
+
var one = HDRDecoder._one;
|
|
6224
|
+
var fy = 0;
|
|
6225
|
+
for(var y = 0; y < texSize; y++){
|
|
6226
|
+
var xv1X = face[0], xv1Y = face[1], xv1Z = face[2];
|
|
6227
|
+
var xv2X = face[6], xv2Y = face[7], xv2Z = face[8];
|
|
6228
|
+
for(var x = 0; x < texSize; x++){
|
|
6229
|
+
var dirX = xv1X + (xv2X - xv1X) * fy;
|
|
6230
|
+
var dirY = xv1Y + (xv2Y - xv1Y) * fy;
|
|
6231
|
+
var dirZ = xv1Z + (xv2Z - xv1Z) * fy;
|
|
6232
|
+
var invLen = 1 / Math.sqrt(dirX * dirX + dirY * dirY + dirZ * dirZ);
|
|
6233
|
+
dirX *= invLen;
|
|
6234
|
+
dirY *= invLen;
|
|
6235
|
+
dirZ *= invLen;
|
|
6236
|
+
var px = Math.round((Math.atan2(dirZ, dirX) / Math.PI * 0.5 + 0.5) * inputWidth);
|
|
6237
|
+
if (px < 0) px = 0;
|
|
6238
|
+
else if (px >= inputWidth) px = inputWidth - 1;
|
|
6239
|
+
var py = Math.round(Math.acos(dirY) / Math.PI * inputHeight);
|
|
6240
|
+
if (py < 0) py = 0;
|
|
6241
|
+
else if (py >= inputHeight) py = inputHeight - 1;
|
|
6242
|
+
var srcIndex = (inputHeight - py - 1) * inputWidth * 4 + px * 4;
|
|
6243
|
+
var scaleFactor = Math.pow(2, pixels[srcIndex + 3] - 128) / 255;
|
|
6244
|
+
var dstIndex = y * texSize * 4 + x * 4;
|
|
6245
|
+
for(var c = 0; c < 3; c++){
|
|
6246
|
+
floatView[0] = pixels[srcIndex + c] * scaleFactor;
|
|
6247
|
+
var f = uint32View[0];
|
|
6248
|
+
var e = f >> 23 & 0x1ff;
|
|
6249
|
+
facePixels[dstIndex + c] = baseTable[e] + ((f & 0x007fffff) >> shiftTable[e]);
|
|
6250
|
+
}
|
|
6251
|
+
facePixels[dstIndex + 3] = one;
|
|
6252
|
+
xv1X += rotDX1X;
|
|
6253
|
+
xv1Y += rotDX1Y;
|
|
6254
|
+
xv1Z += rotDX1Z;
|
|
6255
|
+
xv2X += rotDX2X;
|
|
6256
|
+
xv2Y += rotDX2Y;
|
|
6257
|
+
xv2Z += rotDX2Z;
|
|
6258
|
+
}
|
|
6259
|
+
fy += invSize;
|
|
6260
|
+
}
|
|
6261
|
+
};
|
|
6262
|
+
HDRDecoder._readStringLine = function _readStringLine(uint8array, startIndex) {
|
|
6263
|
+
var line = "";
|
|
6264
|
+
for(var i = startIndex, n = uint8array.length; i < n; i++){
|
|
6265
|
+
var character = String.fromCharCode(uint8array[i]);
|
|
6266
|
+
if (character === "\n") break;
|
|
6267
|
+
line += character;
|
|
6268
|
+
}
|
|
6269
|
+
return line;
|
|
6270
|
+
};
|
|
6271
|
+
HDRDecoder._readPixels = function _readPixels(buffer, width, height) {
|
|
6272
|
+
var byteLength = buffer.byteLength;
|
|
6273
|
+
var dataRGBA = new Uint8Array(4 * width * height);
|
|
6274
|
+
var offset = 0;
|
|
6275
|
+
var pos = 0;
|
|
6276
|
+
var ptrEnd = 4 * width;
|
|
6277
|
+
var scanLineBuffer = new Uint8Array(ptrEnd);
|
|
6278
|
+
var numScanLines = height;
|
|
6279
|
+
while(numScanLines > 0 && pos < byteLength){
|
|
6280
|
+
var a = buffer[pos++];
|
|
6281
|
+
var b = buffer[pos++];
|
|
6282
|
+
var c = buffer[pos++];
|
|
6283
|
+
var d = buffer[pos++];
|
|
6284
|
+
if (a !== 2 || b !== 2 || c & 0x80 || width < 8 || width > 32767) return buffer;
|
|
6285
|
+
if ((c << 8 | d) !== width) throw "HDRDecoder: wrong scanline width";
|
|
6286
|
+
var ptr = 0;
|
|
6287
|
+
while(ptr < ptrEnd && pos < byteLength){
|
|
6288
|
+
var count = buffer[pos++];
|
|
6289
|
+
var isEncodedRun = count > 128;
|
|
6290
|
+
if (isEncodedRun) count -= 128;
|
|
6291
|
+
if (count === 0 || ptr + count > ptrEnd) throw "HDRDecoder: bad scanline data";
|
|
6292
|
+
if (isEncodedRun) {
|
|
6293
|
+
var byteValue = buffer[pos++];
|
|
6294
|
+
for(var i = 0; i < count; i++)scanLineBuffer[ptr++] = byteValue;
|
|
6295
|
+
} else {
|
|
6296
|
+
scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);
|
|
6297
|
+
ptr += count;
|
|
6298
|
+
pos += count;
|
|
6299
|
+
}
|
|
6300
|
+
}
|
|
6301
|
+
for(var i1 = 0; i1 < width; i1++, offset += 4){
|
|
6302
|
+
dataRGBA[offset] = scanLineBuffer[i1];
|
|
6303
|
+
dataRGBA[offset + 1] = scanLineBuffer[i1 + width];
|
|
6304
|
+
dataRGBA[offset + 2] = scanLineBuffer[i1 + width * 2];
|
|
6305
|
+
dataRGBA[offset + 3] = scanLineBuffer[i1 + width * 3];
|
|
6306
|
+
}
|
|
6307
|
+
numScanLines--;
|
|
6308
|
+
}
|
|
6309
|
+
return dataRGBA;
|
|
6310
|
+
};
|
|
6311
|
+
return HDRDecoder;
|
|
6312
|
+
}();
|
|
6313
|
+
// Float32 to Float16 lookup tables (http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf)
|
|
6314
|
+
HDRDecoder._float2HalfTables = HDRDecoder._generateFloat2HalfTables();
|
|
6315
|
+
HDRDecoder._floatView = new Float32Array(1);
|
|
6316
|
+
HDRDecoder._uint32View = new Uint32Array(HDRDecoder._floatView.buffer);
|
|
6317
|
+
HDRDecoder._one = 0x3c00 // Half float for 1.0
|
|
6318
|
+
;
|
|
6319
|
+
// prettier-ignore
|
|
6320
|
+
HDRDecoder._faces = [
|
|
6321
|
+
/* +X */ [
|
|
6322
|
+
1,
|
|
6323
|
+
-1,
|
|
6324
|
+
-1,
|
|
6325
|
+
1,
|
|
6326
|
+
-1,
|
|
6327
|
+
1,
|
|
6328
|
+
1,
|
|
6329
|
+
1,
|
|
6330
|
+
-1,
|
|
6331
|
+
1,
|
|
6332
|
+
1,
|
|
6333
|
+
1
|
|
6334
|
+
],
|
|
6335
|
+
/* -X */ [
|
|
6336
|
+
-1,
|
|
6337
|
+
-1,
|
|
6338
|
+
1,
|
|
6339
|
+
-1,
|
|
6340
|
+
-1,
|
|
6341
|
+
-1,
|
|
6342
|
+
-1,
|
|
6343
|
+
1,
|
|
6344
|
+
1,
|
|
6345
|
+
-1,
|
|
6346
|
+
1,
|
|
6347
|
+
-1
|
|
6348
|
+
],
|
|
6349
|
+
/* +Y */ [
|
|
6350
|
+
-1,
|
|
6351
|
+
-1,
|
|
6352
|
+
1,
|
|
6353
|
+
1,
|
|
6354
|
+
-1,
|
|
6355
|
+
1,
|
|
6356
|
+
-1,
|
|
6357
|
+
-1,
|
|
6358
|
+
-1,
|
|
6359
|
+
1,
|
|
6360
|
+
-1,
|
|
6361
|
+
-1
|
|
6362
|
+
],
|
|
6363
|
+
/* -Y */ [
|
|
6364
|
+
-1,
|
|
6365
|
+
1,
|
|
6366
|
+
-1,
|
|
6367
|
+
1,
|
|
6368
|
+
1,
|
|
6369
|
+
-1,
|
|
6370
|
+
-1,
|
|
6371
|
+
1,
|
|
6372
|
+
1,
|
|
6373
|
+
1,
|
|
6374
|
+
1,
|
|
6375
|
+
1
|
|
6376
|
+
],
|
|
6377
|
+
/* +Z */ [
|
|
6378
|
+
-1,
|
|
6379
|
+
-1,
|
|
6380
|
+
-1,
|
|
6381
|
+
1,
|
|
6382
|
+
-1,
|
|
6383
|
+
-1,
|
|
6384
|
+
-1,
|
|
6385
|
+
1,
|
|
6386
|
+
-1,
|
|
6387
|
+
1,
|
|
6388
|
+
1,
|
|
6389
|
+
-1
|
|
6390
|
+
],
|
|
6391
|
+
/* -Z */ [
|
|
6392
|
+
1,
|
|
6393
|
+
-1,
|
|
6394
|
+
1,
|
|
6395
|
+
-1,
|
|
6396
|
+
-1,
|
|
6397
|
+
1,
|
|
6398
|
+
1,
|
|
6399
|
+
1,
|
|
6400
|
+
1,
|
|
6401
|
+
-1,
|
|
6402
|
+
1,
|
|
6403
|
+
1
|
|
6404
|
+
]
|
|
6405
|
+
];
|
|
6406
|
+
|
|
6470
6407
|
var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
6471
6408
|
_inherits(TextureCubeLoader, Loader);
|
|
6472
6409
|
function TextureCubeLoader() {
|
|
@@ -6474,6 +6411,44 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6474
6411
|
}
|
|
6475
6412
|
var _proto = TextureCubeLoader.prototype;
|
|
6476
6413
|
_proto.load = function load(item, resourceManager) {
|
|
6414
|
+
if (item.urls) {
|
|
6415
|
+
return this._loadCubeFaces(item, resourceManager);
|
|
6416
|
+
} else {
|
|
6417
|
+
return this._loadHDR(item, resourceManager);
|
|
6418
|
+
}
|
|
6419
|
+
};
|
|
6420
|
+
_proto._loadHDR = function _loadHDR(item, resourceManager) {
|
|
6421
|
+
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
6422
|
+
var engine = resourceManager.engine;
|
|
6423
|
+
var url = item.url;
|
|
6424
|
+
var requestConfig = _extends({}, item, {
|
|
6425
|
+
type: "arraybuffer"
|
|
6426
|
+
});
|
|
6427
|
+
resourceManager// @ts-ignore
|
|
6428
|
+
._request(url, requestConfig).then(function(buffer) {
|
|
6429
|
+
if (!engineCore.SystemInfo.supportsTextureFormat(engine, engineCore.TextureFormat.R16G16B16A16)) {
|
|
6430
|
+
reject(new Error("TextureCubeLoader: HDR texture requires half float support."));
|
|
6431
|
+
return;
|
|
6432
|
+
}
|
|
6433
|
+
var _item_params;
|
|
6434
|
+
var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_mipmap = _ref.mipmap, mipmap = _ref_mipmap === void 0 ? true : _ref_mipmap, anisoLevel = _ref.anisoLevel, wrapModeU = _ref.wrapModeU, wrapModeV = _ref.wrapModeV, filterMode = _ref.filterMode;
|
|
6435
|
+
var bufferArray = new Uint8Array(buffer);
|
|
6436
|
+
var header = HDRDecoder.parseHeader(bufferArray);
|
|
6437
|
+
var texture = new engineCore.TextureCube(engine, header.height >> 1, engineCore.TextureFormat.R16G16B16A16, mipmap, false);
|
|
6438
|
+
HDRDecoder.decodeFaces(bufferArray, header, function(faceIndex, data) {
|
|
6439
|
+
texture.setPixelBuffer(engineCore.TextureCubeFace.PositiveX + faceIndex, data, 0);
|
|
6440
|
+
});
|
|
6441
|
+
texture.generateMipmaps();
|
|
6442
|
+
texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
|
|
6443
|
+
texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
|
|
6444
|
+
texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
|
|
6445
|
+
texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
|
|
6446
|
+
resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));
|
|
6447
|
+
resolve(texture);
|
|
6448
|
+
}).catch(reject);
|
|
6449
|
+
});
|
|
6450
|
+
};
|
|
6451
|
+
_proto._loadCubeFaces = function _loadCubeFaces(item, resourceManager) {
|
|
6477
6452
|
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
6478
6453
|
var urls = item.urls;
|
|
6479
6454
|
var requestConfig = _extends({}, item, {
|
|
@@ -6487,7 +6462,7 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6487
6462
|
var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_format = _ref.format, format = _ref_format === void 0 ? engineCore.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;
|
|
6488
6463
|
var _images_ = images[0], width = _images_.width, height = _images_.height;
|
|
6489
6464
|
if (width !== height) {
|
|
6490
|
-
|
|
6465
|
+
reject(new Error("The cube texture must have the same width and height"));
|
|
6491
6466
|
return;
|
|
6492
6467
|
}
|
|
6493
6468
|
var engine = resourceManager.engine;
|
|
@@ -6500,21 +6475,70 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6500
6475
|
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6501
6476
|
texture.setImageSource(engineCore.TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
|
|
6502
6477
|
}
|
|
6503
|
-
|
|
6504
|
-
resourceManager.addContentRestorer(new
|
|
6478
|
+
texture.generateMipmaps();
|
|
6479
|
+
resourceManager.addContentRestorer(new CubeFaceContentRestorer(texture, urls, requestConfig));
|
|
6505
6480
|
resolve(texture);
|
|
6506
|
-
}).catch(
|
|
6507
|
-
reject(e);
|
|
6508
|
-
});
|
|
6481
|
+
}).catch(reject);
|
|
6509
6482
|
});
|
|
6510
6483
|
};
|
|
6511
6484
|
return TextureCubeLoader;
|
|
6512
6485
|
}(engineCore.Loader);
|
|
6513
6486
|
TextureCubeLoader = __decorate([
|
|
6514
6487
|
engineCore.resourceLoader(engineCore.AssetType.TextureCube, [
|
|
6515
|
-
""
|
|
6488
|
+
"texCube",
|
|
6489
|
+
"hdr"
|
|
6516
6490
|
])
|
|
6517
6491
|
], TextureCubeLoader);
|
|
6492
|
+
var HDRContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6493
|
+
_inherits(HDRContentRestorer, ContentRestorer);
|
|
6494
|
+
function HDRContentRestorer(resource, url, requestConfig) {
|
|
6495
|
+
var _this;
|
|
6496
|
+
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
6497
|
+
return _this;
|
|
6498
|
+
}
|
|
6499
|
+
var _proto = HDRContentRestorer.prototype;
|
|
6500
|
+
_proto.restoreContent = function restoreContent() {
|
|
6501
|
+
var _this = this;
|
|
6502
|
+
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
6503
|
+
var resource = _this.resource;
|
|
6504
|
+
resource.engine.resourceManager// @ts-ignore
|
|
6505
|
+
._request(_this.url, _this.requestConfig).then(function(buffer) {
|
|
6506
|
+
var bufferArray = new Uint8Array(buffer);
|
|
6507
|
+
HDRDecoder.decodeFaces(bufferArray, HDRDecoder.parseHeader(bufferArray), function(faceIndex, data) {
|
|
6508
|
+
resource.setPixelBuffer(engineCore.TextureCubeFace.PositiveX + faceIndex, data, 0);
|
|
6509
|
+
});
|
|
6510
|
+
resource.generateMipmaps();
|
|
6511
|
+
resolve(resource);
|
|
6512
|
+
}).catch(reject);
|
|
6513
|
+
});
|
|
6514
|
+
};
|
|
6515
|
+
return HDRContentRestorer;
|
|
6516
|
+
}(engineCore.ContentRestorer);
|
|
6517
|
+
var CubeFaceContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6518
|
+
_inherits(CubeFaceContentRestorer, ContentRestorer);
|
|
6519
|
+
function CubeFaceContentRestorer(resource, urls, requestConfig) {
|
|
6520
|
+
var _this;
|
|
6521
|
+
_this = ContentRestorer.call(this, resource) || this, _this.urls = urls, _this.requestConfig = requestConfig;
|
|
6522
|
+
return _this;
|
|
6523
|
+
}
|
|
6524
|
+
var _proto = CubeFaceContentRestorer.prototype;
|
|
6525
|
+
_proto.restoreContent = function restoreContent() {
|
|
6526
|
+
var _this = this;
|
|
6527
|
+
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
6528
|
+
Promise.all(_this.urls.map(function(url) {
|
|
6529
|
+
return engineCore.request(url, _this.requestConfig);
|
|
6530
|
+
})).then(function(images) {
|
|
6531
|
+
var resource = _this.resource;
|
|
6532
|
+
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6533
|
+
resource.setImageSource(engineCore.TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
|
|
6534
|
+
}
|
|
6535
|
+
resource.generateMipmaps();
|
|
6536
|
+
resolve(resource);
|
|
6537
|
+
}).catch(reject);
|
|
6538
|
+
});
|
|
6539
|
+
};
|
|
6540
|
+
return CubeFaceContentRestorer;
|
|
6541
|
+
}(engineCore.ContentRestorer);
|
|
6518
6542
|
|
|
6519
6543
|
var AudioLoader = /*#__PURE__*/ function(Loader) {
|
|
6520
6544
|
_inherits(AudioLoader, Loader);
|
|
@@ -6587,6 +6611,7 @@ var ShaderChunkLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6587
6611
|
}
|
|
6588
6612
|
}
|
|
6589
6613
|
return Promise.all(shaderChunkPaths.map(function(chunkPath) {
|
|
6614
|
+
// @ts-ignore
|
|
6590
6615
|
return resourceManager.load({
|
|
6591
6616
|
type: "ShaderChunk",
|
|
6592
6617
|
url: chunkPath
|
|
@@ -6663,7 +6688,7 @@ var PhysicsMaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6663
6688
|
}(engineCore.Loader);
|
|
6664
6689
|
PhysicsMaterialLoader = __decorate([
|
|
6665
6690
|
engineCore.resourceLoader(engineCore.AssetType.PhysicsMaterial, [
|
|
6666
|
-
"
|
|
6691
|
+
"physMat"
|
|
6667
6692
|
])
|
|
6668
6693
|
], PhysicsMaterialLoader);
|
|
6669
6694
|
|