@galacean/engine-loader 2.0.0-alpha.5 → 2.0.0-alpha.7
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 +506 -508
- package/dist/main.js.map +1 -1
- package/dist/module.js +508 -510
- 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 +0 -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,8 +1668,8 @@ 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
1675
|
var base64Regex = /^data:(.+?);base64,/;
|
|
@@ -1731,8 +1697,7 @@ var BufferLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1731
1697
|
}(engineCore.Loader);
|
|
1732
1698
|
BufferLoader = __decorate([
|
|
1733
1699
|
engineCore.resourceLoader(engineCore.AssetType.Buffer, [
|
|
1734
|
-
"bin"
|
|
1735
|
-
"r3bin"
|
|
1700
|
+
"bin"
|
|
1736
1701
|
])
|
|
1737
1702
|
], BufferLoader);
|
|
1738
1703
|
|
|
@@ -1759,7 +1724,6 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1759
1724
|
sh.copyFromArray(new Float32Array(arraybuffer, 0, 27));
|
|
1760
1725
|
ambientLight.diffuseSphericalHarmonics = sh;
|
|
1761
1726
|
ambientLight.specularTexture = texture;
|
|
1762
|
-
ambientLight.specularTextureDecodeRGBM = true;
|
|
1763
1727
|
resolve(ambientLight);
|
|
1764
1728
|
}).catch(function(e) {
|
|
1765
1729
|
reject(e);
|
|
@@ -1772,7 +1736,7 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1772
1736
|
var _this;
|
|
1773
1737
|
var shByteLength = 27 * 4;
|
|
1774
1738
|
var size = (_this = new Uint16Array(buffer, shByteLength, 1)) == null ? void 0 : _this[0];
|
|
1775
|
-
texture || (texture = new engineCore.TextureCube(engine, size,
|
|
1739
|
+
texture || (texture = new engineCore.TextureCube(engine, size, engineCore.TextureFormat.R16G16B16A16, true, false));
|
|
1776
1740
|
texture.filterMode = engineCore.TextureFilterMode.Trilinear;
|
|
1777
1741
|
var mipmapCount = texture.mipmapCount;
|
|
1778
1742
|
var offset = shByteLength + 2;
|
|
@@ -1780,8 +1744,8 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1780
1744
|
var mipSize = size >> mipLevel;
|
|
1781
1745
|
for(var face = 0; face < 6; face++){
|
|
1782
1746
|
var dataSize = mipSize * mipSize * 4;
|
|
1783
|
-
var data = new
|
|
1784
|
-
offset += dataSize;
|
|
1747
|
+
var data = new Uint16Array(buffer, offset, dataSize);
|
|
1748
|
+
offset += dataSize * 2;
|
|
1785
1749
|
texture.setPixelBuffer(engineCore.TextureCubeFace.PositiveX + face, data, mipLevel);
|
|
1786
1750
|
}
|
|
1787
1751
|
}
|
|
@@ -5310,341 +5274,6 @@ PrefabLoader = __decorate([
|
|
|
5310
5274
|
])
|
|
5311
5275
|
], PrefabLoader);
|
|
5312
5276
|
|
|
5313
|
-
var PI = Math.PI;
|
|
5314
|
-
// referenece: https://www.flipcode.com/archives/HDR_Image_Reader.shtml
|
|
5315
|
-
var HDRLoader = /*#__PURE__*/ function(Loader) {
|
|
5316
|
-
_inherits(HDRLoader, Loader);
|
|
5317
|
-
function HDRLoader() {
|
|
5318
|
-
return Loader.apply(this, arguments) || this;
|
|
5319
|
-
}
|
|
5320
|
-
var _proto = HDRLoader.prototype;
|
|
5321
|
-
_proto.load = function load(item, resourceManager) {
|
|
5322
|
-
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
5323
|
-
var engine = resourceManager.engine;
|
|
5324
|
-
var requestConfig = _extends({}, item, {
|
|
5325
|
-
type: "arraybuffer"
|
|
5326
|
-
});
|
|
5327
|
-
var url = item.url;
|
|
5328
|
-
resourceManager// @ts-ignore
|
|
5329
|
-
._request(url, requestConfig).then(function(buffer) {
|
|
5330
|
-
var texture = HDRLoader._setTextureByBuffer(engine, buffer);
|
|
5331
|
-
engine.resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));
|
|
5332
|
-
resolve(texture);
|
|
5333
|
-
}).catch(reject);
|
|
5334
|
-
});
|
|
5335
|
-
};
|
|
5336
|
-
/**
|
|
5337
|
-
* @internal
|
|
5338
|
-
*/ HDRLoader._setTextureByBuffer = function _setTextureByBuffer(engine, buffer, texture) {
|
|
5339
|
-
var bufferArray = new Uint8Array(buffer);
|
|
5340
|
-
var _HDRLoader__parseHeader = HDRLoader._parseHeader(bufferArray), width = _HDRLoader__parseHeader.width, height = _HDRLoader__parseHeader.height, dataPosition = _HDRLoader__parseHeader.dataPosition;
|
|
5341
|
-
var cubeSize = height >> 1;
|
|
5342
|
-
texture || (texture = new engineCore.TextureCube(engine, cubeSize, undefined, undefined, false));
|
|
5343
|
-
var pixels = HDRLoader._readPixels(bufferArray.subarray(dataPosition), width, height);
|
|
5344
|
-
var cubeMapData = HDRLoader._convertToCubemap(pixels, width, height, cubeSize);
|
|
5345
|
-
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
5346
|
-
texture.setPixelBuffer(engineCore.TextureCubeFace.PositiveX + faceIndex, cubeMapData[faceIndex], 0);
|
|
5347
|
-
}
|
|
5348
|
-
texture.generateMipmaps();
|
|
5349
|
-
return texture;
|
|
5350
|
-
};
|
|
5351
|
-
HDRLoader._convertToCubemap = function _convertToCubemap(pixels, inputWidth, inputHeight, size) {
|
|
5352
|
-
if (!pixels) {
|
|
5353
|
-
throw "ConvertPanoramaToCubemap: input cannot be null";
|
|
5354
|
-
}
|
|
5355
|
-
if (pixels.length != inputWidth * inputHeight * 4) {
|
|
5356
|
-
throw "ConvertPanoramaToCubemap: input size is wrong";
|
|
5357
|
-
}
|
|
5358
|
-
var textureRight = this._createCubemapData(size, this._faceRight, pixels, inputWidth, inputHeight);
|
|
5359
|
-
var textureLeft = this._createCubemapData(size, this._faceLeft, pixels, inputWidth, inputHeight);
|
|
5360
|
-
var textureUp = this._createCubemapData(size, this._faceUp, pixels, inputWidth, inputHeight);
|
|
5361
|
-
var textureDown = this._createCubemapData(size, this._faceBottom, pixels, inputWidth, inputHeight);
|
|
5362
|
-
var textureFront = this._createCubemapData(size, this._faceFront, pixels, inputWidth, inputHeight);
|
|
5363
|
-
var textureBack = this._createCubemapData(size, this._faceBack, pixels, inputWidth, inputHeight);
|
|
5364
|
-
return [
|
|
5365
|
-
textureRight,
|
|
5366
|
-
textureLeft,
|
|
5367
|
-
textureUp,
|
|
5368
|
-
textureDown,
|
|
5369
|
-
textureFront,
|
|
5370
|
-
textureBack
|
|
5371
|
-
];
|
|
5372
|
-
};
|
|
5373
|
-
HDRLoader._createCubemapData = function _createCubemapData(texSize, faceData, pixels, inputWidth, inputHeight) {
|
|
5374
|
-
var textureArray = new Uint8ClampedArray(texSize * texSize * 4);
|
|
5375
|
-
var rotDX1 = this._tempVector3.set(0, 0, 0).add(faceData[1]).subtract(faceData[0]).scale(1 / texSize);
|
|
5376
|
-
var rotDX2 = this._temp2Vector3.set(0, 0, 0).add(faceData[3]).subtract(faceData[2]).scale(1 / texSize);
|
|
5377
|
-
var dy = 1 / texSize;
|
|
5378
|
-
var fy = 0;
|
|
5379
|
-
for(var y = 0; y < texSize; y++){
|
|
5380
|
-
var xv1 = this._temp3Vector3.set(0, 0, 0).add(faceData[0]);
|
|
5381
|
-
var xv2 = this._temp4Vector3.set(0, 0, 0).add(faceData[2]);
|
|
5382
|
-
for(var x = 0; x < texSize; x++){
|
|
5383
|
-
var v = this._temp5Vector3.set(0, 0, 0).add(xv2).subtract(xv1).scale(fy).add(xv1);
|
|
5384
|
-
v.normalize();
|
|
5385
|
-
var color = this._calcProjectionSpherical(v, pixels, inputWidth, inputHeight);
|
|
5386
|
-
this._RGBEToLinear(color);
|
|
5387
|
-
this._linearToRGBM(color, 5);
|
|
5388
|
-
// 4 channels per pixels
|
|
5389
|
-
var index = y * texSize * 4 + x * 4;
|
|
5390
|
-
textureArray[index] = color.r;
|
|
5391
|
-
textureArray[index + 1] = color.g;
|
|
5392
|
-
textureArray[index + 2] = color.b;
|
|
5393
|
-
textureArray[index + 3] = color.a;
|
|
5394
|
-
xv1.add(rotDX1);
|
|
5395
|
-
xv2.add(rotDX2);
|
|
5396
|
-
}
|
|
5397
|
-
fy += dy;
|
|
5398
|
-
}
|
|
5399
|
-
return textureArray;
|
|
5400
|
-
};
|
|
5401
|
-
HDRLoader._calcProjectionSpherical = function _calcProjectionSpherical(vDir, pixels, inputWidth, inputHeight) {
|
|
5402
|
-
var theta = Math.atan2(vDir.z, vDir.x);
|
|
5403
|
-
var phi = Math.acos(vDir.y);
|
|
5404
|
-
while(theta < -PI){
|
|
5405
|
-
theta += 2 * PI;
|
|
5406
|
-
}
|
|
5407
|
-
while(theta > PI){
|
|
5408
|
-
theta -= 2 * PI;
|
|
5409
|
-
}
|
|
5410
|
-
var dx = theta / PI;
|
|
5411
|
-
var dy = phi / PI;
|
|
5412
|
-
// recenter.
|
|
5413
|
-
dx = dx * 0.5 + 0.5;
|
|
5414
|
-
var px = Math.round(dx * inputWidth);
|
|
5415
|
-
if (px < 0) {
|
|
5416
|
-
px = 0;
|
|
5417
|
-
} else if (px >= inputWidth) {
|
|
5418
|
-
px = inputWidth - 1;
|
|
5419
|
-
}
|
|
5420
|
-
var py = Math.round(dy * inputHeight);
|
|
5421
|
-
if (py < 0) {
|
|
5422
|
-
py = 0;
|
|
5423
|
-
} else if (py >= inputHeight) {
|
|
5424
|
-
py = inputHeight - 1;
|
|
5425
|
-
}
|
|
5426
|
-
var inputY = inputHeight - py - 1;
|
|
5427
|
-
var index = inputY * inputWidth * 4 + px * 4;
|
|
5428
|
-
var r = pixels[index];
|
|
5429
|
-
var g = pixels[index + 1];
|
|
5430
|
-
var b = pixels[index + 2];
|
|
5431
|
-
var a = pixels[index + 3];
|
|
5432
|
-
return new engineMath.Color(r, g, b, a);
|
|
5433
|
-
};
|
|
5434
|
-
HDRLoader._readStringLine = function _readStringLine(uint8array, startIndex) {
|
|
5435
|
-
var line = "";
|
|
5436
|
-
var character = "";
|
|
5437
|
-
for(var i = startIndex; i < uint8array.length - startIndex; i++){
|
|
5438
|
-
character = String.fromCharCode(uint8array[i]);
|
|
5439
|
-
if (character == "\n") {
|
|
5440
|
-
break;
|
|
5441
|
-
}
|
|
5442
|
-
line += character;
|
|
5443
|
-
}
|
|
5444
|
-
return line;
|
|
5445
|
-
};
|
|
5446
|
-
HDRLoader._parseHeader = function _parseHeader(uint8array) {
|
|
5447
|
-
var height = 0;
|
|
5448
|
-
var width = 0;
|
|
5449
|
-
var line = this._readStringLine(uint8array, 0);
|
|
5450
|
-
if (line[0] != "#" || line[1] != "?") {
|
|
5451
|
-
throw "Bad HDR Format.";
|
|
5452
|
-
}
|
|
5453
|
-
var endOfHeader = false;
|
|
5454
|
-
var findFormat = false;
|
|
5455
|
-
var lineIndex = 0;
|
|
5456
|
-
do {
|
|
5457
|
-
lineIndex += line.length + 1;
|
|
5458
|
-
line = this._readStringLine(uint8array, lineIndex);
|
|
5459
|
-
if (line == "FORMAT=32-bit_rle_rgbe") {
|
|
5460
|
-
findFormat = true;
|
|
5461
|
-
} else if (line.length == 0) {
|
|
5462
|
-
endOfHeader = true;
|
|
5463
|
-
}
|
|
5464
|
-
}while (!endOfHeader);
|
|
5465
|
-
if (!findFormat) {
|
|
5466
|
-
throw "HDR Bad header format, unsupported FORMAT";
|
|
5467
|
-
}
|
|
5468
|
-
lineIndex += line.length + 1;
|
|
5469
|
-
line = this._readStringLine(uint8array, lineIndex);
|
|
5470
|
-
var sizeRegexp = /^\-Y (.*) \+X (.*)$/g;
|
|
5471
|
-
var match = sizeRegexp.exec(line);
|
|
5472
|
-
// TODO. Support +Y and -X if needed.
|
|
5473
|
-
if (!match || match.length < 3) {
|
|
5474
|
-
throw "HDR Bad header format, no size";
|
|
5475
|
-
}
|
|
5476
|
-
width = parseInt(match[2]);
|
|
5477
|
-
height = parseInt(match[1]);
|
|
5478
|
-
if (width < 8 || width > 0x7fff) {
|
|
5479
|
-
throw "HDR Bad header format, unsupported size";
|
|
5480
|
-
}
|
|
5481
|
-
lineIndex += line.length + 1;
|
|
5482
|
-
return {
|
|
5483
|
-
height: height,
|
|
5484
|
-
width: width,
|
|
5485
|
-
dataPosition: lineIndex
|
|
5486
|
-
};
|
|
5487
|
-
};
|
|
5488
|
-
HDRLoader._readPixels = function _readPixels(buffer, width, height) {
|
|
5489
|
-
var scanLineWidth = width;
|
|
5490
|
-
var byteLength = buffer.byteLength;
|
|
5491
|
-
var dataRGBA = new Uint8Array(4 * width * height);
|
|
5492
|
-
var offset = 0, pos = 0;
|
|
5493
|
-
var ptrEnd = 4 * scanLineWidth;
|
|
5494
|
-
var scanLineBuffer = new Uint8Array(ptrEnd);
|
|
5495
|
-
var numScanLines = height; // read in each successive scanLine
|
|
5496
|
-
while(numScanLines > 0 && pos < byteLength){
|
|
5497
|
-
var a = buffer[pos++];
|
|
5498
|
-
var b = buffer[pos++];
|
|
5499
|
-
var c = buffer[pos++];
|
|
5500
|
-
var d = buffer[pos++];
|
|
5501
|
-
if (a != 2 || b != 2 || c & 0x80 || width < 8 || width > 32767) {
|
|
5502
|
-
// this file is not run length encoded
|
|
5503
|
-
// read values sequentially
|
|
5504
|
-
return buffer;
|
|
5505
|
-
}
|
|
5506
|
-
if ((c << 8 | d) != scanLineWidth) {
|
|
5507
|
-
// eslint-disable-next-line no-throw-literal
|
|
5508
|
-
throw "HDR Bad header format, wrong scan line width";
|
|
5509
|
-
}
|
|
5510
|
-
// read each of the four channels for the scanline into the buffer
|
|
5511
|
-
// first red, then green, then blue, then exponent
|
|
5512
|
-
var ptr = 0, count = void 0;
|
|
5513
|
-
while(ptr < ptrEnd && pos < byteLength){
|
|
5514
|
-
count = buffer[pos++];
|
|
5515
|
-
var isEncodedRun = count > 128;
|
|
5516
|
-
if (isEncodedRun) count -= 128;
|
|
5517
|
-
if (0 === count || ptr + count > ptrEnd) {
|
|
5518
|
-
throw "HDR Bad Format, bad scanline data (run)";
|
|
5519
|
-
}
|
|
5520
|
-
if (isEncodedRun) {
|
|
5521
|
-
// a (encoded) run of the same value
|
|
5522
|
-
var byteValue = buffer[pos++];
|
|
5523
|
-
for(var i = 0; i < count; i++){
|
|
5524
|
-
scanLineBuffer[ptr++] = byteValue;
|
|
5525
|
-
} //ptr += count;
|
|
5526
|
-
} else {
|
|
5527
|
-
// a literal-run
|
|
5528
|
-
scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);
|
|
5529
|
-
ptr += count;
|
|
5530
|
-
pos += count;
|
|
5531
|
-
}
|
|
5532
|
-
} // now convert data from buffer into rgba
|
|
5533
|
-
// first red, then green, then blue, then exponent (alpha)
|
|
5534
|
-
var l = scanLineWidth; //scanLine_buffer.byteLength;
|
|
5535
|
-
for(var i1 = 0; i1 < l; i1++){
|
|
5536
|
-
var off = 0;
|
|
5537
|
-
dataRGBA[offset] = scanLineBuffer[i1 + off];
|
|
5538
|
-
off += scanLineWidth;
|
|
5539
|
-
dataRGBA[offset + 1] = scanLineBuffer[i1 + off];
|
|
5540
|
-
off += scanLineWidth;
|
|
5541
|
-
dataRGBA[offset + 2] = scanLineBuffer[i1 + off];
|
|
5542
|
-
off += scanLineWidth;
|
|
5543
|
-
dataRGBA[offset + 3] = scanLineBuffer[i1 + off];
|
|
5544
|
-
offset += 4;
|
|
5545
|
-
}
|
|
5546
|
-
numScanLines--;
|
|
5547
|
-
}
|
|
5548
|
-
return dataRGBA;
|
|
5549
|
-
};
|
|
5550
|
-
HDRLoader._RGBEToLinear = function _RGBEToLinear(color) {
|
|
5551
|
-
var scaleFactor = Math.pow(2, color.a - 128) / 255;
|
|
5552
|
-
color.r *= scaleFactor;
|
|
5553
|
-
color.g *= scaleFactor;
|
|
5554
|
-
color.b *= scaleFactor;
|
|
5555
|
-
color.a = 1;
|
|
5556
|
-
};
|
|
5557
|
-
HDRLoader._linearToRGBM = function _linearToRGBM(color, maxRange) {
|
|
5558
|
-
var maxRGB = Math.max(color.r, Math.max(color.g, color.b));
|
|
5559
|
-
var M = Math.min(maxRGB / maxRange, 1);
|
|
5560
|
-
M = Math.ceil(M * 255);
|
|
5561
|
-
var scaleFactor = 65025 / (M * maxRange); // 255 * (255 / (M * maxRange) )
|
|
5562
|
-
color.r *= scaleFactor;
|
|
5563
|
-
color.g *= scaleFactor;
|
|
5564
|
-
color.b *= scaleFactor;
|
|
5565
|
-
color.a *= M;
|
|
5566
|
-
};
|
|
5567
|
-
return HDRLoader;
|
|
5568
|
-
}(engineCore.Loader);
|
|
5569
|
-
HDRLoader._rightBottomBack = new engineMath.Vector3(1.0, -1.0, -1.0);
|
|
5570
|
-
HDRLoader._rightBottomFront = new engineMath.Vector3(1.0, -1.0, 1.0);
|
|
5571
|
-
HDRLoader._rightUpBack = new engineMath.Vector3(1.0, 1.0, -1.0);
|
|
5572
|
-
HDRLoader._rightUpFront = new engineMath.Vector3(1.0, 1.0, 1.0);
|
|
5573
|
-
HDRLoader._leftBottomBack = new engineMath.Vector3(-1.0, -1.0, -1.0);
|
|
5574
|
-
HDRLoader._leftBottomFront = new engineMath.Vector3(-1.0, -1.0, 1.0);
|
|
5575
|
-
HDRLoader._leftUpBack = new engineMath.Vector3(-1.0, 1.0, -1.0);
|
|
5576
|
-
HDRLoader._leftUpFront = new engineMath.Vector3(-1.0, 1.0, 1.0);
|
|
5577
|
-
HDRLoader._faceRight = [
|
|
5578
|
-
HDRLoader._rightBottomBack,
|
|
5579
|
-
HDRLoader._rightBottomFront,
|
|
5580
|
-
HDRLoader._rightUpBack,
|
|
5581
|
-
HDRLoader._rightUpFront
|
|
5582
|
-
];
|
|
5583
|
-
HDRLoader._faceLeft = [
|
|
5584
|
-
HDRLoader._leftBottomFront,
|
|
5585
|
-
HDRLoader._leftBottomBack,
|
|
5586
|
-
HDRLoader._leftUpFront,
|
|
5587
|
-
HDRLoader._leftUpBack
|
|
5588
|
-
];
|
|
5589
|
-
HDRLoader._faceUp = [
|
|
5590
|
-
HDRLoader._leftBottomFront,
|
|
5591
|
-
HDRLoader._rightBottomFront,
|
|
5592
|
-
HDRLoader._leftBottomBack,
|
|
5593
|
-
HDRLoader._rightBottomBack
|
|
5594
|
-
];
|
|
5595
|
-
HDRLoader._faceBottom = [
|
|
5596
|
-
HDRLoader._leftUpBack,
|
|
5597
|
-
HDRLoader._rightUpBack,
|
|
5598
|
-
HDRLoader._leftUpFront,
|
|
5599
|
-
HDRLoader._rightUpFront
|
|
5600
|
-
];
|
|
5601
|
-
HDRLoader._faceFront = [
|
|
5602
|
-
HDRLoader._leftBottomBack,
|
|
5603
|
-
HDRLoader._rightBottomBack,
|
|
5604
|
-
HDRLoader._leftUpBack,
|
|
5605
|
-
HDRLoader._rightUpBack
|
|
5606
|
-
];
|
|
5607
|
-
HDRLoader._faceBack = [
|
|
5608
|
-
HDRLoader._rightBottomFront,
|
|
5609
|
-
HDRLoader._leftBottomFront,
|
|
5610
|
-
HDRLoader._rightUpFront,
|
|
5611
|
-
HDRLoader._leftUpFront
|
|
5612
|
-
];
|
|
5613
|
-
HDRLoader._tempVector3 = new engineMath.Vector3();
|
|
5614
|
-
HDRLoader._temp2Vector3 = new engineMath.Vector3();
|
|
5615
|
-
HDRLoader._temp3Vector3 = new engineMath.Vector3();
|
|
5616
|
-
HDRLoader._temp4Vector3 = new engineMath.Vector3();
|
|
5617
|
-
HDRLoader._temp5Vector3 = new engineMath.Vector3();
|
|
5618
|
-
HDRLoader = __decorate([
|
|
5619
|
-
engineCore.resourceLoader(engineCore.AssetType.HDR, [
|
|
5620
|
-
"hdr"
|
|
5621
|
-
])
|
|
5622
|
-
], HDRLoader);
|
|
5623
|
-
/**
|
|
5624
|
-
* @internal
|
|
5625
|
-
*/ var HDRContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
5626
|
-
_inherits(HDRContentRestorer, ContentRestorer);
|
|
5627
|
-
function HDRContentRestorer(resource, url, requestConfig) {
|
|
5628
|
-
var _this;
|
|
5629
|
-
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
5630
|
-
return _this;
|
|
5631
|
-
}
|
|
5632
|
-
var _proto = HDRContentRestorer.prototype;
|
|
5633
|
-
_proto.restoreContent = function restoreContent() {
|
|
5634
|
-
var _this = this;
|
|
5635
|
-
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
5636
|
-
var resource = _this.resource;
|
|
5637
|
-
var engine = resource.engine;
|
|
5638
|
-
engine.resourceManager// @ts-ignore
|
|
5639
|
-
._request(_this.url, _this.requestConfig).then(function(buffer) {
|
|
5640
|
-
HDRLoader._setTextureByBuffer(engine, buffer, resource);
|
|
5641
|
-
resolve(resource);
|
|
5642
|
-
}).catch(reject);
|
|
5643
|
-
});
|
|
5644
|
-
};
|
|
5645
|
-
return HDRContentRestorer;
|
|
5646
|
-
}(engineCore.ContentRestorer);
|
|
5647
|
-
|
|
5648
5277
|
var JSONLoader = /*#__PURE__*/ function(Loader) {
|
|
5649
5278
|
_inherits(JSONLoader, Loader);
|
|
5650
5279
|
function JSONLoader() {
|
|
@@ -6047,7 +5676,7 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6047
5676
|
}(engineCore.Loader);
|
|
6048
5677
|
MaterialLoader = __decorate([
|
|
6049
5678
|
engineCore.resourceLoader(engineCore.AssetType.Material, [
|
|
6050
|
-
"
|
|
5679
|
+
"mat"
|
|
6051
5680
|
])
|
|
6052
5681
|
], MaterialLoader);
|
|
6053
5682
|
|
|
@@ -6170,7 +5799,7 @@ var ProjectLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6170
5799
|
}(engineCore.Loader);
|
|
6171
5800
|
ProjectLoader = __decorate([
|
|
6172
5801
|
engineCore.resourceLoader(engineCore.AssetType.Project, [
|
|
6173
|
-
"
|
|
5802
|
+
"project"
|
|
6174
5803
|
], false)
|
|
6175
5804
|
], ProjectLoader);
|
|
6176
5805
|
|
|
@@ -6391,28 +6020,20 @@ TextLoader = __decorate([
|
|
|
6391
6020
|
])
|
|
6392
6021
|
], TextLoader);
|
|
6393
6022
|
|
|
6394
|
-
|
|
6395
|
-
|
|
6396
|
-
|
|
6397
|
-
|
|
6398
|
-
|
|
6399
|
-
var
|
|
6400
|
-
|
|
6401
|
-
|
|
6402
|
-
|
|
6403
|
-
|
|
6404
|
-
|
|
6405
|
-
|
|
6406
|
-
|
|
6407
|
-
|
|
6408
|
-
resource.setImageSource(image);
|
|
6409
|
-
resource.generateMipmaps();
|
|
6410
|
-
return resource;
|
|
6411
|
-
});
|
|
6412
|
-
};
|
|
6413
|
-
return Texture2DContentRestorer;
|
|
6414
|
-
}(engineCore.ContentRestorer);
|
|
6415
|
-
|
|
6023
|
+
function loadImageFromBuffer(buffer) {
|
|
6024
|
+
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
6025
|
+
var blob = new Blob([
|
|
6026
|
+
buffer
|
|
6027
|
+
]);
|
|
6028
|
+
var img = new Image();
|
|
6029
|
+
img.onload = function() {
|
|
6030
|
+
URL.revokeObjectURL(img.src);
|
|
6031
|
+
resolve(img);
|
|
6032
|
+
};
|
|
6033
|
+
img.onerror = reject;
|
|
6034
|
+
img.src = URL.createObjectURL(blob);
|
|
6035
|
+
});
|
|
6036
|
+
}
|
|
6416
6037
|
var Texture2DLoader = /*#__PURE__*/ function(Loader) {
|
|
6417
6038
|
_inherits(Texture2DLoader, Loader);
|
|
6418
6039
|
function Texture2DLoader() {
|
|
@@ -6420,36 +6041,48 @@ var Texture2DLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6420
6041
|
}
|
|
6421
6042
|
var _proto = Texture2DLoader.prototype;
|
|
6422
6043
|
_proto.load = function load(item, resourceManager) {
|
|
6044
|
+
var _this = this;
|
|
6045
|
+
var url = item.url;
|
|
6046
|
+
var requestConfig = _extends({}, item, {
|
|
6047
|
+
type: "arraybuffer"
|
|
6048
|
+
});
|
|
6423
6049
|
return new engineCore.AssetPromise(function(resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) {
|
|
6424
|
-
var url = item.url;
|
|
6425
|
-
var requestConfig = _extends({}, item, {
|
|
6426
|
-
type: "image"
|
|
6427
|
-
});
|
|
6428
6050
|
resourceManager// @ts-ignore
|
|
6429
|
-
._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(
|
|
6430
|
-
|
|
6431
|
-
|
|
6432
|
-
|
|
6433
|
-
|
|
6434
|
-
|
|
6435
|
-
|
|
6436
|
-
|
|
6437
|
-
|
|
6438
|
-
|
|
6439
|
-
|
|
6440
|
-
|
|
6441
|
-
generateMipmap && texture.generateMipmaps();
|
|
6442
|
-
if (url.indexOf("data:") !== 0) {
|
|
6443
|
-
var index = url.lastIndexOf("/");
|
|
6444
|
-
texture.name = url.substring(index + 1);
|
|
6051
|
+
._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(buffer) {
|
|
6052
|
+
if (FileHeader.checkMagic(buffer)) {
|
|
6053
|
+
decode(buffer, resourceManager.engine).then(function(texture) {
|
|
6054
|
+
resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
|
|
6055
|
+
resolve(texture);
|
|
6056
|
+
}, reject);
|
|
6057
|
+
} else {
|
|
6058
|
+
loadImageFromBuffer(buffer).then(function(img) {
|
|
6059
|
+
var texture = _this._createTexture(img, item, resourceManager);
|
|
6060
|
+
resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
|
|
6061
|
+
resolve(texture);
|
|
6062
|
+
}, reject);
|
|
6445
6063
|
}
|
|
6446
|
-
|
|
6447
|
-
resolve(texture);
|
|
6448
|
-
}).catch(function(e) {
|
|
6449
|
-
reject(e);
|
|
6450
|
-
});
|
|
6064
|
+
}).catch(reject);
|
|
6451
6065
|
});
|
|
6452
6066
|
};
|
|
6067
|
+
_proto._createTexture = function _createTexture(img, item, resourceManager) {
|
|
6068
|
+
var _item_params;
|
|
6069
|
+
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;
|
|
6070
|
+
var width = img.width, height = img.height;
|
|
6071
|
+
var engine = resourceManager.engine;
|
|
6072
|
+
var generateMipmap = engineCore.TextureUtils.supportGenerateMipmapsWithCorrection(engine, width, height, format, mipmap, isSRGBColorSpace);
|
|
6073
|
+
var texture = new engineCore.Texture2D(engine, width, height, format, generateMipmap, isSRGBColorSpace);
|
|
6074
|
+
texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
|
|
6075
|
+
texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
|
|
6076
|
+
texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
|
|
6077
|
+
texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
|
|
6078
|
+
texture.setImageSource(img);
|
|
6079
|
+
generateMipmap && texture.generateMipmaps();
|
|
6080
|
+
var url = item.url;
|
|
6081
|
+
if (url.indexOf("data:") !== 0) {
|
|
6082
|
+
texture.name = url.substring(url.lastIndexOf("/") + 1);
|
|
6083
|
+
}
|
|
6084
|
+
return texture;
|
|
6085
|
+
};
|
|
6453
6086
|
return Texture2DLoader;
|
|
6454
6087
|
}(engineCore.Loader);
|
|
6455
6088
|
Texture2DLoader = __decorate([
|
|
@@ -6457,40 +6090,319 @@ Texture2DLoader = __decorate([
|
|
|
6457
6090
|
"png",
|
|
6458
6091
|
"jpg",
|
|
6459
6092
|
"webp",
|
|
6460
|
-
"jpeg"
|
|
6093
|
+
"jpeg",
|
|
6094
|
+
"tex"
|
|
6461
6095
|
])
|
|
6462
6096
|
], Texture2DLoader);
|
|
6463
|
-
|
|
6464
|
-
|
|
6465
|
-
|
|
6466
|
-
*/ var TextureCubeContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6467
|
-
_inherits(TextureCubeContentRestorer, ContentRestorer);
|
|
6468
|
-
function TextureCubeContentRestorer(resource, urls, requestConfig) {
|
|
6097
|
+
var Texture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6098
|
+
_inherits(Texture2DContentRestorer, ContentRestorer);
|
|
6099
|
+
function Texture2DContentRestorer(resource, url, requestConfig) {
|
|
6469
6100
|
var _this;
|
|
6470
|
-
_this = ContentRestorer.call(this, resource) || this, _this.
|
|
6101
|
+
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
6471
6102
|
return _this;
|
|
6472
6103
|
}
|
|
6473
|
-
var _proto =
|
|
6104
|
+
var _proto = Texture2DContentRestorer.prototype;
|
|
6474
6105
|
_proto.restoreContent = function restoreContent() {
|
|
6475
|
-
var
|
|
6476
|
-
|
|
6477
|
-
|
|
6478
|
-
|
|
6479
|
-
|
|
6480
|
-
|
|
6481
|
-
|
|
6482
|
-
|
|
6483
|
-
|
|
6484
|
-
|
|
6485
|
-
|
|
6486
|
-
|
|
6487
|
-
|
|
6488
|
-
});
|
|
6106
|
+
var texture = this.resource;
|
|
6107
|
+
var engine = texture.engine;
|
|
6108
|
+
return engine.resourceManager// @ts-ignore
|
|
6109
|
+
._request(this.url, this.requestConfig).then(function(buffer) {
|
|
6110
|
+
if (FileHeader.checkMagic(buffer)) {
|
|
6111
|
+
return decode(buffer, engine, texture);
|
|
6112
|
+
} else {
|
|
6113
|
+
return loadImageFromBuffer(buffer).then(function(img) {
|
|
6114
|
+
texture.setImageSource(img);
|
|
6115
|
+
texture.generateMipmaps();
|
|
6116
|
+
return texture;
|
|
6117
|
+
});
|
|
6118
|
+
}
|
|
6489
6119
|
});
|
|
6490
6120
|
};
|
|
6491
|
-
return
|
|
6121
|
+
return Texture2DContentRestorer;
|
|
6492
6122
|
}(engineCore.ContentRestorer);
|
|
6493
6123
|
|
|
6124
|
+
/**
|
|
6125
|
+
* @internal
|
|
6126
|
+
* HDR panorama to cubemap decoder.
|
|
6127
|
+
*/ var HDRDecoder = /*#__PURE__*/ function() {
|
|
6128
|
+
function HDRDecoder() {}
|
|
6129
|
+
HDRDecoder.parseHeader = function parseHeader(uint8array) {
|
|
6130
|
+
var line = this._readStringLine(uint8array, 0);
|
|
6131
|
+
if (line[0] !== "#" || line[1] !== "?") {
|
|
6132
|
+
throw "HDRDecoder: invalid file header";
|
|
6133
|
+
}
|
|
6134
|
+
var endOfHeader = false;
|
|
6135
|
+
var findFormat = false;
|
|
6136
|
+
var lineIndex = 0;
|
|
6137
|
+
do {
|
|
6138
|
+
lineIndex += line.length + 1;
|
|
6139
|
+
line = this._readStringLine(uint8array, lineIndex);
|
|
6140
|
+
if (line === "FORMAT=32-bit_rle_rgbe") findFormat = true;
|
|
6141
|
+
else if (line.length === 0) endOfHeader = true;
|
|
6142
|
+
}while (!endOfHeader);
|
|
6143
|
+
if (!findFormat) {
|
|
6144
|
+
throw "HDRDecoder: unsupported format, expected 32-bit_rle_rgbe";
|
|
6145
|
+
}
|
|
6146
|
+
lineIndex += line.length + 1;
|
|
6147
|
+
line = this._readStringLine(uint8array, lineIndex);
|
|
6148
|
+
var match = /^\-Y (.*) \+X (.*)$/g.exec(line);
|
|
6149
|
+
if (!match || match.length < 3) {
|
|
6150
|
+
throw "HDRDecoder: missing image size, only -Y +X layout is supported";
|
|
6151
|
+
}
|
|
6152
|
+
var width = parseInt(match[2]);
|
|
6153
|
+
var height = parseInt(match[1]);
|
|
6154
|
+
if (width < 8 || width > 0x7fff) {
|
|
6155
|
+
throw "HDRDecoder: unsupported image width, must be between 8 and 32767";
|
|
6156
|
+
}
|
|
6157
|
+
return {
|
|
6158
|
+
height: height,
|
|
6159
|
+
width: width,
|
|
6160
|
+
dataPosition: lineIndex + line.length + 1
|
|
6161
|
+
};
|
|
6162
|
+
};
|
|
6163
|
+
HDRDecoder.decodeFaces = function decodeFaces(bufferArray, header, onFace) {
|
|
6164
|
+
var width = header.width, height = header.height, dataPosition = header.dataPosition;
|
|
6165
|
+
var cubeSize = height >> 1;
|
|
6166
|
+
var pixels = HDRDecoder._readPixels(bufferArray.subarray(dataPosition), width, height);
|
|
6167
|
+
var faces = HDRDecoder._faces;
|
|
6168
|
+
var faceBuffer = new Uint16Array(cubeSize * cubeSize * 4);
|
|
6169
|
+
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6170
|
+
HDRDecoder._createCubemapData(cubeSize, faces[faceIndex], pixels, width, height, faceBuffer);
|
|
6171
|
+
onFace(faceIndex, faceBuffer);
|
|
6172
|
+
}
|
|
6173
|
+
};
|
|
6174
|
+
HDRDecoder._generateFloat2HalfTables = function _generateFloat2HalfTables() {
|
|
6175
|
+
var baseTable = new Uint32Array(512);
|
|
6176
|
+
var shiftTable = new Uint32Array(512);
|
|
6177
|
+
for(var i = 0; i < 256; ++i){
|
|
6178
|
+
var e = i - 127;
|
|
6179
|
+
if (e < -27) {
|
|
6180
|
+
baseTable[i] = 0x0000;
|
|
6181
|
+
baseTable[i | 0x100] = 0x8000;
|
|
6182
|
+
shiftTable[i] = 24;
|
|
6183
|
+
shiftTable[i | 0x100] = 24;
|
|
6184
|
+
} else if (e < -14) {
|
|
6185
|
+
baseTable[i] = 0x0400 >> -e - 14;
|
|
6186
|
+
baseTable[i | 0x100] = 0x0400 >> -e - 14 | 0x8000;
|
|
6187
|
+
shiftTable[i] = -e - 1;
|
|
6188
|
+
shiftTable[i | 0x100] = -e - 1;
|
|
6189
|
+
} else if (e <= 15) {
|
|
6190
|
+
baseTable[i] = e + 15 << 10;
|
|
6191
|
+
baseTable[i | 0x100] = e + 15 << 10 | 0x8000;
|
|
6192
|
+
shiftTable[i] = 13;
|
|
6193
|
+
shiftTable[i | 0x100] = 13;
|
|
6194
|
+
} else if (e < 128) {
|
|
6195
|
+
baseTable[i] = 0x7c00;
|
|
6196
|
+
baseTable[i | 0x100] = 0xfc00;
|
|
6197
|
+
shiftTable[i] = 24;
|
|
6198
|
+
shiftTable[i | 0x100] = 24;
|
|
6199
|
+
} else {
|
|
6200
|
+
baseTable[i] = 0x7c00;
|
|
6201
|
+
baseTable[i | 0x100] = 0xfc00;
|
|
6202
|
+
shiftTable[i] = 13;
|
|
6203
|
+
shiftTable[i | 0x100] = 13;
|
|
6204
|
+
}
|
|
6205
|
+
}
|
|
6206
|
+
return {
|
|
6207
|
+
baseTable: baseTable,
|
|
6208
|
+
shiftTable: shiftTable
|
|
6209
|
+
};
|
|
6210
|
+
};
|
|
6211
|
+
HDRDecoder._createCubemapData = function _createCubemapData(texSize, face, pixels, inputWidth, inputHeight, facePixels) {
|
|
6212
|
+
var invSize = 1 / texSize;
|
|
6213
|
+
var rotDX1X = (face[3] - face[0]) * invSize;
|
|
6214
|
+
var rotDX1Y = (face[4] - face[1]) * invSize;
|
|
6215
|
+
var rotDX1Z = (face[5] - face[2]) * invSize;
|
|
6216
|
+
var rotDX2X = (face[9] - face[6]) * invSize;
|
|
6217
|
+
var rotDX2Y = (face[10] - face[7]) * invSize;
|
|
6218
|
+
var rotDX2Z = (face[11] - face[8]) * invSize;
|
|
6219
|
+
var floatView = HDRDecoder._floatView;
|
|
6220
|
+
var uint32View = HDRDecoder._uint32View;
|
|
6221
|
+
var _HDRDecoder__float2HalfTables = HDRDecoder._float2HalfTables, baseTable = _HDRDecoder__float2HalfTables.baseTable, shiftTable = _HDRDecoder__float2HalfTables.shiftTable;
|
|
6222
|
+
var one = HDRDecoder._one;
|
|
6223
|
+
var fy = 0;
|
|
6224
|
+
for(var y = 0; y < texSize; y++){
|
|
6225
|
+
var xv1X = face[0], xv1Y = face[1], xv1Z = face[2];
|
|
6226
|
+
var xv2X = face[6], xv2Y = face[7], xv2Z = face[8];
|
|
6227
|
+
for(var x = 0; x < texSize; x++){
|
|
6228
|
+
var dirX = xv1X + (xv2X - xv1X) * fy;
|
|
6229
|
+
var dirY = xv1Y + (xv2Y - xv1Y) * fy;
|
|
6230
|
+
var dirZ = xv1Z + (xv2Z - xv1Z) * fy;
|
|
6231
|
+
var invLen = 1 / Math.sqrt(dirX * dirX + dirY * dirY + dirZ * dirZ);
|
|
6232
|
+
dirX *= invLen;
|
|
6233
|
+
dirY *= invLen;
|
|
6234
|
+
dirZ *= invLen;
|
|
6235
|
+
var px = Math.round((Math.atan2(dirZ, dirX) / Math.PI * 0.5 + 0.5) * inputWidth);
|
|
6236
|
+
if (px < 0) px = 0;
|
|
6237
|
+
else if (px >= inputWidth) px = inputWidth - 1;
|
|
6238
|
+
var py = Math.round(Math.acos(dirY) / Math.PI * inputHeight);
|
|
6239
|
+
if (py < 0) py = 0;
|
|
6240
|
+
else if (py >= inputHeight) py = inputHeight - 1;
|
|
6241
|
+
var srcIndex = (inputHeight - py - 1) * inputWidth * 4 + px * 4;
|
|
6242
|
+
var scaleFactor = Math.pow(2, pixels[srcIndex + 3] - 128) / 255;
|
|
6243
|
+
var dstIndex = y * texSize * 4 + x * 4;
|
|
6244
|
+
for(var c = 0; c < 3; c++){
|
|
6245
|
+
floatView[0] = pixels[srcIndex + c] * scaleFactor;
|
|
6246
|
+
var f = uint32View[0];
|
|
6247
|
+
var e = f >> 23 & 0x1ff;
|
|
6248
|
+
facePixels[dstIndex + c] = baseTable[e] + ((f & 0x007fffff) >> shiftTable[e]);
|
|
6249
|
+
}
|
|
6250
|
+
facePixels[dstIndex + 3] = one;
|
|
6251
|
+
xv1X += rotDX1X;
|
|
6252
|
+
xv1Y += rotDX1Y;
|
|
6253
|
+
xv1Z += rotDX1Z;
|
|
6254
|
+
xv2X += rotDX2X;
|
|
6255
|
+
xv2Y += rotDX2Y;
|
|
6256
|
+
xv2Z += rotDX2Z;
|
|
6257
|
+
}
|
|
6258
|
+
fy += invSize;
|
|
6259
|
+
}
|
|
6260
|
+
};
|
|
6261
|
+
HDRDecoder._readStringLine = function _readStringLine(uint8array, startIndex) {
|
|
6262
|
+
var line = "";
|
|
6263
|
+
for(var i = startIndex, n = uint8array.length; i < n; i++){
|
|
6264
|
+
var character = String.fromCharCode(uint8array[i]);
|
|
6265
|
+
if (character === "\n") break;
|
|
6266
|
+
line += character;
|
|
6267
|
+
}
|
|
6268
|
+
return line;
|
|
6269
|
+
};
|
|
6270
|
+
HDRDecoder._readPixels = function _readPixels(buffer, width, height) {
|
|
6271
|
+
var byteLength = buffer.byteLength;
|
|
6272
|
+
var dataRGBA = new Uint8Array(4 * width * height);
|
|
6273
|
+
var offset = 0;
|
|
6274
|
+
var pos = 0;
|
|
6275
|
+
var ptrEnd = 4 * width;
|
|
6276
|
+
var scanLineBuffer = new Uint8Array(ptrEnd);
|
|
6277
|
+
var numScanLines = height;
|
|
6278
|
+
while(numScanLines > 0 && pos < byteLength){
|
|
6279
|
+
var a = buffer[pos++];
|
|
6280
|
+
var b = buffer[pos++];
|
|
6281
|
+
var c = buffer[pos++];
|
|
6282
|
+
var d = buffer[pos++];
|
|
6283
|
+
if (a !== 2 || b !== 2 || c & 0x80 || width < 8 || width > 32767) return buffer;
|
|
6284
|
+
if ((c << 8 | d) !== width) throw "HDRDecoder: wrong scanline width";
|
|
6285
|
+
var ptr = 0;
|
|
6286
|
+
while(ptr < ptrEnd && pos < byteLength){
|
|
6287
|
+
var count = buffer[pos++];
|
|
6288
|
+
var isEncodedRun = count > 128;
|
|
6289
|
+
if (isEncodedRun) count -= 128;
|
|
6290
|
+
if (count === 0 || ptr + count > ptrEnd) throw "HDRDecoder: bad scanline data";
|
|
6291
|
+
if (isEncodedRun) {
|
|
6292
|
+
var byteValue = buffer[pos++];
|
|
6293
|
+
for(var i = 0; i < count; i++)scanLineBuffer[ptr++] = byteValue;
|
|
6294
|
+
} else {
|
|
6295
|
+
scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);
|
|
6296
|
+
ptr += count;
|
|
6297
|
+
pos += count;
|
|
6298
|
+
}
|
|
6299
|
+
}
|
|
6300
|
+
for(var i1 = 0; i1 < width; i1++, offset += 4){
|
|
6301
|
+
dataRGBA[offset] = scanLineBuffer[i1];
|
|
6302
|
+
dataRGBA[offset + 1] = scanLineBuffer[i1 + width];
|
|
6303
|
+
dataRGBA[offset + 2] = scanLineBuffer[i1 + width * 2];
|
|
6304
|
+
dataRGBA[offset + 3] = scanLineBuffer[i1 + width * 3];
|
|
6305
|
+
}
|
|
6306
|
+
numScanLines--;
|
|
6307
|
+
}
|
|
6308
|
+
return dataRGBA;
|
|
6309
|
+
};
|
|
6310
|
+
return HDRDecoder;
|
|
6311
|
+
}();
|
|
6312
|
+
// Float32 to Float16 lookup tables (http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf)
|
|
6313
|
+
HDRDecoder._float2HalfTables = HDRDecoder._generateFloat2HalfTables();
|
|
6314
|
+
HDRDecoder._floatView = new Float32Array(1);
|
|
6315
|
+
HDRDecoder._uint32View = new Uint32Array(HDRDecoder._floatView.buffer);
|
|
6316
|
+
HDRDecoder._one = 0x3c00 // Half float for 1.0
|
|
6317
|
+
;
|
|
6318
|
+
// prettier-ignore
|
|
6319
|
+
HDRDecoder._faces = [
|
|
6320
|
+
/* +X */ [
|
|
6321
|
+
1,
|
|
6322
|
+
-1,
|
|
6323
|
+
-1,
|
|
6324
|
+
1,
|
|
6325
|
+
-1,
|
|
6326
|
+
1,
|
|
6327
|
+
1,
|
|
6328
|
+
1,
|
|
6329
|
+
-1,
|
|
6330
|
+
1,
|
|
6331
|
+
1,
|
|
6332
|
+
1
|
|
6333
|
+
],
|
|
6334
|
+
/* -X */ [
|
|
6335
|
+
-1,
|
|
6336
|
+
-1,
|
|
6337
|
+
1,
|
|
6338
|
+
-1,
|
|
6339
|
+
-1,
|
|
6340
|
+
-1,
|
|
6341
|
+
-1,
|
|
6342
|
+
1,
|
|
6343
|
+
1,
|
|
6344
|
+
-1,
|
|
6345
|
+
1,
|
|
6346
|
+
-1
|
|
6347
|
+
],
|
|
6348
|
+
/* +Y */ [
|
|
6349
|
+
-1,
|
|
6350
|
+
-1,
|
|
6351
|
+
1,
|
|
6352
|
+
1,
|
|
6353
|
+
-1,
|
|
6354
|
+
1,
|
|
6355
|
+
-1,
|
|
6356
|
+
-1,
|
|
6357
|
+
-1,
|
|
6358
|
+
1,
|
|
6359
|
+
-1,
|
|
6360
|
+
-1
|
|
6361
|
+
],
|
|
6362
|
+
/* -Y */ [
|
|
6363
|
+
-1,
|
|
6364
|
+
1,
|
|
6365
|
+
-1,
|
|
6366
|
+
1,
|
|
6367
|
+
1,
|
|
6368
|
+
-1,
|
|
6369
|
+
-1,
|
|
6370
|
+
1,
|
|
6371
|
+
1,
|
|
6372
|
+
1,
|
|
6373
|
+
1,
|
|
6374
|
+
1
|
|
6375
|
+
],
|
|
6376
|
+
/* +Z */ [
|
|
6377
|
+
-1,
|
|
6378
|
+
-1,
|
|
6379
|
+
-1,
|
|
6380
|
+
1,
|
|
6381
|
+
-1,
|
|
6382
|
+
-1,
|
|
6383
|
+
-1,
|
|
6384
|
+
1,
|
|
6385
|
+
-1,
|
|
6386
|
+
1,
|
|
6387
|
+
1,
|
|
6388
|
+
-1
|
|
6389
|
+
],
|
|
6390
|
+
/* -Z */ [
|
|
6391
|
+
1,
|
|
6392
|
+
-1,
|
|
6393
|
+
1,
|
|
6394
|
+
-1,
|
|
6395
|
+
-1,
|
|
6396
|
+
1,
|
|
6397
|
+
1,
|
|
6398
|
+
1,
|
|
6399
|
+
1,
|
|
6400
|
+
-1,
|
|
6401
|
+
1,
|
|
6402
|
+
1
|
|
6403
|
+
]
|
|
6404
|
+
];
|
|
6405
|
+
|
|
6494
6406
|
var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
6495
6407
|
_inherits(TextureCubeLoader, Loader);
|
|
6496
6408
|
function TextureCubeLoader() {
|
|
@@ -6498,6 +6410,44 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6498
6410
|
}
|
|
6499
6411
|
var _proto = TextureCubeLoader.prototype;
|
|
6500
6412
|
_proto.load = function load(item, resourceManager) {
|
|
6413
|
+
if (item.urls) {
|
|
6414
|
+
return this._loadCubeFaces(item, resourceManager);
|
|
6415
|
+
} else {
|
|
6416
|
+
return this._loadHDR(item, resourceManager);
|
|
6417
|
+
}
|
|
6418
|
+
};
|
|
6419
|
+
_proto._loadHDR = function _loadHDR(item, resourceManager) {
|
|
6420
|
+
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
6421
|
+
var engine = resourceManager.engine;
|
|
6422
|
+
var url = item.url;
|
|
6423
|
+
var requestConfig = _extends({}, item, {
|
|
6424
|
+
type: "arraybuffer"
|
|
6425
|
+
});
|
|
6426
|
+
resourceManager// @ts-ignore
|
|
6427
|
+
._request(url, requestConfig).then(function(buffer) {
|
|
6428
|
+
if (!engineCore.SystemInfo.supportsTextureFormat(engine, engineCore.TextureFormat.R16G16B16A16)) {
|
|
6429
|
+
reject(new Error("TextureCubeLoader: HDR texture requires half float support."));
|
|
6430
|
+
return;
|
|
6431
|
+
}
|
|
6432
|
+
var _item_params;
|
|
6433
|
+
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;
|
|
6434
|
+
var bufferArray = new Uint8Array(buffer);
|
|
6435
|
+
var header = HDRDecoder.parseHeader(bufferArray);
|
|
6436
|
+
var texture = new engineCore.TextureCube(engine, header.height >> 1, engineCore.TextureFormat.R16G16B16A16, mipmap, false);
|
|
6437
|
+
HDRDecoder.decodeFaces(bufferArray, header, function(faceIndex, data) {
|
|
6438
|
+
texture.setPixelBuffer(engineCore.TextureCubeFace.PositiveX + faceIndex, data, 0);
|
|
6439
|
+
});
|
|
6440
|
+
texture.generateMipmaps();
|
|
6441
|
+
texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
|
|
6442
|
+
texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
|
|
6443
|
+
texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
|
|
6444
|
+
texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
|
|
6445
|
+
resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));
|
|
6446
|
+
resolve(texture);
|
|
6447
|
+
}).catch(reject);
|
|
6448
|
+
});
|
|
6449
|
+
};
|
|
6450
|
+
_proto._loadCubeFaces = function _loadCubeFaces(item, resourceManager) {
|
|
6501
6451
|
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
6502
6452
|
var urls = item.urls;
|
|
6503
6453
|
var requestConfig = _extends({}, item, {
|
|
@@ -6511,7 +6461,7 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6511
6461
|
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;
|
|
6512
6462
|
var _images_ = images[0], width = _images_.width, height = _images_.height;
|
|
6513
6463
|
if (width !== height) {
|
|
6514
|
-
|
|
6464
|
+
reject(new Error("The cube texture must have the same width and height"));
|
|
6515
6465
|
return;
|
|
6516
6466
|
}
|
|
6517
6467
|
var engine = resourceManager.engine;
|
|
@@ -6524,21 +6474,70 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6524
6474
|
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6525
6475
|
texture.setImageSource(engineCore.TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
|
|
6526
6476
|
}
|
|
6527
|
-
|
|
6528
|
-
resourceManager.addContentRestorer(new
|
|
6477
|
+
texture.generateMipmaps();
|
|
6478
|
+
resourceManager.addContentRestorer(new CubeFaceContentRestorer(texture, urls, requestConfig));
|
|
6529
6479
|
resolve(texture);
|
|
6530
|
-
}).catch(
|
|
6531
|
-
reject(e);
|
|
6532
|
-
});
|
|
6480
|
+
}).catch(reject);
|
|
6533
6481
|
});
|
|
6534
6482
|
};
|
|
6535
6483
|
return TextureCubeLoader;
|
|
6536
6484
|
}(engineCore.Loader);
|
|
6537
6485
|
TextureCubeLoader = __decorate([
|
|
6538
6486
|
engineCore.resourceLoader(engineCore.AssetType.TextureCube, [
|
|
6539
|
-
""
|
|
6487
|
+
"texCube",
|
|
6488
|
+
"hdr"
|
|
6540
6489
|
])
|
|
6541
6490
|
], TextureCubeLoader);
|
|
6491
|
+
var HDRContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6492
|
+
_inherits(HDRContentRestorer, ContentRestorer);
|
|
6493
|
+
function HDRContentRestorer(resource, url, requestConfig) {
|
|
6494
|
+
var _this;
|
|
6495
|
+
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
6496
|
+
return _this;
|
|
6497
|
+
}
|
|
6498
|
+
var _proto = HDRContentRestorer.prototype;
|
|
6499
|
+
_proto.restoreContent = function restoreContent() {
|
|
6500
|
+
var _this = this;
|
|
6501
|
+
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
6502
|
+
var resource = _this.resource;
|
|
6503
|
+
resource.engine.resourceManager// @ts-ignore
|
|
6504
|
+
._request(_this.url, _this.requestConfig).then(function(buffer) {
|
|
6505
|
+
var bufferArray = new Uint8Array(buffer);
|
|
6506
|
+
HDRDecoder.decodeFaces(bufferArray, HDRDecoder.parseHeader(bufferArray), function(faceIndex, data) {
|
|
6507
|
+
resource.setPixelBuffer(engineCore.TextureCubeFace.PositiveX + faceIndex, data, 0);
|
|
6508
|
+
});
|
|
6509
|
+
resource.generateMipmaps();
|
|
6510
|
+
resolve(resource);
|
|
6511
|
+
}).catch(reject);
|
|
6512
|
+
});
|
|
6513
|
+
};
|
|
6514
|
+
return HDRContentRestorer;
|
|
6515
|
+
}(engineCore.ContentRestorer);
|
|
6516
|
+
var CubeFaceContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6517
|
+
_inherits(CubeFaceContentRestorer, ContentRestorer);
|
|
6518
|
+
function CubeFaceContentRestorer(resource, urls, requestConfig) {
|
|
6519
|
+
var _this;
|
|
6520
|
+
_this = ContentRestorer.call(this, resource) || this, _this.urls = urls, _this.requestConfig = requestConfig;
|
|
6521
|
+
return _this;
|
|
6522
|
+
}
|
|
6523
|
+
var _proto = CubeFaceContentRestorer.prototype;
|
|
6524
|
+
_proto.restoreContent = function restoreContent() {
|
|
6525
|
+
var _this = this;
|
|
6526
|
+
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
6527
|
+
Promise.all(_this.urls.map(function(url) {
|
|
6528
|
+
return engineCore.request(url, _this.requestConfig);
|
|
6529
|
+
})).then(function(images) {
|
|
6530
|
+
var resource = _this.resource;
|
|
6531
|
+
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6532
|
+
resource.setImageSource(engineCore.TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
|
|
6533
|
+
}
|
|
6534
|
+
resource.generateMipmaps();
|
|
6535
|
+
resolve(resource);
|
|
6536
|
+
}).catch(reject);
|
|
6537
|
+
});
|
|
6538
|
+
};
|
|
6539
|
+
return CubeFaceContentRestorer;
|
|
6540
|
+
}(engineCore.ContentRestorer);
|
|
6542
6541
|
|
|
6543
6542
|
var AudioLoader = /*#__PURE__*/ function(Loader) {
|
|
6544
6543
|
_inherits(AudioLoader, Loader);
|
|
@@ -6688,7 +6687,7 @@ var PhysicsMaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6688
6687
|
}(engineCore.Loader);
|
|
6689
6688
|
PhysicsMaterialLoader = __decorate([
|
|
6690
6689
|
engineCore.resourceLoader(engineCore.AssetType.PhysicsMaterial, [
|
|
6691
|
-
"
|
|
6690
|
+
"physMat"
|
|
6692
6691
|
])
|
|
6693
6692
|
], PhysicsMaterialLoader);
|
|
6694
6693
|
|
|
@@ -6723,7 +6722,6 @@ var SceneLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6723
6722
|
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
6724
6723
|
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
6725
6724
|
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
6726
|
-
scene.ambientLight.specularTextureDecodeRGBM = true;
|
|
6727
6725
|
if (useCustomAmbient && ambient.customAmbientLight) {
|
|
6728
6726
|
promises.push(// @ts-ignore
|
|
6729
6727
|
resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
|