@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/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,8 +1664,8 @@ 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
1671
|
var base64Regex = /^data:(.+?);base64,/;
|
|
@@ -1727,8 +1693,7 @@ var BufferLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1727
1693
|
}(Loader);
|
|
1728
1694
|
BufferLoader = __decorate([
|
|
1729
1695
|
resourceLoader(AssetType.Buffer, [
|
|
1730
|
-
"bin"
|
|
1731
|
-
"r3bin"
|
|
1696
|
+
"bin"
|
|
1732
1697
|
])
|
|
1733
1698
|
], BufferLoader);
|
|
1734
1699
|
|
|
@@ -1755,7 +1720,6 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1755
1720
|
sh.copyFromArray(new Float32Array(arraybuffer, 0, 27));
|
|
1756
1721
|
ambientLight.diffuseSphericalHarmonics = sh;
|
|
1757
1722
|
ambientLight.specularTexture = texture;
|
|
1758
|
-
ambientLight.specularTextureDecodeRGBM = true;
|
|
1759
1723
|
resolve(ambientLight);
|
|
1760
1724
|
}).catch(function(e) {
|
|
1761
1725
|
reject(e);
|
|
@@ -1768,7 +1732,7 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1768
1732
|
var _this;
|
|
1769
1733
|
var shByteLength = 27 * 4;
|
|
1770
1734
|
var size = (_this = new Uint16Array(buffer, shByteLength, 1)) == null ? void 0 : _this[0];
|
|
1771
|
-
texture || (texture = new TextureCube(engine, size,
|
|
1735
|
+
texture || (texture = new TextureCube(engine, size, TextureFormat.R16G16B16A16, true, false));
|
|
1772
1736
|
texture.filterMode = TextureFilterMode.Trilinear;
|
|
1773
1737
|
var mipmapCount = texture.mipmapCount;
|
|
1774
1738
|
var offset = shByteLength + 2;
|
|
@@ -1776,8 +1740,8 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1776
1740
|
var mipSize = size >> mipLevel;
|
|
1777
1741
|
for(var face = 0; face < 6; face++){
|
|
1778
1742
|
var dataSize = mipSize * mipSize * 4;
|
|
1779
|
-
var data = new
|
|
1780
|
-
offset += dataSize;
|
|
1743
|
+
var data = new Uint16Array(buffer, offset, dataSize);
|
|
1744
|
+
offset += dataSize * 2;
|
|
1781
1745
|
texture.setPixelBuffer(TextureCubeFace.PositiveX + face, data, mipLevel);
|
|
1782
1746
|
}
|
|
1783
1747
|
}
|
|
@@ -5306,341 +5270,6 @@ PrefabLoader = __decorate([
|
|
|
5306
5270
|
])
|
|
5307
5271
|
], PrefabLoader);
|
|
5308
5272
|
|
|
5309
|
-
var PI = Math.PI;
|
|
5310
|
-
// referenece: https://www.flipcode.com/archives/HDR_Image_Reader.shtml
|
|
5311
|
-
var HDRLoader = /*#__PURE__*/ function(Loader) {
|
|
5312
|
-
_inherits(HDRLoader, Loader);
|
|
5313
|
-
function HDRLoader() {
|
|
5314
|
-
return Loader.apply(this, arguments) || this;
|
|
5315
|
-
}
|
|
5316
|
-
var _proto = HDRLoader.prototype;
|
|
5317
|
-
_proto.load = function load(item, resourceManager) {
|
|
5318
|
-
return new AssetPromise(function(resolve, reject) {
|
|
5319
|
-
var engine = resourceManager.engine;
|
|
5320
|
-
var requestConfig = _extends({}, item, {
|
|
5321
|
-
type: "arraybuffer"
|
|
5322
|
-
});
|
|
5323
|
-
var url = item.url;
|
|
5324
|
-
resourceManager// @ts-ignore
|
|
5325
|
-
._request(url, requestConfig).then(function(buffer) {
|
|
5326
|
-
var texture = HDRLoader._setTextureByBuffer(engine, buffer);
|
|
5327
|
-
engine.resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));
|
|
5328
|
-
resolve(texture);
|
|
5329
|
-
}).catch(reject);
|
|
5330
|
-
});
|
|
5331
|
-
};
|
|
5332
|
-
/**
|
|
5333
|
-
* @internal
|
|
5334
|
-
*/ HDRLoader._setTextureByBuffer = function _setTextureByBuffer(engine, buffer, texture) {
|
|
5335
|
-
var bufferArray = new Uint8Array(buffer);
|
|
5336
|
-
var _HDRLoader__parseHeader = HDRLoader._parseHeader(bufferArray), width = _HDRLoader__parseHeader.width, height = _HDRLoader__parseHeader.height, dataPosition = _HDRLoader__parseHeader.dataPosition;
|
|
5337
|
-
var cubeSize = height >> 1;
|
|
5338
|
-
texture || (texture = new TextureCube(engine, cubeSize, undefined, undefined, false));
|
|
5339
|
-
var pixels = HDRLoader._readPixels(bufferArray.subarray(dataPosition), width, height);
|
|
5340
|
-
var cubeMapData = HDRLoader._convertToCubemap(pixels, width, height, cubeSize);
|
|
5341
|
-
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
5342
|
-
texture.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, cubeMapData[faceIndex], 0);
|
|
5343
|
-
}
|
|
5344
|
-
texture.generateMipmaps();
|
|
5345
|
-
return texture;
|
|
5346
|
-
};
|
|
5347
|
-
HDRLoader._convertToCubemap = function _convertToCubemap(pixels, inputWidth, inputHeight, size) {
|
|
5348
|
-
if (!pixels) {
|
|
5349
|
-
throw "ConvertPanoramaToCubemap: input cannot be null";
|
|
5350
|
-
}
|
|
5351
|
-
if (pixels.length != inputWidth * inputHeight * 4) {
|
|
5352
|
-
throw "ConvertPanoramaToCubemap: input size is wrong";
|
|
5353
|
-
}
|
|
5354
|
-
var textureRight = this._createCubemapData(size, this._faceRight, pixels, inputWidth, inputHeight);
|
|
5355
|
-
var textureLeft = this._createCubemapData(size, this._faceLeft, pixels, inputWidth, inputHeight);
|
|
5356
|
-
var textureUp = this._createCubemapData(size, this._faceUp, pixels, inputWidth, inputHeight);
|
|
5357
|
-
var textureDown = this._createCubemapData(size, this._faceBottom, pixels, inputWidth, inputHeight);
|
|
5358
|
-
var textureFront = this._createCubemapData(size, this._faceFront, pixels, inputWidth, inputHeight);
|
|
5359
|
-
var textureBack = this._createCubemapData(size, this._faceBack, pixels, inputWidth, inputHeight);
|
|
5360
|
-
return [
|
|
5361
|
-
textureRight,
|
|
5362
|
-
textureLeft,
|
|
5363
|
-
textureUp,
|
|
5364
|
-
textureDown,
|
|
5365
|
-
textureFront,
|
|
5366
|
-
textureBack
|
|
5367
|
-
];
|
|
5368
|
-
};
|
|
5369
|
-
HDRLoader._createCubemapData = function _createCubemapData(texSize, faceData, pixels, inputWidth, inputHeight) {
|
|
5370
|
-
var textureArray = new Uint8ClampedArray(texSize * texSize * 4);
|
|
5371
|
-
var rotDX1 = this._tempVector3.set(0, 0, 0).add(faceData[1]).subtract(faceData[0]).scale(1 / texSize);
|
|
5372
|
-
var rotDX2 = this._temp2Vector3.set(0, 0, 0).add(faceData[3]).subtract(faceData[2]).scale(1 / texSize);
|
|
5373
|
-
var dy = 1 / texSize;
|
|
5374
|
-
var fy = 0;
|
|
5375
|
-
for(var y = 0; y < texSize; y++){
|
|
5376
|
-
var xv1 = this._temp3Vector3.set(0, 0, 0).add(faceData[0]);
|
|
5377
|
-
var xv2 = this._temp4Vector3.set(0, 0, 0).add(faceData[2]);
|
|
5378
|
-
for(var x = 0; x < texSize; x++){
|
|
5379
|
-
var v = this._temp5Vector3.set(0, 0, 0).add(xv2).subtract(xv1).scale(fy).add(xv1);
|
|
5380
|
-
v.normalize();
|
|
5381
|
-
var color = this._calcProjectionSpherical(v, pixels, inputWidth, inputHeight);
|
|
5382
|
-
this._RGBEToLinear(color);
|
|
5383
|
-
this._linearToRGBM(color, 5);
|
|
5384
|
-
// 4 channels per pixels
|
|
5385
|
-
var index = y * texSize * 4 + x * 4;
|
|
5386
|
-
textureArray[index] = color.r;
|
|
5387
|
-
textureArray[index + 1] = color.g;
|
|
5388
|
-
textureArray[index + 2] = color.b;
|
|
5389
|
-
textureArray[index + 3] = color.a;
|
|
5390
|
-
xv1.add(rotDX1);
|
|
5391
|
-
xv2.add(rotDX2);
|
|
5392
|
-
}
|
|
5393
|
-
fy += dy;
|
|
5394
|
-
}
|
|
5395
|
-
return textureArray;
|
|
5396
|
-
};
|
|
5397
|
-
HDRLoader._calcProjectionSpherical = function _calcProjectionSpherical(vDir, pixels, inputWidth, inputHeight) {
|
|
5398
|
-
var theta = Math.atan2(vDir.z, vDir.x);
|
|
5399
|
-
var phi = Math.acos(vDir.y);
|
|
5400
|
-
while(theta < -PI){
|
|
5401
|
-
theta += 2 * PI;
|
|
5402
|
-
}
|
|
5403
|
-
while(theta > PI){
|
|
5404
|
-
theta -= 2 * PI;
|
|
5405
|
-
}
|
|
5406
|
-
var dx = theta / PI;
|
|
5407
|
-
var dy = phi / PI;
|
|
5408
|
-
// recenter.
|
|
5409
|
-
dx = dx * 0.5 + 0.5;
|
|
5410
|
-
var px = Math.round(dx * inputWidth);
|
|
5411
|
-
if (px < 0) {
|
|
5412
|
-
px = 0;
|
|
5413
|
-
} else if (px >= inputWidth) {
|
|
5414
|
-
px = inputWidth - 1;
|
|
5415
|
-
}
|
|
5416
|
-
var py = Math.round(dy * inputHeight);
|
|
5417
|
-
if (py < 0) {
|
|
5418
|
-
py = 0;
|
|
5419
|
-
} else if (py >= inputHeight) {
|
|
5420
|
-
py = inputHeight - 1;
|
|
5421
|
-
}
|
|
5422
|
-
var inputY = inputHeight - py - 1;
|
|
5423
|
-
var index = inputY * inputWidth * 4 + px * 4;
|
|
5424
|
-
var r = pixels[index];
|
|
5425
|
-
var g = pixels[index + 1];
|
|
5426
|
-
var b = pixels[index + 2];
|
|
5427
|
-
var a = pixels[index + 3];
|
|
5428
|
-
return new Color(r, g, b, a);
|
|
5429
|
-
};
|
|
5430
|
-
HDRLoader._readStringLine = function _readStringLine(uint8array, startIndex) {
|
|
5431
|
-
var line = "";
|
|
5432
|
-
var character = "";
|
|
5433
|
-
for(var i = startIndex; i < uint8array.length - startIndex; i++){
|
|
5434
|
-
character = String.fromCharCode(uint8array[i]);
|
|
5435
|
-
if (character == "\n") {
|
|
5436
|
-
break;
|
|
5437
|
-
}
|
|
5438
|
-
line += character;
|
|
5439
|
-
}
|
|
5440
|
-
return line;
|
|
5441
|
-
};
|
|
5442
|
-
HDRLoader._parseHeader = function _parseHeader(uint8array) {
|
|
5443
|
-
var height = 0;
|
|
5444
|
-
var width = 0;
|
|
5445
|
-
var line = this._readStringLine(uint8array, 0);
|
|
5446
|
-
if (line[0] != "#" || line[1] != "?") {
|
|
5447
|
-
throw "Bad HDR Format.";
|
|
5448
|
-
}
|
|
5449
|
-
var endOfHeader = false;
|
|
5450
|
-
var findFormat = false;
|
|
5451
|
-
var lineIndex = 0;
|
|
5452
|
-
do {
|
|
5453
|
-
lineIndex += line.length + 1;
|
|
5454
|
-
line = this._readStringLine(uint8array, lineIndex);
|
|
5455
|
-
if (line == "FORMAT=32-bit_rle_rgbe") {
|
|
5456
|
-
findFormat = true;
|
|
5457
|
-
} else if (line.length == 0) {
|
|
5458
|
-
endOfHeader = true;
|
|
5459
|
-
}
|
|
5460
|
-
}while (!endOfHeader);
|
|
5461
|
-
if (!findFormat) {
|
|
5462
|
-
throw "HDR Bad header format, unsupported FORMAT";
|
|
5463
|
-
}
|
|
5464
|
-
lineIndex += line.length + 1;
|
|
5465
|
-
line = this._readStringLine(uint8array, lineIndex);
|
|
5466
|
-
var sizeRegexp = /^\-Y (.*) \+X (.*)$/g;
|
|
5467
|
-
var match = sizeRegexp.exec(line);
|
|
5468
|
-
// TODO. Support +Y and -X if needed.
|
|
5469
|
-
if (!match || match.length < 3) {
|
|
5470
|
-
throw "HDR Bad header format, no size";
|
|
5471
|
-
}
|
|
5472
|
-
width = parseInt(match[2]);
|
|
5473
|
-
height = parseInt(match[1]);
|
|
5474
|
-
if (width < 8 || width > 0x7fff) {
|
|
5475
|
-
throw "HDR Bad header format, unsupported size";
|
|
5476
|
-
}
|
|
5477
|
-
lineIndex += line.length + 1;
|
|
5478
|
-
return {
|
|
5479
|
-
height: height,
|
|
5480
|
-
width: width,
|
|
5481
|
-
dataPosition: lineIndex
|
|
5482
|
-
};
|
|
5483
|
-
};
|
|
5484
|
-
HDRLoader._readPixels = function _readPixels(buffer, width, height) {
|
|
5485
|
-
var scanLineWidth = width;
|
|
5486
|
-
var byteLength = buffer.byteLength;
|
|
5487
|
-
var dataRGBA = new Uint8Array(4 * width * height);
|
|
5488
|
-
var offset = 0, pos = 0;
|
|
5489
|
-
var ptrEnd = 4 * scanLineWidth;
|
|
5490
|
-
var scanLineBuffer = new Uint8Array(ptrEnd);
|
|
5491
|
-
var numScanLines = height; // read in each successive scanLine
|
|
5492
|
-
while(numScanLines > 0 && pos < byteLength){
|
|
5493
|
-
var a = buffer[pos++];
|
|
5494
|
-
var b = buffer[pos++];
|
|
5495
|
-
var c = buffer[pos++];
|
|
5496
|
-
var d = buffer[pos++];
|
|
5497
|
-
if (a != 2 || b != 2 || c & 0x80 || width < 8 || width > 32767) {
|
|
5498
|
-
// this file is not run length encoded
|
|
5499
|
-
// read values sequentially
|
|
5500
|
-
return buffer;
|
|
5501
|
-
}
|
|
5502
|
-
if ((c << 8 | d) != scanLineWidth) {
|
|
5503
|
-
// eslint-disable-next-line no-throw-literal
|
|
5504
|
-
throw "HDR Bad header format, wrong scan line width";
|
|
5505
|
-
}
|
|
5506
|
-
// read each of the four channels for the scanline into the buffer
|
|
5507
|
-
// first red, then green, then blue, then exponent
|
|
5508
|
-
var ptr = 0, count = void 0;
|
|
5509
|
-
while(ptr < ptrEnd && pos < byteLength){
|
|
5510
|
-
count = buffer[pos++];
|
|
5511
|
-
var isEncodedRun = count > 128;
|
|
5512
|
-
if (isEncodedRun) count -= 128;
|
|
5513
|
-
if (0 === count || ptr + count > ptrEnd) {
|
|
5514
|
-
throw "HDR Bad Format, bad scanline data (run)";
|
|
5515
|
-
}
|
|
5516
|
-
if (isEncodedRun) {
|
|
5517
|
-
// a (encoded) run of the same value
|
|
5518
|
-
var byteValue = buffer[pos++];
|
|
5519
|
-
for(var i = 0; i < count; i++){
|
|
5520
|
-
scanLineBuffer[ptr++] = byteValue;
|
|
5521
|
-
} //ptr += count;
|
|
5522
|
-
} else {
|
|
5523
|
-
// a literal-run
|
|
5524
|
-
scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);
|
|
5525
|
-
ptr += count;
|
|
5526
|
-
pos += count;
|
|
5527
|
-
}
|
|
5528
|
-
} // now convert data from buffer into rgba
|
|
5529
|
-
// first red, then green, then blue, then exponent (alpha)
|
|
5530
|
-
var l = scanLineWidth; //scanLine_buffer.byteLength;
|
|
5531
|
-
for(var i1 = 0; i1 < l; i1++){
|
|
5532
|
-
var off = 0;
|
|
5533
|
-
dataRGBA[offset] = scanLineBuffer[i1 + off];
|
|
5534
|
-
off += scanLineWidth;
|
|
5535
|
-
dataRGBA[offset + 1] = scanLineBuffer[i1 + off];
|
|
5536
|
-
off += scanLineWidth;
|
|
5537
|
-
dataRGBA[offset + 2] = scanLineBuffer[i1 + off];
|
|
5538
|
-
off += scanLineWidth;
|
|
5539
|
-
dataRGBA[offset + 3] = scanLineBuffer[i1 + off];
|
|
5540
|
-
offset += 4;
|
|
5541
|
-
}
|
|
5542
|
-
numScanLines--;
|
|
5543
|
-
}
|
|
5544
|
-
return dataRGBA;
|
|
5545
|
-
};
|
|
5546
|
-
HDRLoader._RGBEToLinear = function _RGBEToLinear(color) {
|
|
5547
|
-
var scaleFactor = Math.pow(2, color.a - 128) / 255;
|
|
5548
|
-
color.r *= scaleFactor;
|
|
5549
|
-
color.g *= scaleFactor;
|
|
5550
|
-
color.b *= scaleFactor;
|
|
5551
|
-
color.a = 1;
|
|
5552
|
-
};
|
|
5553
|
-
HDRLoader._linearToRGBM = function _linearToRGBM(color, maxRange) {
|
|
5554
|
-
var maxRGB = Math.max(color.r, Math.max(color.g, color.b));
|
|
5555
|
-
var M = Math.min(maxRGB / maxRange, 1);
|
|
5556
|
-
M = Math.ceil(M * 255);
|
|
5557
|
-
var scaleFactor = 65025 / (M * maxRange); // 255 * (255 / (M * maxRange) )
|
|
5558
|
-
color.r *= scaleFactor;
|
|
5559
|
-
color.g *= scaleFactor;
|
|
5560
|
-
color.b *= scaleFactor;
|
|
5561
|
-
color.a *= M;
|
|
5562
|
-
};
|
|
5563
|
-
return HDRLoader;
|
|
5564
|
-
}(Loader);
|
|
5565
|
-
HDRLoader._rightBottomBack = new Vector3(1.0, -1.0, -1.0);
|
|
5566
|
-
HDRLoader._rightBottomFront = new Vector3(1.0, -1.0, 1.0);
|
|
5567
|
-
HDRLoader._rightUpBack = new Vector3(1.0, 1.0, -1.0);
|
|
5568
|
-
HDRLoader._rightUpFront = new Vector3(1.0, 1.0, 1.0);
|
|
5569
|
-
HDRLoader._leftBottomBack = new Vector3(-1.0, -1.0, -1.0);
|
|
5570
|
-
HDRLoader._leftBottomFront = new Vector3(-1.0, -1.0, 1.0);
|
|
5571
|
-
HDRLoader._leftUpBack = new Vector3(-1.0, 1.0, -1.0);
|
|
5572
|
-
HDRLoader._leftUpFront = new Vector3(-1.0, 1.0, 1.0);
|
|
5573
|
-
HDRLoader._faceRight = [
|
|
5574
|
-
HDRLoader._rightBottomBack,
|
|
5575
|
-
HDRLoader._rightBottomFront,
|
|
5576
|
-
HDRLoader._rightUpBack,
|
|
5577
|
-
HDRLoader._rightUpFront
|
|
5578
|
-
];
|
|
5579
|
-
HDRLoader._faceLeft = [
|
|
5580
|
-
HDRLoader._leftBottomFront,
|
|
5581
|
-
HDRLoader._leftBottomBack,
|
|
5582
|
-
HDRLoader._leftUpFront,
|
|
5583
|
-
HDRLoader._leftUpBack
|
|
5584
|
-
];
|
|
5585
|
-
HDRLoader._faceUp = [
|
|
5586
|
-
HDRLoader._leftBottomFront,
|
|
5587
|
-
HDRLoader._rightBottomFront,
|
|
5588
|
-
HDRLoader._leftBottomBack,
|
|
5589
|
-
HDRLoader._rightBottomBack
|
|
5590
|
-
];
|
|
5591
|
-
HDRLoader._faceBottom = [
|
|
5592
|
-
HDRLoader._leftUpBack,
|
|
5593
|
-
HDRLoader._rightUpBack,
|
|
5594
|
-
HDRLoader._leftUpFront,
|
|
5595
|
-
HDRLoader._rightUpFront
|
|
5596
|
-
];
|
|
5597
|
-
HDRLoader._faceFront = [
|
|
5598
|
-
HDRLoader._leftBottomBack,
|
|
5599
|
-
HDRLoader._rightBottomBack,
|
|
5600
|
-
HDRLoader._leftUpBack,
|
|
5601
|
-
HDRLoader._rightUpBack
|
|
5602
|
-
];
|
|
5603
|
-
HDRLoader._faceBack = [
|
|
5604
|
-
HDRLoader._rightBottomFront,
|
|
5605
|
-
HDRLoader._leftBottomFront,
|
|
5606
|
-
HDRLoader._rightUpFront,
|
|
5607
|
-
HDRLoader._leftUpFront
|
|
5608
|
-
];
|
|
5609
|
-
HDRLoader._tempVector3 = new Vector3();
|
|
5610
|
-
HDRLoader._temp2Vector3 = new Vector3();
|
|
5611
|
-
HDRLoader._temp3Vector3 = new Vector3();
|
|
5612
|
-
HDRLoader._temp4Vector3 = new Vector3();
|
|
5613
|
-
HDRLoader._temp5Vector3 = new Vector3();
|
|
5614
|
-
HDRLoader = __decorate([
|
|
5615
|
-
resourceLoader(AssetType.HDR, [
|
|
5616
|
-
"hdr"
|
|
5617
|
-
])
|
|
5618
|
-
], HDRLoader);
|
|
5619
|
-
/**
|
|
5620
|
-
* @internal
|
|
5621
|
-
*/ var HDRContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
5622
|
-
_inherits(HDRContentRestorer, ContentRestorer);
|
|
5623
|
-
function HDRContentRestorer(resource, url, requestConfig) {
|
|
5624
|
-
var _this;
|
|
5625
|
-
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
5626
|
-
return _this;
|
|
5627
|
-
}
|
|
5628
|
-
var _proto = HDRContentRestorer.prototype;
|
|
5629
|
-
_proto.restoreContent = function restoreContent() {
|
|
5630
|
-
var _this = this;
|
|
5631
|
-
return new AssetPromise(function(resolve, reject) {
|
|
5632
|
-
var resource = _this.resource;
|
|
5633
|
-
var engine = resource.engine;
|
|
5634
|
-
engine.resourceManager// @ts-ignore
|
|
5635
|
-
._request(_this.url, _this.requestConfig).then(function(buffer) {
|
|
5636
|
-
HDRLoader._setTextureByBuffer(engine, buffer, resource);
|
|
5637
|
-
resolve(resource);
|
|
5638
|
-
}).catch(reject);
|
|
5639
|
-
});
|
|
5640
|
-
};
|
|
5641
|
-
return HDRContentRestorer;
|
|
5642
|
-
}(ContentRestorer);
|
|
5643
|
-
|
|
5644
5273
|
var JSONLoader = /*#__PURE__*/ function(Loader) {
|
|
5645
5274
|
_inherits(JSONLoader, Loader);
|
|
5646
5275
|
function JSONLoader() {
|
|
@@ -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
|
|
|
@@ -6387,28 +6016,20 @@ TextLoader = __decorate([
|
|
|
6387
6016
|
])
|
|
6388
6017
|
], TextLoader);
|
|
6389
6018
|
|
|
6390
|
-
|
|
6391
|
-
|
|
6392
|
-
|
|
6393
|
-
|
|
6394
|
-
|
|
6395
|
-
var
|
|
6396
|
-
|
|
6397
|
-
|
|
6398
|
-
|
|
6399
|
-
|
|
6400
|
-
|
|
6401
|
-
|
|
6402
|
-
|
|
6403
|
-
|
|
6404
|
-
resource.setImageSource(image);
|
|
6405
|
-
resource.generateMipmaps();
|
|
6406
|
-
return resource;
|
|
6407
|
-
});
|
|
6408
|
-
};
|
|
6409
|
-
return Texture2DContentRestorer;
|
|
6410
|
-
}(ContentRestorer);
|
|
6411
|
-
|
|
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
|
+
}
|
|
6412
6033
|
var Texture2DLoader = /*#__PURE__*/ function(Loader) {
|
|
6413
6034
|
_inherits(Texture2DLoader, Loader);
|
|
6414
6035
|
function Texture2DLoader() {
|
|
@@ -6416,36 +6037,48 @@ var Texture2DLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6416
6037
|
}
|
|
6417
6038
|
var _proto = Texture2DLoader.prototype;
|
|
6418
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
|
+
});
|
|
6419
6045
|
return new AssetPromise(function(resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) {
|
|
6420
|
-
var url = item.url;
|
|
6421
|
-
var requestConfig = _extends({}, item, {
|
|
6422
|
-
type: "image"
|
|
6423
|
-
});
|
|
6424
6046
|
resourceManager// @ts-ignore
|
|
6425
|
-
._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(
|
|
6426
|
-
|
|
6427
|
-
|
|
6428
|
-
|
|
6429
|
-
|
|
6430
|
-
|
|
6431
|
-
|
|
6432
|
-
|
|
6433
|
-
|
|
6434
|
-
|
|
6435
|
-
|
|
6436
|
-
|
|
6437
|
-
generateMipmap && texture.generateMipmaps();
|
|
6438
|
-
if (url.indexOf("data:") !== 0) {
|
|
6439
|
-
var index = url.lastIndexOf("/");
|
|
6440
|
-
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);
|
|
6441
6059
|
}
|
|
6442
|
-
|
|
6443
|
-
resolve(texture);
|
|
6444
|
-
}).catch(function(e) {
|
|
6445
|
-
reject(e);
|
|
6446
|
-
});
|
|
6060
|
+
}).catch(reject);
|
|
6447
6061
|
});
|
|
6448
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
|
+
};
|
|
6449
6082
|
return Texture2DLoader;
|
|
6450
6083
|
}(Loader);
|
|
6451
6084
|
Texture2DLoader = __decorate([
|
|
@@ -6453,40 +6086,319 @@ Texture2DLoader = __decorate([
|
|
|
6453
6086
|
"png",
|
|
6454
6087
|
"jpg",
|
|
6455
6088
|
"webp",
|
|
6456
|
-
"jpeg"
|
|
6089
|
+
"jpeg",
|
|
6090
|
+
"tex"
|
|
6457
6091
|
])
|
|
6458
6092
|
], Texture2DLoader);
|
|
6459
|
-
|
|
6460
|
-
|
|
6461
|
-
|
|
6462
|
-
*/ var TextureCubeContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6463
|
-
_inherits(TextureCubeContentRestorer, ContentRestorer);
|
|
6464
|
-
function TextureCubeContentRestorer(resource, urls, requestConfig) {
|
|
6093
|
+
var Texture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6094
|
+
_inherits(Texture2DContentRestorer, ContentRestorer);
|
|
6095
|
+
function Texture2DContentRestorer(resource, url, requestConfig) {
|
|
6465
6096
|
var _this;
|
|
6466
|
-
_this = ContentRestorer.call(this, resource) || this, _this.
|
|
6097
|
+
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
6467
6098
|
return _this;
|
|
6468
6099
|
}
|
|
6469
|
-
var _proto =
|
|
6100
|
+
var _proto = Texture2DContentRestorer.prototype;
|
|
6470
6101
|
_proto.restoreContent = function restoreContent() {
|
|
6471
|
-
var
|
|
6472
|
-
|
|
6473
|
-
|
|
6474
|
-
|
|
6475
|
-
|
|
6476
|
-
|
|
6477
|
-
|
|
6478
|
-
|
|
6479
|
-
|
|
6480
|
-
|
|
6481
|
-
|
|
6482
|
-
|
|
6483
|
-
|
|
6484
|
-
});
|
|
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
|
+
}
|
|
6485
6115
|
});
|
|
6486
6116
|
};
|
|
6487
|
-
return
|
|
6117
|
+
return Texture2DContentRestorer;
|
|
6488
6118
|
}(ContentRestorer);
|
|
6489
6119
|
|
|
6120
|
+
/**
|
|
6121
|
+
* @internal
|
|
6122
|
+
* HDR panorama to cubemap decoder.
|
|
6123
|
+
*/ var HDRDecoder = /*#__PURE__*/ function() {
|
|
6124
|
+
function HDRDecoder() {}
|
|
6125
|
+
HDRDecoder.parseHeader = function parseHeader(uint8array) {
|
|
6126
|
+
var line = this._readStringLine(uint8array, 0);
|
|
6127
|
+
if (line[0] !== "#" || line[1] !== "?") {
|
|
6128
|
+
throw "HDRDecoder: invalid file header";
|
|
6129
|
+
}
|
|
6130
|
+
var endOfHeader = false;
|
|
6131
|
+
var findFormat = false;
|
|
6132
|
+
var lineIndex = 0;
|
|
6133
|
+
do {
|
|
6134
|
+
lineIndex += line.length + 1;
|
|
6135
|
+
line = this._readStringLine(uint8array, lineIndex);
|
|
6136
|
+
if (line === "FORMAT=32-bit_rle_rgbe") findFormat = true;
|
|
6137
|
+
else if (line.length === 0) endOfHeader = true;
|
|
6138
|
+
}while (!endOfHeader);
|
|
6139
|
+
if (!findFormat) {
|
|
6140
|
+
throw "HDRDecoder: unsupported format, expected 32-bit_rle_rgbe";
|
|
6141
|
+
}
|
|
6142
|
+
lineIndex += line.length + 1;
|
|
6143
|
+
line = this._readStringLine(uint8array, lineIndex);
|
|
6144
|
+
var match = /^\-Y (.*) \+X (.*)$/g.exec(line);
|
|
6145
|
+
if (!match || match.length < 3) {
|
|
6146
|
+
throw "HDRDecoder: missing image size, only -Y +X layout is supported";
|
|
6147
|
+
}
|
|
6148
|
+
var width = parseInt(match[2]);
|
|
6149
|
+
var height = parseInt(match[1]);
|
|
6150
|
+
if (width < 8 || width > 0x7fff) {
|
|
6151
|
+
throw "HDRDecoder: unsupported image width, must be between 8 and 32767";
|
|
6152
|
+
}
|
|
6153
|
+
return {
|
|
6154
|
+
height: height,
|
|
6155
|
+
width: width,
|
|
6156
|
+
dataPosition: lineIndex + line.length + 1
|
|
6157
|
+
};
|
|
6158
|
+
};
|
|
6159
|
+
HDRDecoder.decodeFaces = function decodeFaces(bufferArray, header, onFace) {
|
|
6160
|
+
var width = header.width, height = header.height, dataPosition = header.dataPosition;
|
|
6161
|
+
var cubeSize = height >> 1;
|
|
6162
|
+
var pixels = HDRDecoder._readPixels(bufferArray.subarray(dataPosition), width, height);
|
|
6163
|
+
var faces = HDRDecoder._faces;
|
|
6164
|
+
var faceBuffer = new Uint16Array(cubeSize * cubeSize * 4);
|
|
6165
|
+
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6166
|
+
HDRDecoder._createCubemapData(cubeSize, faces[faceIndex], pixels, width, height, faceBuffer);
|
|
6167
|
+
onFace(faceIndex, faceBuffer);
|
|
6168
|
+
}
|
|
6169
|
+
};
|
|
6170
|
+
HDRDecoder._generateFloat2HalfTables = function _generateFloat2HalfTables() {
|
|
6171
|
+
var baseTable = new Uint32Array(512);
|
|
6172
|
+
var shiftTable = new Uint32Array(512);
|
|
6173
|
+
for(var i = 0; i < 256; ++i){
|
|
6174
|
+
var e = i - 127;
|
|
6175
|
+
if (e < -27) {
|
|
6176
|
+
baseTable[i] = 0x0000;
|
|
6177
|
+
baseTable[i | 0x100] = 0x8000;
|
|
6178
|
+
shiftTable[i] = 24;
|
|
6179
|
+
shiftTable[i | 0x100] = 24;
|
|
6180
|
+
} else if (e < -14) {
|
|
6181
|
+
baseTable[i] = 0x0400 >> -e - 14;
|
|
6182
|
+
baseTable[i | 0x100] = 0x0400 >> -e - 14 | 0x8000;
|
|
6183
|
+
shiftTable[i] = -e - 1;
|
|
6184
|
+
shiftTable[i | 0x100] = -e - 1;
|
|
6185
|
+
} else if (e <= 15) {
|
|
6186
|
+
baseTable[i] = e + 15 << 10;
|
|
6187
|
+
baseTable[i | 0x100] = e + 15 << 10 | 0x8000;
|
|
6188
|
+
shiftTable[i] = 13;
|
|
6189
|
+
shiftTable[i | 0x100] = 13;
|
|
6190
|
+
} else if (e < 128) {
|
|
6191
|
+
baseTable[i] = 0x7c00;
|
|
6192
|
+
baseTable[i | 0x100] = 0xfc00;
|
|
6193
|
+
shiftTable[i] = 24;
|
|
6194
|
+
shiftTable[i | 0x100] = 24;
|
|
6195
|
+
} else {
|
|
6196
|
+
baseTable[i] = 0x7c00;
|
|
6197
|
+
baseTable[i | 0x100] = 0xfc00;
|
|
6198
|
+
shiftTable[i] = 13;
|
|
6199
|
+
shiftTable[i | 0x100] = 13;
|
|
6200
|
+
}
|
|
6201
|
+
}
|
|
6202
|
+
return {
|
|
6203
|
+
baseTable: baseTable,
|
|
6204
|
+
shiftTable: shiftTable
|
|
6205
|
+
};
|
|
6206
|
+
};
|
|
6207
|
+
HDRDecoder._createCubemapData = function _createCubemapData(texSize, face, pixels, inputWidth, inputHeight, facePixels) {
|
|
6208
|
+
var invSize = 1 / texSize;
|
|
6209
|
+
var rotDX1X = (face[3] - face[0]) * invSize;
|
|
6210
|
+
var rotDX1Y = (face[4] - face[1]) * invSize;
|
|
6211
|
+
var rotDX1Z = (face[5] - face[2]) * invSize;
|
|
6212
|
+
var rotDX2X = (face[9] - face[6]) * invSize;
|
|
6213
|
+
var rotDX2Y = (face[10] - face[7]) * invSize;
|
|
6214
|
+
var rotDX2Z = (face[11] - face[8]) * invSize;
|
|
6215
|
+
var floatView = HDRDecoder._floatView;
|
|
6216
|
+
var uint32View = HDRDecoder._uint32View;
|
|
6217
|
+
var _HDRDecoder__float2HalfTables = HDRDecoder._float2HalfTables, baseTable = _HDRDecoder__float2HalfTables.baseTable, shiftTable = _HDRDecoder__float2HalfTables.shiftTable;
|
|
6218
|
+
var one = HDRDecoder._one;
|
|
6219
|
+
var fy = 0;
|
|
6220
|
+
for(var y = 0; y < texSize; y++){
|
|
6221
|
+
var xv1X = face[0], xv1Y = face[1], xv1Z = face[2];
|
|
6222
|
+
var xv2X = face[6], xv2Y = face[7], xv2Z = face[8];
|
|
6223
|
+
for(var x = 0; x < texSize; x++){
|
|
6224
|
+
var dirX = xv1X + (xv2X - xv1X) * fy;
|
|
6225
|
+
var dirY = xv1Y + (xv2Y - xv1Y) * fy;
|
|
6226
|
+
var dirZ = xv1Z + (xv2Z - xv1Z) * fy;
|
|
6227
|
+
var invLen = 1 / Math.sqrt(dirX * dirX + dirY * dirY + dirZ * dirZ);
|
|
6228
|
+
dirX *= invLen;
|
|
6229
|
+
dirY *= invLen;
|
|
6230
|
+
dirZ *= invLen;
|
|
6231
|
+
var px = Math.round((Math.atan2(dirZ, dirX) / Math.PI * 0.5 + 0.5) * inputWidth);
|
|
6232
|
+
if (px < 0) px = 0;
|
|
6233
|
+
else if (px >= inputWidth) px = inputWidth - 1;
|
|
6234
|
+
var py = Math.round(Math.acos(dirY) / Math.PI * inputHeight);
|
|
6235
|
+
if (py < 0) py = 0;
|
|
6236
|
+
else if (py >= inputHeight) py = inputHeight - 1;
|
|
6237
|
+
var srcIndex = (inputHeight - py - 1) * inputWidth * 4 + px * 4;
|
|
6238
|
+
var scaleFactor = Math.pow(2, pixels[srcIndex + 3] - 128) / 255;
|
|
6239
|
+
var dstIndex = y * texSize * 4 + x * 4;
|
|
6240
|
+
for(var c = 0; c < 3; c++){
|
|
6241
|
+
floatView[0] = pixels[srcIndex + c] * scaleFactor;
|
|
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
|
+
|
|
6490
6402
|
var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
6491
6403
|
_inherits(TextureCubeLoader, Loader);
|
|
6492
6404
|
function TextureCubeLoader() {
|
|
@@ -6494,6 +6406,44 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6494
6406
|
}
|
|
6495
6407
|
var _proto = TextureCubeLoader.prototype;
|
|
6496
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) {
|
|
6497
6447
|
return new AssetPromise(function(resolve, reject) {
|
|
6498
6448
|
var urls = item.urls;
|
|
6499
6449
|
var requestConfig = _extends({}, item, {
|
|
@@ -6507,7 +6457,7 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6507
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;
|
|
6508
6458
|
var _images_ = images[0], width = _images_.width, height = _images_.height;
|
|
6509
6459
|
if (width !== height) {
|
|
6510
|
-
|
|
6460
|
+
reject(new Error("The cube texture must have the same width and height"));
|
|
6511
6461
|
return;
|
|
6512
6462
|
}
|
|
6513
6463
|
var engine = resourceManager.engine;
|
|
@@ -6520,21 +6470,70 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6520
6470
|
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6521
6471
|
texture.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
|
|
6522
6472
|
}
|
|
6523
|
-
|
|
6524
|
-
resourceManager.addContentRestorer(new
|
|
6473
|
+
texture.generateMipmaps();
|
|
6474
|
+
resourceManager.addContentRestorer(new CubeFaceContentRestorer(texture, urls, requestConfig));
|
|
6525
6475
|
resolve(texture);
|
|
6526
|
-
}).catch(
|
|
6527
|
-
reject(e);
|
|
6528
|
-
});
|
|
6476
|
+
}).catch(reject);
|
|
6529
6477
|
});
|
|
6530
6478
|
};
|
|
6531
6479
|
return TextureCubeLoader;
|
|
6532
6480
|
}(Loader);
|
|
6533
6481
|
TextureCubeLoader = __decorate([
|
|
6534
6482
|
resourceLoader(AssetType.TextureCube, [
|
|
6535
|
-
""
|
|
6483
|
+
"texCube",
|
|
6484
|
+
"hdr"
|
|
6536
6485
|
])
|
|
6537
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);
|
|
6538
6537
|
|
|
6539
6538
|
var AudioLoader = /*#__PURE__*/ function(Loader) {
|
|
6540
6539
|
_inherits(AudioLoader, Loader);
|
|
@@ -6684,7 +6683,7 @@ var PhysicsMaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6684
6683
|
}(Loader);
|
|
6685
6684
|
PhysicsMaterialLoader = __decorate([
|
|
6686
6685
|
resourceLoader(AssetType.PhysicsMaterial, [
|
|
6687
|
-
"
|
|
6686
|
+
"physMat"
|
|
6688
6687
|
])
|
|
6689
6688
|
], PhysicsMaterialLoader);
|
|
6690
6689
|
|
|
@@ -6719,7 +6718,6 @@ var SceneLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6719
6718
|
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
6720
6719
|
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
6721
6720
|
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
6722
|
-
scene.ambientLight.specularTextureDecodeRGBM = true;
|
|
6723
6721
|
if (useCustomAmbient && ambient.customAmbientLight) {
|
|
6724
6722
|
promises.push(// @ts-ignore
|
|
6725
6723
|
resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
|
|
@@ -7356,5 +7354,5 @@ EXT_texture_webp = __decorate([
|
|
|
7356
7354
|
registerGLTFExtension("EXT_texture_webp", GLTFExtensionMode.CreateAndParse)
|
|
7357
7355
|
], EXT_texture_webp);
|
|
7358
7356
|
|
|
7359
|
-
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, HierarchyParser, InterpolableValueType, KTX2Loader, KTX2TargetFormat, MaterialLoaderType, MeshDecoder, ParserContext, ParserType, PrefabResource, ReflectionParser, SceneParser, SpecularMode, Texture2DDecoder, decode, decoder, decoderMap, parseSingleKTX, registerGLTFExtension, registerGLTFParser };
|
|
7360
7358
|
//# sourceMappingURL=module.js.map
|