@galacean/engine-loader 2.0.0-alpha.1 → 2.0.0-alpha.10
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 +545 -521
- package/dist/main.js.map +1 -1
- package/dist/module.js +546 -523
- package/dist/module.js.map +1 -1
- package/package.json +4 -4
- package/types/HDRDecoder.d.ts +22 -0
- package/types/gltf/extensions/GLTFExtensionSchema.d.ts +1 -1
- package/types/index.d.ts +2 -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/module.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Utils, AssetPromise, AnimationClip, AnimationEvent, Loader, AnimationStringCurve, Keyframe, AnimationBoolCurve, AnimationRefCurve, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, ModelMesh, BlendShape, Entity, Transform, Texture2D, ReferResource,
|
|
1
|
+
import { Utils, AssetPromise, AnimationClip, AnimationEvent, Loader, AnimationStringCurve, Keyframe, AnimationBoolCurve, AnimationRefCurve, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, ModelMesh, BlendShape, Entity, Transform, Texture2D, ReferResource, DiffuseMode, BackgroundMode, resourceLoader, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateTransition, BufferAsset, AmbientLight, TextureCube, TextureFormat, TextureFilterMode, TextureCubeFace, ContentRestorer, Font, SystemInfo, Animator, Logger, IndexFormat, VertexElementFormat, GLCapabilityType, request, InterpolationType, SkinnedMeshRenderer, PBRMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Camera, MeshRenderer, Skin, TextureWrapMode as TextureWrapMode$1, TextureUtils, AnimatorStateMachine, JSONAsset, Shader, Material, PrimitiveMesh, SpriteAtlas, Sprite, TextAsset, AudioClip, AudioManager, ShaderFactory, ShaderLib, PhysicsMaterial, Scene, DirectLight, PointLight, SpotLight, UnlitMaterial } from '@galacean/engine-core';
|
|
2
2
|
import { Quaternion, Vector4, Color, Vector3, Vector2, SphericalHarmonics3, MathUtil, BoundingBox, Matrix, Rect } from '@galacean/engine-math';
|
|
3
3
|
import { GLCompressedTextureInternalFormat } from '@galacean/engine-rhi-webgl';
|
|
4
4
|
|
|
@@ -248,7 +248,9 @@ var decoderMap = {};
|
|
|
248
248
|
};
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
-
|
|
251
|
+
/**
|
|
252
|
+
* Binary format: [MAGIC(4B)] [totalLength(4B)] [version(1B)] [typeLen(2B)] [type] [nameLen(2B)] [name] [data...]
|
|
253
|
+
*/ var FileHeader = /*#__PURE__*/ function() {
|
|
252
254
|
function FileHeader() {
|
|
253
255
|
this.totalLength = 0;
|
|
254
256
|
this.version = 0;
|
|
@@ -256,14 +258,23 @@ var FileHeader = /*#__PURE__*/ function() {
|
|
|
256
258
|
this.name = "";
|
|
257
259
|
this.headerLength = 0;
|
|
258
260
|
}
|
|
261
|
+
FileHeader.checkMagic = function checkMagic(arrayBuffer) {
|
|
262
|
+
if (arrayBuffer.byteLength < 4) return false;
|
|
263
|
+
var view = new DataView(arrayBuffer);
|
|
264
|
+
return view.getUint32(0, true) === FileHeader.MAGIC;
|
|
265
|
+
};
|
|
259
266
|
FileHeader.decode = function decode(arrayBuffer) {
|
|
260
267
|
var dataView = new DataView(arrayBuffer);
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
var
|
|
265
|
-
var
|
|
266
|
-
var
|
|
268
|
+
if (!FileHeader.checkMagic(arrayBuffer)) {
|
|
269
|
+
throw new Error("Invalid Galacean binary file: missing GLCN magic header.");
|
|
270
|
+
}
|
|
271
|
+
var offset = 4;
|
|
272
|
+
var totalLen = dataView.getUint32(offset, true);
|
|
273
|
+
var fileVersion = dataView.getUint8(offset + 4);
|
|
274
|
+
var typeLen = dataView.getUint16(offset + 5, true);
|
|
275
|
+
var typeUint8Array = new Uint8Array(arrayBuffer, offset + 7, typeLen);
|
|
276
|
+
var nameLen = dataView.getUint16(offset + 7 + typeLen, true);
|
|
277
|
+
var nameUint8Array = new Uint8Array(arrayBuffer, offset + 9 + typeLen, nameLen);
|
|
267
278
|
var name = Utils.decodeText(nameUint8Array);
|
|
268
279
|
var type = Utils.decodeText(typeUint8Array);
|
|
269
280
|
var header = new FileHeader();
|
|
@@ -271,7 +282,7 @@ var FileHeader = /*#__PURE__*/ function() {
|
|
|
271
282
|
header.name = name;
|
|
272
283
|
header.type = type;
|
|
273
284
|
header.version = fileVersion;
|
|
274
|
-
header.headerLength = nameUint8Array.byteLength + typeUint8Array.byteLength + 9;
|
|
285
|
+
header.headerLength = offset + nameUint8Array.byteLength + typeUint8Array.byteLength + 9;
|
|
275
286
|
return header;
|
|
276
287
|
};
|
|
277
288
|
_create_class(FileHeader, [
|
|
@@ -284,6 +295,8 @@ var FileHeader = /*#__PURE__*/ function() {
|
|
|
284
295
|
]);
|
|
285
296
|
return FileHeader;
|
|
286
297
|
}();
|
|
298
|
+
FileHeader.MAGIC = 0x4e434c47 // "GLCN" in little-endian
|
|
299
|
+
;
|
|
287
300
|
|
|
288
301
|
var InterpolableValueType = /*#__PURE__*/ function(InterpolableValueType) {
|
|
289
302
|
InterpolableValueType[InterpolableValueType["Float"] = 0] = "Float";
|
|
@@ -690,12 +703,12 @@ var ParserType = /*#__PURE__*/ function(ParserType) {
|
|
|
690
703
|
this.rootIds.length = 0;
|
|
691
704
|
this.strippedIds.length = 0;
|
|
692
705
|
};
|
|
693
|
-
/** @internal */ _proto._addDependentAsset = function _addDependentAsset(
|
|
706
|
+
/** @internal */ _proto._addDependentAsset = function _addDependentAsset(url, promise) {
|
|
694
707
|
var _this = this;
|
|
695
708
|
var tasks = this._tasks;
|
|
696
|
-
if (tasks.has(
|
|
709
|
+
if (tasks.has(url)) return;
|
|
697
710
|
++this._total;
|
|
698
|
-
tasks.add(
|
|
711
|
+
tasks.add(url);
|
|
699
712
|
promise.finally(function() {
|
|
700
713
|
++_this._loaded;
|
|
701
714
|
_this._setTaskCompleteProgress(_this._loaded, _this._total);
|
|
@@ -803,7 +816,7 @@ var ReflectionParser = /*#__PURE__*/ function() {
|
|
|
803
816
|
// reference object
|
|
804
817
|
// @ts-ignore
|
|
805
818
|
return context.resourceManager.getResourceByRef(value).then(function(resource) {
|
|
806
|
-
if (context.type === ParserType.Prefab) {
|
|
819
|
+
if (resource && context.type === ParserType.Prefab) {
|
|
807
820
|
// @ts-ignore
|
|
808
821
|
context.resource._addDependenceAsset(resource);
|
|
809
822
|
}
|
|
@@ -846,18 +859,18 @@ var ReflectionParser = /*#__PURE__*/ function() {
|
|
|
846
859
|
_proto._getEntityByConfig = function _getEntityByConfig(entityConfig) {
|
|
847
860
|
var _this = this;
|
|
848
861
|
// @ts-ignore
|
|
849
|
-
var
|
|
862
|
+
var assetUrl = entityConfig.assetUrl;
|
|
850
863
|
var engine = this._context.engine;
|
|
851
|
-
if (
|
|
864
|
+
if (assetUrl) {
|
|
852
865
|
return engine.resourceManager// @ts-ignore
|
|
853
866
|
.getResourceByRef({
|
|
854
|
-
|
|
867
|
+
url: assetUrl,
|
|
855
868
|
key: entityConfig.key,
|
|
856
869
|
isClone: entityConfig.isClone
|
|
857
870
|
}).then(function(entity) {
|
|
858
871
|
// @ts-ignore
|
|
859
|
-
var resource = engine.resourceManager._objectPool[
|
|
860
|
-
if (_this._context.type === ParserType.Prefab) {
|
|
872
|
+
var resource = engine.resourceManager._objectPool[assetUrl];
|
|
873
|
+
if (resource && _this._context.type === ParserType.Prefab) {
|
|
861
874
|
// @ts-ignore
|
|
862
875
|
_this._context.resource._addDependenceAsset(resource);
|
|
863
876
|
}
|
|
@@ -880,7 +893,7 @@ var ReflectionParser = /*#__PURE__*/ function() {
|
|
|
880
893
|
return value["classType"] !== undefined;
|
|
881
894
|
};
|
|
882
895
|
ReflectionParser._isAssetRef = function _isAssetRef(value) {
|
|
883
|
-
return value["
|
|
896
|
+
return value["url"] !== undefined;
|
|
884
897
|
};
|
|
885
898
|
ReflectionParser._isEntityRef = function _isEntityRef(value) {
|
|
886
899
|
return value["entityId"] !== undefined;
|
|
@@ -899,7 +912,7 @@ var Texture2DDecoder = /*#__PURE__*/ function() {
|
|
|
899
912
|
function Texture2DDecoder() {}
|
|
900
913
|
Texture2DDecoder.decode = function decode(engine, bufferReader, restoredTexture) {
|
|
901
914
|
return new AssetPromise(function(resolve, reject) {
|
|
902
|
-
var
|
|
915
|
+
var url = bufferReader.nextStr();
|
|
903
916
|
var mipmap = !!bufferReader.nextUint8();
|
|
904
917
|
var filterMode = bufferReader.nextUint8();
|
|
905
918
|
var anisoLevel = bufferReader.nextUint8();
|
|
@@ -928,7 +941,7 @@ var Texture2DDecoder = /*#__PURE__*/ function() {
|
|
|
928
941
|
}
|
|
929
942
|
}
|
|
930
943
|
// @ts-ignore
|
|
931
|
-
engine.resourceManager._objectPool[
|
|
944
|
+
engine.resourceManager._objectPool[url] = texture2D;
|
|
932
945
|
resolve(texture2D);
|
|
933
946
|
} else {
|
|
934
947
|
var blob = new window.Blob([
|
|
@@ -1232,7 +1245,7 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1232
1245
|
_proto._getEntityByConfig = function _getEntityByConfig(entityConfig, engine) {
|
|
1233
1246
|
var _this = this;
|
|
1234
1247
|
var entityPromise;
|
|
1235
|
-
if (entityConfig.
|
|
1248
|
+
if (entityConfig.assetUrl) {
|
|
1236
1249
|
entityPromise = this._parsePrefab(entityConfig, engine);
|
|
1237
1250
|
} else if (entityConfig.strippedId) {
|
|
1238
1251
|
entityPromise = this._parseStrippedEntity(entityConfig);
|
|
@@ -1252,10 +1265,10 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1252
1265
|
};
|
|
1253
1266
|
_proto._parsePrefab = function _parsePrefab(entityConfig, engine) {
|
|
1254
1267
|
var _this = this;
|
|
1255
|
-
var
|
|
1268
|
+
var assetUrl = entityConfig.assetUrl;
|
|
1256
1269
|
return engine.resourceManager// @ts-ignore
|
|
1257
1270
|
.getResourceByRef({
|
|
1258
|
-
|
|
1271
|
+
url: assetUrl
|
|
1259
1272
|
}).then(function(prefabResource) {
|
|
1260
1273
|
var entity = _instanceof(prefabResource, PrefabResource) ? prefabResource.instantiate() : prefabResource.instantiateSceneRoot();
|
|
1261
1274
|
var instanceContext = new ParserContext(engine, ParserType.Prefab, null);
|
|
@@ -1306,7 +1319,7 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1306
1319
|
var componentConfigMap = context.componentConfigMap;
|
|
1307
1320
|
for(var i = 0, n = components.length; i < n; i++){
|
|
1308
1321
|
var componentConfig = components[i];
|
|
1309
|
-
var key = !componentConfig.
|
|
1322
|
+
var key = !componentConfig.url ? componentConfig.class : componentConfig.url;
|
|
1310
1323
|
var componentId = componentConfig.id;
|
|
1311
1324
|
var component = entity.addComponent(Loader.getClass(key));
|
|
1312
1325
|
componentMap.set(componentId, component);
|
|
@@ -1354,53 +1367,6 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1354
1367
|
return HierarchyParser;
|
|
1355
1368
|
}();
|
|
1356
1369
|
|
|
1357
|
-
var EditorTextureLoader = /*#__PURE__*/ function(Loader) {
|
|
1358
|
-
_inherits(EditorTextureLoader, Loader);
|
|
1359
|
-
function EditorTextureLoader() {
|
|
1360
|
-
return Loader.apply(this, arguments) || this;
|
|
1361
|
-
}
|
|
1362
|
-
var _proto = EditorTextureLoader.prototype;
|
|
1363
|
-
_proto.load = function load(item, resourceManager) {
|
|
1364
|
-
var requestConfig = _extends({}, item, {
|
|
1365
|
-
type: "arraybuffer"
|
|
1366
|
-
});
|
|
1367
|
-
var url = item.url;
|
|
1368
|
-
return new AssetPromise(function(resolve, reject) {
|
|
1369
|
-
resourceManager// @ts-ignore
|
|
1370
|
-
._request(url, requestConfig).then(function(data) {
|
|
1371
|
-
decode(data, resourceManager.engine).then(function(texture) {
|
|
1372
|
-
resourceManager.addContentRestorer(new EditorTexture2DContentRestorer(texture, url, requestConfig));
|
|
1373
|
-
resolve(texture);
|
|
1374
|
-
});
|
|
1375
|
-
}).catch(reject);
|
|
1376
|
-
});
|
|
1377
|
-
};
|
|
1378
|
-
return EditorTextureLoader;
|
|
1379
|
-
}(Loader);
|
|
1380
|
-
EditorTextureLoader = __decorate([
|
|
1381
|
-
resourceLoader("EditorTexture2D", [
|
|
1382
|
-
"prefab"
|
|
1383
|
-
], true)
|
|
1384
|
-
], EditorTextureLoader);
|
|
1385
|
-
var EditorTexture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
1386
|
-
_inherits(EditorTexture2DContentRestorer, ContentRestorer);
|
|
1387
|
-
function EditorTexture2DContentRestorer(resource, url, requestConfig) {
|
|
1388
|
-
var _this;
|
|
1389
|
-
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
1390
|
-
return _this;
|
|
1391
|
-
}
|
|
1392
|
-
var _proto = EditorTexture2DContentRestorer.prototype;
|
|
1393
|
-
_proto.restoreContent = function restoreContent() {
|
|
1394
|
-
var texture = this.resource;
|
|
1395
|
-
var engine = texture.engine;
|
|
1396
|
-
return engine.resourceManager// @ts-ignore
|
|
1397
|
-
._request(this.url, this.requestConfig).then(function(data) {
|
|
1398
|
-
return decode(data, engine, texture);
|
|
1399
|
-
});
|
|
1400
|
-
};
|
|
1401
|
-
return EditorTexture2DContentRestorer;
|
|
1402
|
-
}(ContentRestorer);
|
|
1403
|
-
|
|
1404
1370
|
var MaterialLoaderType = /*#__PURE__*/ function(MaterialLoaderType) {
|
|
1405
1371
|
MaterialLoaderType["Vector2"] = "Vector2";
|
|
1406
1372
|
MaterialLoaderType["Vector3"] = "Vector3";
|
|
@@ -1441,11 +1407,11 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
|
|
|
1441
1407
|
var customAmbientLight = ambient.customAmbientLight, ambientLight = ambient.ambientLight;
|
|
1442
1408
|
if (useCustomAmbient && customAmbientLight) {
|
|
1443
1409
|
// @ts-ignore
|
|
1444
|
-
context._addDependentAsset(customAmbientLight.
|
|
1410
|
+
context._addDependentAsset(customAmbientLight.url, resourceManager.getResourceByRef(customAmbientLight));
|
|
1445
1411
|
}
|
|
1446
1412
|
if (ambientLight && (!useCustomAmbient || useSH)) {
|
|
1447
1413
|
// @ts-ignore
|
|
1448
|
-
context._addDependentAsset(ambientLight.
|
|
1414
|
+
context._addDependentAsset(ambientLight.url, resourceManager.getResourceByRef(ambientLight));
|
|
1449
1415
|
}
|
|
1450
1416
|
}
|
|
1451
1417
|
var background = scene.background;
|
|
@@ -1453,14 +1419,14 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
|
|
|
1453
1419
|
if (backgroundMode === BackgroundMode.Texture) {
|
|
1454
1420
|
var texture = background.texture;
|
|
1455
1421
|
// @ts-ignore
|
|
1456
|
-
texture && context._addDependentAsset(texture.
|
|
1422
|
+
texture && context._addDependentAsset(texture.url, resourceManager.getResourceByRef(texture));
|
|
1457
1423
|
} else if (backgroundMode === BackgroundMode.Sky) {
|
|
1458
1424
|
var skyMesh = background.skyMesh, skyMaterial = background.skyMaterial;
|
|
1459
1425
|
if (skyMesh && skyMaterial) {
|
|
1460
1426
|
// @ts-ignore
|
|
1461
|
-
context._addDependentAsset(skyMesh.
|
|
1427
|
+
context._addDependentAsset(skyMesh.url, resourceManager.getResourceByRef(skyMesh));
|
|
1462
1428
|
// @ts-ignore
|
|
1463
|
-
context._addDependentAsset(skyMaterial.
|
|
1429
|
+
context._addDependentAsset(skyMaterial.url, resourceManager.getResourceByRef(skyMaterial));
|
|
1464
1430
|
}
|
|
1465
1431
|
}
|
|
1466
1432
|
};
|
|
@@ -1476,12 +1442,12 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
|
|
|
1476
1442
|
var entities = file.entities;
|
|
1477
1443
|
for(var i = 0, n = entities.length; i < n; i++){
|
|
1478
1444
|
var entity = entities[i];
|
|
1479
|
-
if (!!entity.
|
|
1445
|
+
if (!!entity.assetUrl) {
|
|
1480
1446
|
var context = this.context;
|
|
1481
|
-
var
|
|
1447
|
+
var url = entity.assetUrl, key = entity.key;
|
|
1482
1448
|
// @ts-ignore
|
|
1483
|
-
context._addDependentAsset(
|
|
1484
|
-
|
|
1449
|
+
context._addDependentAsset(url, context.resourceManager.getResourceByRef({
|
|
1450
|
+
url: url,
|
|
1485
1451
|
key: key
|
|
1486
1452
|
}));
|
|
1487
1453
|
} else if (entity.strippedId) {
|
|
@@ -1506,7 +1472,7 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
|
|
|
1506
1472
|
if (ReflectionParser._isAssetRef(value)) {
|
|
1507
1473
|
var context = this.context;
|
|
1508
1474
|
// @ts-ignore
|
|
1509
|
-
context._addDependentAsset(value.
|
|
1475
|
+
context._addDependentAsset(value.url, context.resourceManager.getResourceByRef(value));
|
|
1510
1476
|
} else {
|
|
1511
1477
|
for(var key in value){
|
|
1512
1478
|
this._searchDependentAssets(value[key]);
|
|
@@ -1570,7 +1536,7 @@ var AnimationClipLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1570
1536
|
};
|
|
1571
1537
|
_proto._parseKeyframeValue = function _parseKeyframeValue(keyframe, resourceManager) {
|
|
1572
1538
|
var value = keyframe.value;
|
|
1573
|
-
if ((typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && (value == null ? void 0 : value.
|
|
1539
|
+
if ((typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && (value == null ? void 0 : value.url)) {
|
|
1574
1540
|
return new Promise(function(resolve) {
|
|
1575
1541
|
resourceManager// @ts-ignore
|
|
1576
1542
|
.getResourceByRef(value).then(function(asset) {
|
|
@@ -1586,7 +1552,7 @@ var AnimationClipLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1586
1552
|
}(Loader);
|
|
1587
1553
|
AnimationClipLoader = __decorate([
|
|
1588
1554
|
resourceLoader(AssetType.AnimationClip, [
|
|
1589
|
-
"
|
|
1555
|
+
"anim"
|
|
1590
1556
|
])
|
|
1591
1557
|
], AnimationClipLoader);
|
|
1592
1558
|
|
|
@@ -1698,13 +1664,11 @@ var AnimatorControllerLoader = /*#__PURE__*/ function(Loader1) {
|
|
|
1698
1664
|
}(Loader);
|
|
1699
1665
|
AnimatorControllerLoader = __decorate([
|
|
1700
1666
|
resourceLoader(AssetType.AnimatorController, [
|
|
1701
|
-
"
|
|
1702
|
-
]
|
|
1667
|
+
"animCtrl"
|
|
1668
|
+
])
|
|
1703
1669
|
], AnimatorControllerLoader);
|
|
1704
1670
|
|
|
1705
|
-
|
|
1706
|
-
return /^data:(.+?);base64,/.test(url);
|
|
1707
|
-
}
|
|
1671
|
+
var base64Regex = /^data:(.+?);base64,/;
|
|
1708
1672
|
var BufferLoader = /*#__PURE__*/ function(Loader) {
|
|
1709
1673
|
_inherits(BufferLoader, Loader);
|
|
1710
1674
|
function BufferLoader() {
|
|
@@ -1713,27 +1677,24 @@ var BufferLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1713
1677
|
var _proto = BufferLoader.prototype;
|
|
1714
1678
|
_proto.load = function load(item, resourceManager) {
|
|
1715
1679
|
var url = item.url;
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
return c.charCodeAt(0);
|
|
1721
|
-
});
|
|
1722
|
-
resolve(result.buffer);
|
|
1723
|
-
});
|
|
1724
|
-
}
|
|
1725
|
-
// @ts-ignore
|
|
1726
|
-
return resourceManager._request(url, _extends({}, item, {
|
|
1680
|
+
var base64Match = base64Regex.exec(url);
|
|
1681
|
+
var bufferPromise = base64Match ? Promise.resolve(Uint8Array.from(atob(url.slice(13 + base64Match[1].length)), function(c) {
|
|
1682
|
+
return c.charCodeAt(0);
|
|
1683
|
+
}).buffer) : resourceManager._request(url, _extends({}, item, {
|
|
1727
1684
|
type: "arraybuffer"
|
|
1728
1685
|
}));
|
|
1686
|
+
return AssetPromise.resolve(bufferPromise).then(function(buffer) {
|
|
1687
|
+
var asset = new BufferAsset(resourceManager.engine);
|
|
1688
|
+
asset.buffer = buffer;
|
|
1689
|
+
return asset;
|
|
1690
|
+
});
|
|
1729
1691
|
};
|
|
1730
1692
|
return BufferLoader;
|
|
1731
1693
|
}(Loader);
|
|
1732
1694
|
BufferLoader = __decorate([
|
|
1733
1695
|
resourceLoader(AssetType.Buffer, [
|
|
1734
|
-
"bin"
|
|
1735
|
-
|
|
1736
|
-
], false)
|
|
1696
|
+
"bin"
|
|
1697
|
+
])
|
|
1737
1698
|
], BufferLoader);
|
|
1738
1699
|
|
|
1739
1700
|
var EnvLoader = /*#__PURE__*/ function(Loader) {
|
|
@@ -1759,7 +1720,6 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1759
1720
|
sh.copyFromArray(new Float32Array(arraybuffer, 0, 27));
|
|
1760
1721
|
ambientLight.diffuseSphericalHarmonics = sh;
|
|
1761
1722
|
ambientLight.specularTexture = texture;
|
|
1762
|
-
ambientLight.specularTextureDecodeRGBM = true;
|
|
1763
1723
|
resolve(ambientLight);
|
|
1764
1724
|
}).catch(function(e) {
|
|
1765
1725
|
reject(e);
|
|
@@ -1772,7 +1732,7 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1772
1732
|
var _this;
|
|
1773
1733
|
var shByteLength = 27 * 4;
|
|
1774
1734
|
var size = (_this = new Uint16Array(buffer, shByteLength, 1)) == null ? void 0 : _this[0];
|
|
1775
|
-
texture || (texture = new TextureCube(engine, size,
|
|
1735
|
+
texture || (texture = new TextureCube(engine, size, TextureFormat.R16G16B16A16, true, false));
|
|
1776
1736
|
texture.filterMode = TextureFilterMode.Trilinear;
|
|
1777
1737
|
var mipmapCount = texture.mipmapCount;
|
|
1778
1738
|
var offset = shByteLength + 2;
|
|
@@ -1780,8 +1740,8 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1780
1740
|
var mipSize = size >> mipLevel;
|
|
1781
1741
|
for(var face = 0; face < 6; face++){
|
|
1782
1742
|
var dataSize = mipSize * mipSize * 4;
|
|
1783
|
-
var data = new
|
|
1784
|
-
offset += dataSize;
|
|
1743
|
+
var data = new Uint16Array(buffer, offset, dataSize);
|
|
1744
|
+
offset += dataSize * 2;
|
|
1785
1745
|
texture.setPixelBuffer(TextureCubeFace.PositiveX + face, data, mipLevel);
|
|
1786
1746
|
}
|
|
1787
1747
|
}
|
|
@@ -5310,341 +5270,6 @@ PrefabLoader = __decorate([
|
|
|
5310
5270
|
])
|
|
5311
5271
|
], PrefabLoader);
|
|
5312
5272
|
|
|
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 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 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(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 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
|
-
}(Loader);
|
|
5569
|
-
HDRLoader._rightBottomBack = new Vector3(1.0, -1.0, -1.0);
|
|
5570
|
-
HDRLoader._rightBottomFront = new Vector3(1.0, -1.0, 1.0);
|
|
5571
|
-
HDRLoader._rightUpBack = new Vector3(1.0, 1.0, -1.0);
|
|
5572
|
-
HDRLoader._rightUpFront = new Vector3(1.0, 1.0, 1.0);
|
|
5573
|
-
HDRLoader._leftBottomBack = new Vector3(-1.0, -1.0, -1.0);
|
|
5574
|
-
HDRLoader._leftBottomFront = new Vector3(-1.0, -1.0, 1.0);
|
|
5575
|
-
HDRLoader._leftUpBack = new Vector3(-1.0, 1.0, -1.0);
|
|
5576
|
-
HDRLoader._leftUpFront = new 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 Vector3();
|
|
5614
|
-
HDRLoader._temp2Vector3 = new Vector3();
|
|
5615
|
-
HDRLoader._temp3Vector3 = new Vector3();
|
|
5616
|
-
HDRLoader._temp4Vector3 = new Vector3();
|
|
5617
|
-
HDRLoader._temp5Vector3 = new Vector3();
|
|
5618
|
-
HDRLoader = __decorate([
|
|
5619
|
-
resourceLoader(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 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
|
-
}(ContentRestorer);
|
|
5647
|
-
|
|
5648
5273
|
var JSONLoader = /*#__PURE__*/ function(Loader) {
|
|
5649
5274
|
_inherits(JSONLoader, Loader);
|
|
5650
5275
|
function JSONLoader() {
|
|
@@ -5655,14 +5280,18 @@ var JSONLoader = /*#__PURE__*/ function(Loader) {
|
|
|
5655
5280
|
// @ts-ignore
|
|
5656
5281
|
return resourceManager._request(item.url, _extends({}, item, {
|
|
5657
5282
|
type: "json"
|
|
5658
|
-
}))
|
|
5283
|
+
})).then(function(data) {
|
|
5284
|
+
var asset = new JSONAsset(resourceManager.engine);
|
|
5285
|
+
asset.data = data;
|
|
5286
|
+
return asset;
|
|
5287
|
+
});
|
|
5659
5288
|
};
|
|
5660
5289
|
return JSONLoader;
|
|
5661
5290
|
}(Loader);
|
|
5662
5291
|
JSONLoader = __decorate([
|
|
5663
5292
|
resourceLoader(AssetType.JSON, [
|
|
5664
5293
|
"json"
|
|
5665
|
-
]
|
|
5294
|
+
])
|
|
5666
5295
|
], JSONLoader);
|
|
5667
5296
|
|
|
5668
5297
|
var HEADER_LEN = 12 + 13 * 4; // identifier + header elements (not including key value meta-data pairs)
|
|
@@ -6043,7 +5672,7 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6043
5672
|
}(Loader);
|
|
6044
5673
|
MaterialLoader = __decorate([
|
|
6045
5674
|
resourceLoader(AssetType.Material, [
|
|
6046
|
-
"
|
|
5675
|
+
"mat"
|
|
6047
5676
|
])
|
|
6048
5677
|
], MaterialLoader);
|
|
6049
5678
|
|
|
@@ -6166,7 +5795,7 @@ var ProjectLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6166
5795
|
}(Loader);
|
|
6167
5796
|
ProjectLoader = __decorate([
|
|
6168
5797
|
resourceLoader(AssetType.Project, [
|
|
6169
|
-
"
|
|
5798
|
+
"project"
|
|
6170
5799
|
], false)
|
|
6171
5800
|
], ProjectLoader);
|
|
6172
5801
|
|
|
@@ -6363,28 +5992,44 @@ SpriteLoader = __decorate([
|
|
|
6363
5992
|
])
|
|
6364
5993
|
], SpriteLoader);
|
|
6365
5994
|
|
|
6366
|
-
|
|
6367
|
-
|
|
6368
|
-
|
|
6369
|
-
|
|
6370
|
-
function Texture2DContentRestorer(resource, url, requestConfig) {
|
|
6371
|
-
var _this;
|
|
6372
|
-
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
6373
|
-
return _this;
|
|
5995
|
+
var TextLoader = /*#__PURE__*/ function(Loader) {
|
|
5996
|
+
_inherits(TextLoader, Loader);
|
|
5997
|
+
function TextLoader() {
|
|
5998
|
+
return Loader.apply(this, arguments) || this;
|
|
6374
5999
|
}
|
|
6375
|
-
var _proto =
|
|
6376
|
-
_proto.
|
|
6377
|
-
|
|
6378
|
-
return
|
|
6379
|
-
|
|
6380
|
-
|
|
6381
|
-
|
|
6382
|
-
|
|
6000
|
+
var _proto = TextLoader.prototype;
|
|
6001
|
+
_proto.load = function load(item, resourceManager) {
|
|
6002
|
+
// @ts-ignore
|
|
6003
|
+
return resourceManager._request(item.url, _extends({}, item, {
|
|
6004
|
+
type: "text"
|
|
6005
|
+
})).then(function(text) {
|
|
6006
|
+
var asset = new TextAsset(resourceManager.engine);
|
|
6007
|
+
asset.text = text;
|
|
6008
|
+
return asset;
|
|
6383
6009
|
});
|
|
6384
6010
|
};
|
|
6385
|
-
return
|
|
6386
|
-
}(
|
|
6011
|
+
return TextLoader;
|
|
6012
|
+
}(Loader);
|
|
6013
|
+
TextLoader = __decorate([
|
|
6014
|
+
resourceLoader(AssetType.Text, [
|
|
6015
|
+
"txt"
|
|
6016
|
+
])
|
|
6017
|
+
], TextLoader);
|
|
6387
6018
|
|
|
6019
|
+
function loadImageFromBuffer(buffer) {
|
|
6020
|
+
return new AssetPromise(function(resolve, reject) {
|
|
6021
|
+
var blob = new Blob([
|
|
6022
|
+
buffer
|
|
6023
|
+
]);
|
|
6024
|
+
var img = new Image();
|
|
6025
|
+
img.onload = function() {
|
|
6026
|
+
URL.revokeObjectURL(img.src);
|
|
6027
|
+
resolve(img);
|
|
6028
|
+
};
|
|
6029
|
+
img.onerror = reject;
|
|
6030
|
+
img.src = URL.createObjectURL(blob);
|
|
6031
|
+
});
|
|
6032
|
+
}
|
|
6388
6033
|
var Texture2DLoader = /*#__PURE__*/ function(Loader) {
|
|
6389
6034
|
_inherits(Texture2DLoader, Loader);
|
|
6390
6035
|
function Texture2DLoader() {
|
|
@@ -6392,36 +6037,48 @@ var Texture2DLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6392
6037
|
}
|
|
6393
6038
|
var _proto = Texture2DLoader.prototype;
|
|
6394
6039
|
_proto.load = function load(item, resourceManager) {
|
|
6040
|
+
var _this = this;
|
|
6041
|
+
var url = item.url;
|
|
6042
|
+
var requestConfig = _extends({}, item, {
|
|
6043
|
+
type: "arraybuffer"
|
|
6044
|
+
});
|
|
6395
6045
|
return new AssetPromise(function(resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) {
|
|
6396
|
-
var url = item.url;
|
|
6397
|
-
var requestConfig = _extends({}, item, {
|
|
6398
|
-
type: "image"
|
|
6399
|
-
});
|
|
6400
6046
|
resourceManager// @ts-ignore
|
|
6401
|
-
._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(
|
|
6402
|
-
|
|
6403
|
-
|
|
6404
|
-
|
|
6405
|
-
|
|
6406
|
-
|
|
6407
|
-
|
|
6408
|
-
|
|
6409
|
-
|
|
6410
|
-
|
|
6411
|
-
|
|
6412
|
-
|
|
6413
|
-
generateMipmap && texture.generateMipmaps();
|
|
6414
|
-
if (url.indexOf("data:") !== 0) {
|
|
6415
|
-
var index = url.lastIndexOf("/");
|
|
6416
|
-
texture.name = url.substring(index + 1);
|
|
6047
|
+
._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(buffer) {
|
|
6048
|
+
if (FileHeader.checkMagic(buffer)) {
|
|
6049
|
+
decode(buffer, resourceManager.engine).then(function(texture) {
|
|
6050
|
+
resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
|
|
6051
|
+
resolve(texture);
|
|
6052
|
+
}, reject);
|
|
6053
|
+
} else {
|
|
6054
|
+
loadImageFromBuffer(buffer).then(function(img) {
|
|
6055
|
+
var texture = _this._createTexture(img, item, resourceManager);
|
|
6056
|
+
resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
|
|
6057
|
+
resolve(texture);
|
|
6058
|
+
}, reject);
|
|
6417
6059
|
}
|
|
6418
|
-
|
|
6419
|
-
resolve(texture);
|
|
6420
|
-
}).catch(function(e) {
|
|
6421
|
-
reject(e);
|
|
6422
|
-
});
|
|
6060
|
+
}).catch(reject);
|
|
6423
6061
|
});
|
|
6424
6062
|
};
|
|
6063
|
+
_proto._createTexture = function _createTexture(img, item, resourceManager) {
|
|
6064
|
+
var _item_params;
|
|
6065
|
+
var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_format = _ref.format, format = _ref_format === void 0 ? TextureFormat.R8G8B8A8 : _ref_format, anisoLevel = _ref.anisoLevel, wrapModeU = _ref.wrapModeU, wrapModeV = _ref.wrapModeV, filterMode = _ref.filterMode, _ref_isSRGBColorSpace = _ref.isSRGBColorSpace, isSRGBColorSpace = _ref_isSRGBColorSpace === void 0 ? true : _ref_isSRGBColorSpace, _ref_mipmap = _ref.mipmap, mipmap = _ref_mipmap === void 0 ? true : _ref_mipmap;
|
|
6066
|
+
var width = img.width, height = img.height;
|
|
6067
|
+
var engine = resourceManager.engine;
|
|
6068
|
+
var generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(engine, width, height, format, mipmap, isSRGBColorSpace);
|
|
6069
|
+
var texture = new Texture2D(engine, width, height, format, generateMipmap, isSRGBColorSpace);
|
|
6070
|
+
texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
|
|
6071
|
+
texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
|
|
6072
|
+
texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
|
|
6073
|
+
texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
|
|
6074
|
+
texture.setImageSource(img);
|
|
6075
|
+
generateMipmap && texture.generateMipmaps();
|
|
6076
|
+
var url = item.url;
|
|
6077
|
+
if (url.indexOf("data:") !== 0) {
|
|
6078
|
+
texture.name = url.substring(url.lastIndexOf("/") + 1);
|
|
6079
|
+
}
|
|
6080
|
+
return texture;
|
|
6081
|
+
};
|
|
6425
6082
|
return Texture2DLoader;
|
|
6426
6083
|
}(Loader);
|
|
6427
6084
|
Texture2DLoader = __decorate([
|
|
@@ -6429,40 +6086,319 @@ Texture2DLoader = __decorate([
|
|
|
6429
6086
|
"png",
|
|
6430
6087
|
"jpg",
|
|
6431
6088
|
"webp",
|
|
6432
|
-
"jpeg"
|
|
6089
|
+
"jpeg",
|
|
6090
|
+
"tex"
|
|
6433
6091
|
])
|
|
6434
6092
|
], Texture2DLoader);
|
|
6435
|
-
|
|
6436
|
-
|
|
6437
|
-
|
|
6438
|
-
*/ var TextureCubeContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6439
|
-
_inherits(TextureCubeContentRestorer, ContentRestorer);
|
|
6440
|
-
function TextureCubeContentRestorer(resource, urls, requestConfig) {
|
|
6093
|
+
var Texture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6094
|
+
_inherits(Texture2DContentRestorer, ContentRestorer);
|
|
6095
|
+
function Texture2DContentRestorer(resource, url, requestConfig) {
|
|
6441
6096
|
var _this;
|
|
6442
|
-
_this = ContentRestorer.call(this, resource) || this, _this.
|
|
6097
|
+
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
6443
6098
|
return _this;
|
|
6444
6099
|
}
|
|
6445
|
-
var _proto =
|
|
6100
|
+
var _proto = Texture2DContentRestorer.prototype;
|
|
6446
6101
|
_proto.restoreContent = function restoreContent() {
|
|
6447
|
-
var
|
|
6448
|
-
|
|
6449
|
-
|
|
6450
|
-
|
|
6451
|
-
|
|
6452
|
-
|
|
6453
|
-
|
|
6454
|
-
|
|
6455
|
-
|
|
6456
|
-
|
|
6457
|
-
|
|
6458
|
-
|
|
6459
|
-
|
|
6460
|
-
});
|
|
6102
|
+
var texture = this.resource;
|
|
6103
|
+
var engine = texture.engine;
|
|
6104
|
+
return engine.resourceManager// @ts-ignore
|
|
6105
|
+
._request(this.url, this.requestConfig).then(function(buffer) {
|
|
6106
|
+
if (FileHeader.checkMagic(buffer)) {
|
|
6107
|
+
return decode(buffer, engine, texture);
|
|
6108
|
+
} else {
|
|
6109
|
+
return loadImageFromBuffer(buffer).then(function(img) {
|
|
6110
|
+
texture.setImageSource(img);
|
|
6111
|
+
texture.generateMipmaps();
|
|
6112
|
+
return texture;
|
|
6113
|
+
});
|
|
6114
|
+
}
|
|
6461
6115
|
});
|
|
6462
6116
|
};
|
|
6463
|
-
return
|
|
6117
|
+
return Texture2DContentRestorer;
|
|
6464
6118
|
}(ContentRestorer);
|
|
6465
6119
|
|
|
6120
|
+
/**
|
|
6121
|
+
* HDR panorama to cubemap decoder.
|
|
6122
|
+
*/ var HDRDecoder = /*#__PURE__*/ function() {
|
|
6123
|
+
function HDRDecoder() {}
|
|
6124
|
+
HDRDecoder.parseHeader = function parseHeader(uint8array) {
|
|
6125
|
+
var line = this._readStringLine(uint8array, 0);
|
|
6126
|
+
if (line[0] !== "#" || line[1] !== "?") {
|
|
6127
|
+
throw "HDRDecoder: invalid file header";
|
|
6128
|
+
}
|
|
6129
|
+
var endOfHeader = false;
|
|
6130
|
+
var findFormat = false;
|
|
6131
|
+
var lineIndex = 0;
|
|
6132
|
+
do {
|
|
6133
|
+
lineIndex += line.length + 1;
|
|
6134
|
+
line = this._readStringLine(uint8array, lineIndex);
|
|
6135
|
+
if (line === "FORMAT=32-bit_rle_rgbe") findFormat = true;
|
|
6136
|
+
else if (line.length === 0) endOfHeader = true;
|
|
6137
|
+
}while (!endOfHeader);
|
|
6138
|
+
if (!findFormat) {
|
|
6139
|
+
throw "HDRDecoder: unsupported format, expected 32-bit_rle_rgbe";
|
|
6140
|
+
}
|
|
6141
|
+
lineIndex += line.length + 1;
|
|
6142
|
+
line = this._readStringLine(uint8array, lineIndex);
|
|
6143
|
+
var match = /^\-Y (.*) \+X (.*)$/g.exec(line);
|
|
6144
|
+
if (!match || match.length < 3) {
|
|
6145
|
+
throw "HDRDecoder: missing image size, only -Y +X layout is supported";
|
|
6146
|
+
}
|
|
6147
|
+
var width = parseInt(match[2]);
|
|
6148
|
+
var height = parseInt(match[1]);
|
|
6149
|
+
if (width < 8 || width > 0x7fff) {
|
|
6150
|
+
throw "HDRDecoder: unsupported image width, must be between 8 and 32767";
|
|
6151
|
+
}
|
|
6152
|
+
return {
|
|
6153
|
+
height: height,
|
|
6154
|
+
width: width,
|
|
6155
|
+
dataPosition: lineIndex + line.length + 1
|
|
6156
|
+
};
|
|
6157
|
+
};
|
|
6158
|
+
HDRDecoder.decodeFaces = function decodeFaces(bufferArray, header, onFace) {
|
|
6159
|
+
var width = header.width, height = header.height, dataPosition = header.dataPosition;
|
|
6160
|
+
var cubeSize = height >> 1;
|
|
6161
|
+
var pixels = HDRDecoder._readPixels(bufferArray.subarray(dataPosition), width, height);
|
|
6162
|
+
var faces = HDRDecoder._faces;
|
|
6163
|
+
var faceBuffer = new Uint16Array(cubeSize * cubeSize * 4);
|
|
6164
|
+
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6165
|
+
HDRDecoder._createCubemapData(cubeSize, faces[faceIndex], pixels, width, height, faceBuffer);
|
|
6166
|
+
onFace(faceIndex, faceBuffer);
|
|
6167
|
+
}
|
|
6168
|
+
};
|
|
6169
|
+
HDRDecoder._generateFloat2HalfTables = function _generateFloat2HalfTables() {
|
|
6170
|
+
var baseTable = new Uint32Array(512);
|
|
6171
|
+
var shiftTable = new Uint32Array(512);
|
|
6172
|
+
for(var i = 0; i < 256; ++i){
|
|
6173
|
+
var e = i - 127;
|
|
6174
|
+
if (e < -27) {
|
|
6175
|
+
baseTable[i] = 0x0000;
|
|
6176
|
+
baseTable[i | 0x100] = 0x8000;
|
|
6177
|
+
shiftTable[i] = 24;
|
|
6178
|
+
shiftTable[i | 0x100] = 24;
|
|
6179
|
+
} else if (e < -14) {
|
|
6180
|
+
baseTable[i] = 0x0400 >> -e - 14;
|
|
6181
|
+
baseTable[i | 0x100] = 0x0400 >> -e - 14 | 0x8000;
|
|
6182
|
+
shiftTable[i] = -e - 1;
|
|
6183
|
+
shiftTable[i | 0x100] = -e - 1;
|
|
6184
|
+
} else if (e <= 15) {
|
|
6185
|
+
baseTable[i] = e + 15 << 10;
|
|
6186
|
+
baseTable[i | 0x100] = e + 15 << 10 | 0x8000;
|
|
6187
|
+
shiftTable[i] = 13;
|
|
6188
|
+
shiftTable[i | 0x100] = 13;
|
|
6189
|
+
} else if (e < 128) {
|
|
6190
|
+
baseTable[i] = 0x7c00;
|
|
6191
|
+
baseTable[i | 0x100] = 0xfc00;
|
|
6192
|
+
shiftTable[i] = 24;
|
|
6193
|
+
shiftTable[i | 0x100] = 24;
|
|
6194
|
+
} else {
|
|
6195
|
+
baseTable[i] = 0x7c00;
|
|
6196
|
+
baseTable[i | 0x100] = 0xfc00;
|
|
6197
|
+
shiftTable[i] = 13;
|
|
6198
|
+
shiftTable[i | 0x100] = 13;
|
|
6199
|
+
}
|
|
6200
|
+
}
|
|
6201
|
+
return {
|
|
6202
|
+
baseTable: baseTable,
|
|
6203
|
+
shiftTable: shiftTable
|
|
6204
|
+
};
|
|
6205
|
+
};
|
|
6206
|
+
HDRDecoder._createCubemapData = function _createCubemapData(texSize, face, pixels, inputWidth, inputHeight, facePixels) {
|
|
6207
|
+
var invSize = 1 / texSize;
|
|
6208
|
+
var rotDX1X = (face[3] - face[0]) * invSize;
|
|
6209
|
+
var rotDX1Y = (face[4] - face[1]) * invSize;
|
|
6210
|
+
var rotDX1Z = (face[5] - face[2]) * invSize;
|
|
6211
|
+
var rotDX2X = (face[9] - face[6]) * invSize;
|
|
6212
|
+
var rotDX2Y = (face[10] - face[7]) * invSize;
|
|
6213
|
+
var rotDX2Z = (face[11] - face[8]) * invSize;
|
|
6214
|
+
var floatView = HDRDecoder._floatView;
|
|
6215
|
+
var uint32View = HDRDecoder._uint32View;
|
|
6216
|
+
var _HDRDecoder__float2HalfTables = HDRDecoder._float2HalfTables, baseTable = _HDRDecoder__float2HalfTables.baseTable, shiftTable = _HDRDecoder__float2HalfTables.shiftTable;
|
|
6217
|
+
var one = HDRDecoder._one;
|
|
6218
|
+
var fy = 0;
|
|
6219
|
+
for(var y = 0; y < texSize; y++){
|
|
6220
|
+
var xv1X = face[0], xv1Y = face[1], xv1Z = face[2];
|
|
6221
|
+
var xv2X = face[6], xv2Y = face[7], xv2Z = face[8];
|
|
6222
|
+
for(var x = 0; x < texSize; x++){
|
|
6223
|
+
var dirX = xv1X + (xv2X - xv1X) * fy;
|
|
6224
|
+
var dirY = xv1Y + (xv2Y - xv1Y) * fy;
|
|
6225
|
+
var dirZ = xv1Z + (xv2Z - xv1Z) * fy;
|
|
6226
|
+
var invLen = 1 / Math.sqrt(dirX * dirX + dirY * dirY + dirZ * dirZ);
|
|
6227
|
+
dirX *= invLen;
|
|
6228
|
+
dirY *= invLen;
|
|
6229
|
+
dirZ *= invLen;
|
|
6230
|
+
var px = Math.round((Math.atan2(dirZ, dirX) / Math.PI * 0.5 + 0.5) * inputWidth);
|
|
6231
|
+
if (px < 0) px = 0;
|
|
6232
|
+
else if (px >= inputWidth) px = inputWidth - 1;
|
|
6233
|
+
var py = Math.round(Math.acos(dirY) / Math.PI * inputHeight);
|
|
6234
|
+
if (py < 0) py = 0;
|
|
6235
|
+
else if (py >= inputHeight) py = inputHeight - 1;
|
|
6236
|
+
var srcIndex = (inputHeight - py - 1) * inputWidth * 4 + px * 4;
|
|
6237
|
+
var scaleFactor = Math.pow(2, pixels[srcIndex + 3] - 128) / 255;
|
|
6238
|
+
var dstIndex = y * texSize * 4 + x * 4;
|
|
6239
|
+
for(var c = 0; c < 3; c++){
|
|
6240
|
+
// Clamp to half-float max (65504) to prevent Infinity in R16G16B16A16
|
|
6241
|
+
floatView[0] = Math.min(pixels[srcIndex + c] * scaleFactor, 65504);
|
|
6242
|
+
var f = uint32View[0];
|
|
6243
|
+
var e = f >> 23 & 0x1ff;
|
|
6244
|
+
facePixels[dstIndex + c] = baseTable[e] + ((f & 0x007fffff) >> shiftTable[e]);
|
|
6245
|
+
}
|
|
6246
|
+
facePixels[dstIndex + 3] = one;
|
|
6247
|
+
xv1X += rotDX1X;
|
|
6248
|
+
xv1Y += rotDX1Y;
|
|
6249
|
+
xv1Z += rotDX1Z;
|
|
6250
|
+
xv2X += rotDX2X;
|
|
6251
|
+
xv2Y += rotDX2Y;
|
|
6252
|
+
xv2Z += rotDX2Z;
|
|
6253
|
+
}
|
|
6254
|
+
fy += invSize;
|
|
6255
|
+
}
|
|
6256
|
+
};
|
|
6257
|
+
HDRDecoder._readStringLine = function _readStringLine(uint8array, startIndex) {
|
|
6258
|
+
var line = "";
|
|
6259
|
+
for(var i = startIndex, n = uint8array.length; i < n; i++){
|
|
6260
|
+
var character = String.fromCharCode(uint8array[i]);
|
|
6261
|
+
if (character === "\n") break;
|
|
6262
|
+
line += character;
|
|
6263
|
+
}
|
|
6264
|
+
return line;
|
|
6265
|
+
};
|
|
6266
|
+
HDRDecoder._readPixels = function _readPixels(buffer, width, height) {
|
|
6267
|
+
var byteLength = buffer.byteLength;
|
|
6268
|
+
var dataRGBA = new Uint8Array(4 * width * height);
|
|
6269
|
+
var offset = 0;
|
|
6270
|
+
var pos = 0;
|
|
6271
|
+
var ptrEnd = 4 * width;
|
|
6272
|
+
var scanLineBuffer = new Uint8Array(ptrEnd);
|
|
6273
|
+
var numScanLines = height;
|
|
6274
|
+
while(numScanLines > 0 && pos < byteLength){
|
|
6275
|
+
var a = buffer[pos++];
|
|
6276
|
+
var b = buffer[pos++];
|
|
6277
|
+
var c = buffer[pos++];
|
|
6278
|
+
var d = buffer[pos++];
|
|
6279
|
+
if (a !== 2 || b !== 2 || c & 0x80 || width < 8 || width > 32767) return buffer;
|
|
6280
|
+
if ((c << 8 | d) !== width) throw "HDRDecoder: wrong scanline width";
|
|
6281
|
+
var ptr = 0;
|
|
6282
|
+
while(ptr < ptrEnd && pos < byteLength){
|
|
6283
|
+
var count = buffer[pos++];
|
|
6284
|
+
var isEncodedRun = count > 128;
|
|
6285
|
+
if (isEncodedRun) count -= 128;
|
|
6286
|
+
if (count === 0 || ptr + count > ptrEnd) throw "HDRDecoder: bad scanline data";
|
|
6287
|
+
if (isEncodedRun) {
|
|
6288
|
+
var byteValue = buffer[pos++];
|
|
6289
|
+
for(var i = 0; i < count; i++)scanLineBuffer[ptr++] = byteValue;
|
|
6290
|
+
} else {
|
|
6291
|
+
scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);
|
|
6292
|
+
ptr += count;
|
|
6293
|
+
pos += count;
|
|
6294
|
+
}
|
|
6295
|
+
}
|
|
6296
|
+
for(var i1 = 0; i1 < width; i1++, offset += 4){
|
|
6297
|
+
dataRGBA[offset] = scanLineBuffer[i1];
|
|
6298
|
+
dataRGBA[offset + 1] = scanLineBuffer[i1 + width];
|
|
6299
|
+
dataRGBA[offset + 2] = scanLineBuffer[i1 + width * 2];
|
|
6300
|
+
dataRGBA[offset + 3] = scanLineBuffer[i1 + width * 3];
|
|
6301
|
+
}
|
|
6302
|
+
numScanLines--;
|
|
6303
|
+
}
|
|
6304
|
+
return dataRGBA;
|
|
6305
|
+
};
|
|
6306
|
+
return HDRDecoder;
|
|
6307
|
+
}();
|
|
6308
|
+
// Float32 to Float16 lookup tables (http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf)
|
|
6309
|
+
HDRDecoder._float2HalfTables = HDRDecoder._generateFloat2HalfTables();
|
|
6310
|
+
HDRDecoder._floatView = new Float32Array(1);
|
|
6311
|
+
HDRDecoder._uint32View = new Uint32Array(HDRDecoder._floatView.buffer);
|
|
6312
|
+
HDRDecoder._one = 0x3c00 // Half float for 1.0
|
|
6313
|
+
;
|
|
6314
|
+
// prettier-ignore
|
|
6315
|
+
HDRDecoder._faces = [
|
|
6316
|
+
/* +X */ [
|
|
6317
|
+
1,
|
|
6318
|
+
-1,
|
|
6319
|
+
-1,
|
|
6320
|
+
1,
|
|
6321
|
+
-1,
|
|
6322
|
+
1,
|
|
6323
|
+
1,
|
|
6324
|
+
1,
|
|
6325
|
+
-1,
|
|
6326
|
+
1,
|
|
6327
|
+
1,
|
|
6328
|
+
1
|
|
6329
|
+
],
|
|
6330
|
+
/* -X */ [
|
|
6331
|
+
-1,
|
|
6332
|
+
-1,
|
|
6333
|
+
1,
|
|
6334
|
+
-1,
|
|
6335
|
+
-1,
|
|
6336
|
+
-1,
|
|
6337
|
+
-1,
|
|
6338
|
+
1,
|
|
6339
|
+
1,
|
|
6340
|
+
-1,
|
|
6341
|
+
1,
|
|
6342
|
+
-1
|
|
6343
|
+
],
|
|
6344
|
+
/* +Y */ [
|
|
6345
|
+
-1,
|
|
6346
|
+
-1,
|
|
6347
|
+
1,
|
|
6348
|
+
1,
|
|
6349
|
+
-1,
|
|
6350
|
+
1,
|
|
6351
|
+
-1,
|
|
6352
|
+
-1,
|
|
6353
|
+
-1,
|
|
6354
|
+
1,
|
|
6355
|
+
-1,
|
|
6356
|
+
-1
|
|
6357
|
+
],
|
|
6358
|
+
/* -Y */ [
|
|
6359
|
+
-1,
|
|
6360
|
+
1,
|
|
6361
|
+
-1,
|
|
6362
|
+
1,
|
|
6363
|
+
1,
|
|
6364
|
+
-1,
|
|
6365
|
+
-1,
|
|
6366
|
+
1,
|
|
6367
|
+
1,
|
|
6368
|
+
1,
|
|
6369
|
+
1,
|
|
6370
|
+
1
|
|
6371
|
+
],
|
|
6372
|
+
/* +Z */ [
|
|
6373
|
+
-1,
|
|
6374
|
+
-1,
|
|
6375
|
+
-1,
|
|
6376
|
+
1,
|
|
6377
|
+
-1,
|
|
6378
|
+
-1,
|
|
6379
|
+
-1,
|
|
6380
|
+
1,
|
|
6381
|
+
-1,
|
|
6382
|
+
1,
|
|
6383
|
+
1,
|
|
6384
|
+
-1
|
|
6385
|
+
],
|
|
6386
|
+
/* -Z */ [
|
|
6387
|
+
1,
|
|
6388
|
+
-1,
|
|
6389
|
+
1,
|
|
6390
|
+
-1,
|
|
6391
|
+
-1,
|
|
6392
|
+
1,
|
|
6393
|
+
1,
|
|
6394
|
+
1,
|
|
6395
|
+
1,
|
|
6396
|
+
-1,
|
|
6397
|
+
1,
|
|
6398
|
+
1
|
|
6399
|
+
]
|
|
6400
|
+
];
|
|
6401
|
+
|
|
6466
6402
|
var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
6467
6403
|
_inherits(TextureCubeLoader, Loader);
|
|
6468
6404
|
function TextureCubeLoader() {
|
|
@@ -6470,6 +6406,44 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6470
6406
|
}
|
|
6471
6407
|
var _proto = TextureCubeLoader.prototype;
|
|
6472
6408
|
_proto.load = function load(item, resourceManager) {
|
|
6409
|
+
if (item.urls) {
|
|
6410
|
+
return this._loadCubeFaces(item, resourceManager);
|
|
6411
|
+
} else {
|
|
6412
|
+
return this._loadHDR(item, resourceManager);
|
|
6413
|
+
}
|
|
6414
|
+
};
|
|
6415
|
+
_proto._loadHDR = function _loadHDR(item, resourceManager) {
|
|
6416
|
+
return new AssetPromise(function(resolve, reject) {
|
|
6417
|
+
var engine = resourceManager.engine;
|
|
6418
|
+
var url = item.url;
|
|
6419
|
+
var requestConfig = _extends({}, item, {
|
|
6420
|
+
type: "arraybuffer"
|
|
6421
|
+
});
|
|
6422
|
+
resourceManager// @ts-ignore
|
|
6423
|
+
._request(url, requestConfig).then(function(buffer) {
|
|
6424
|
+
if (!SystemInfo.supportsTextureFormat(engine, TextureFormat.R16G16B16A16)) {
|
|
6425
|
+
reject(new Error("TextureCubeLoader: HDR texture requires half float support."));
|
|
6426
|
+
return;
|
|
6427
|
+
}
|
|
6428
|
+
var _item_params;
|
|
6429
|
+
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;
|
|
6430
|
+
var bufferArray = new Uint8Array(buffer);
|
|
6431
|
+
var header = HDRDecoder.parseHeader(bufferArray);
|
|
6432
|
+
var texture = new TextureCube(engine, header.height >> 1, TextureFormat.R16G16B16A16, mipmap, false);
|
|
6433
|
+
HDRDecoder.decodeFaces(bufferArray, header, function(faceIndex, data) {
|
|
6434
|
+
texture.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);
|
|
6435
|
+
});
|
|
6436
|
+
texture.generateMipmaps();
|
|
6437
|
+
texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
|
|
6438
|
+
texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
|
|
6439
|
+
texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
|
|
6440
|
+
texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
|
|
6441
|
+
resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));
|
|
6442
|
+
resolve(texture);
|
|
6443
|
+
}).catch(reject);
|
|
6444
|
+
});
|
|
6445
|
+
};
|
|
6446
|
+
_proto._loadCubeFaces = function _loadCubeFaces(item, resourceManager) {
|
|
6473
6447
|
return new AssetPromise(function(resolve, reject) {
|
|
6474
6448
|
var urls = item.urls;
|
|
6475
6449
|
var requestConfig = _extends({}, item, {
|
|
@@ -6483,7 +6457,7 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6483
6457
|
var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_format = _ref.format, format = _ref_format === void 0 ? TextureFormat.R8G8B8A8 : _ref_format, anisoLevel = _ref.anisoLevel, wrapModeU = _ref.wrapModeU, wrapModeV = _ref.wrapModeV, filterMode = _ref.filterMode, _ref_isSRGBColorSpace = _ref.isSRGBColorSpace, isSRGBColorSpace = _ref_isSRGBColorSpace === void 0 ? true : _ref_isSRGBColorSpace, _ref_mipmap = _ref.mipmap, mipmap = _ref_mipmap === void 0 ? true : _ref_mipmap;
|
|
6484
6458
|
var _images_ = images[0], width = _images_.width, height = _images_.height;
|
|
6485
6459
|
if (width !== height) {
|
|
6486
|
-
|
|
6460
|
+
reject(new Error("The cube texture must have the same width and height"));
|
|
6487
6461
|
return;
|
|
6488
6462
|
}
|
|
6489
6463
|
var engine = resourceManager.engine;
|
|
@@ -6496,21 +6470,70 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6496
6470
|
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6497
6471
|
texture.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
|
|
6498
6472
|
}
|
|
6499
|
-
|
|
6500
|
-
resourceManager.addContentRestorer(new
|
|
6473
|
+
texture.generateMipmaps();
|
|
6474
|
+
resourceManager.addContentRestorer(new CubeFaceContentRestorer(texture, urls, requestConfig));
|
|
6501
6475
|
resolve(texture);
|
|
6502
|
-
}).catch(
|
|
6503
|
-
reject(e);
|
|
6504
|
-
});
|
|
6476
|
+
}).catch(reject);
|
|
6505
6477
|
});
|
|
6506
6478
|
};
|
|
6507
6479
|
return TextureCubeLoader;
|
|
6508
6480
|
}(Loader);
|
|
6509
6481
|
TextureCubeLoader = __decorate([
|
|
6510
6482
|
resourceLoader(AssetType.TextureCube, [
|
|
6511
|
-
""
|
|
6483
|
+
"texCube",
|
|
6484
|
+
"hdr"
|
|
6512
6485
|
])
|
|
6513
6486
|
], TextureCubeLoader);
|
|
6487
|
+
var HDRContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6488
|
+
_inherits(HDRContentRestorer, ContentRestorer);
|
|
6489
|
+
function HDRContentRestorer(resource, url, requestConfig) {
|
|
6490
|
+
var _this;
|
|
6491
|
+
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
6492
|
+
return _this;
|
|
6493
|
+
}
|
|
6494
|
+
var _proto = HDRContentRestorer.prototype;
|
|
6495
|
+
_proto.restoreContent = function restoreContent() {
|
|
6496
|
+
var _this = this;
|
|
6497
|
+
return new AssetPromise(function(resolve, reject) {
|
|
6498
|
+
var resource = _this.resource;
|
|
6499
|
+
resource.engine.resourceManager// @ts-ignore
|
|
6500
|
+
._request(_this.url, _this.requestConfig).then(function(buffer) {
|
|
6501
|
+
var bufferArray = new Uint8Array(buffer);
|
|
6502
|
+
HDRDecoder.decodeFaces(bufferArray, HDRDecoder.parseHeader(bufferArray), function(faceIndex, data) {
|
|
6503
|
+
resource.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);
|
|
6504
|
+
});
|
|
6505
|
+
resource.generateMipmaps();
|
|
6506
|
+
resolve(resource);
|
|
6507
|
+
}).catch(reject);
|
|
6508
|
+
});
|
|
6509
|
+
};
|
|
6510
|
+
return HDRContentRestorer;
|
|
6511
|
+
}(ContentRestorer);
|
|
6512
|
+
var CubeFaceContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6513
|
+
_inherits(CubeFaceContentRestorer, ContentRestorer);
|
|
6514
|
+
function CubeFaceContentRestorer(resource, urls, requestConfig) {
|
|
6515
|
+
var _this;
|
|
6516
|
+
_this = ContentRestorer.call(this, resource) || this, _this.urls = urls, _this.requestConfig = requestConfig;
|
|
6517
|
+
return _this;
|
|
6518
|
+
}
|
|
6519
|
+
var _proto = CubeFaceContentRestorer.prototype;
|
|
6520
|
+
_proto.restoreContent = function restoreContent() {
|
|
6521
|
+
var _this = this;
|
|
6522
|
+
return new AssetPromise(function(resolve, reject) {
|
|
6523
|
+
Promise.all(_this.urls.map(function(url) {
|
|
6524
|
+
return request(url, _this.requestConfig);
|
|
6525
|
+
})).then(function(images) {
|
|
6526
|
+
var resource = _this.resource;
|
|
6527
|
+
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6528
|
+
resource.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
|
|
6529
|
+
}
|
|
6530
|
+
resource.generateMipmaps();
|
|
6531
|
+
resolve(resource);
|
|
6532
|
+
}).catch(reject);
|
|
6533
|
+
});
|
|
6534
|
+
};
|
|
6535
|
+
return CubeFaceContentRestorer;
|
|
6536
|
+
}(ContentRestorer);
|
|
6514
6537
|
|
|
6515
6538
|
var AudioLoader = /*#__PURE__*/ function(Loader) {
|
|
6516
6539
|
_inherits(AudioLoader, Loader);
|
|
@@ -6583,6 +6606,7 @@ var ShaderChunkLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6583
6606
|
}
|
|
6584
6607
|
}
|
|
6585
6608
|
return Promise.all(shaderChunkPaths.map(function(chunkPath) {
|
|
6609
|
+
// @ts-ignore
|
|
6586
6610
|
return resourceManager.load({
|
|
6587
6611
|
type: "ShaderChunk",
|
|
6588
6612
|
url: chunkPath
|
|
@@ -6659,7 +6683,7 @@ var PhysicsMaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6659
6683
|
}(Loader);
|
|
6660
6684
|
PhysicsMaterialLoader = __decorate([
|
|
6661
6685
|
resourceLoader(AssetType.PhysicsMaterial, [
|
|
6662
|
-
"
|
|
6686
|
+
"physMat"
|
|
6663
6687
|
])
|
|
6664
6688
|
], PhysicsMaterialLoader);
|
|
6665
6689
|
|
|
@@ -6694,7 +6718,6 @@ var SceneLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6694
6718
|
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
6695
6719
|
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
6696
6720
|
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
6697
|
-
scene.ambientLight.specularTextureDecodeRGBM = true;
|
|
6698
6721
|
if (useCustomAmbient && ambient.customAmbientLight) {
|
|
6699
6722
|
promises.push(// @ts-ignore
|
|
6700
6723
|
resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
|
|
@@ -7331,5 +7354,5 @@ EXT_texture_webp = __decorate([
|
|
|
7331
7354
|
registerGLTFExtension("EXT_texture_webp", GLTFExtensionMode.CreateAndParse)
|
|
7332
7355
|
], EXT_texture_webp);
|
|
7333
7356
|
|
|
7334
|
-
export { AccessorType, AnimationClipDecoder, BufferInfo, BufferReader,
|
|
7357
|
+
export { AccessorType, AnimationClipDecoder, BufferInfo, BufferReader, FileHeader, GLTFAnimationParser, GLTFAnimatorControllerParser, GLTFBufferParser, GLTFBufferViewParser, GLTFEntityParser, GLTFExtensionMode, GLTFExtensionParser, GLTFLoader, GLTFMaterialParser, GLTFMeshParser, GLTFParser, GLTFParserContext, GLTFParserType, GLTFResource, GLTFSceneParser, GLTFSchemaParser, GLTFSkinParser, GLTFTextureParser, GLTFUtils, GLTFValidator, HDRDecoder, HierarchyParser, InterpolableValueType, KTX2Loader, KTX2TargetFormat, MaterialLoaderType, MeshDecoder, ParserContext, ParserType, PrefabResource, ReflectionParser, SceneParser, SpecularMode, Texture2DDecoder, decode, decoder, decoderMap, parseSingleKTX, registerGLTFExtension, registerGLTFParser };
|
|
7335
7358
|
//# sourceMappingURL=module.js.map
|