@galacean/engine-loader 2.0.0-alpha.5 → 2.0.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +503 -503
- package/dist/main.js.map +1 -1
- package/dist/module.js +505 -505
- 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, TextureFilterMode, TextureCubeFace, ContentRestorer, Font, SystemInfo, Animator, Logger, IndexFormat, VertexElementFormat, GLCapabilityType, TextureFormat, 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
|
|
|
@@ -5306,341 +5271,6 @@ PrefabLoader = __decorate([
|
|
|
5306
5271
|
])
|
|
5307
5272
|
], PrefabLoader);
|
|
5308
5273
|
|
|
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
5274
|
var JSONLoader = /*#__PURE__*/ function(Loader) {
|
|
5645
5275
|
_inherits(JSONLoader, Loader);
|
|
5646
5276
|
function JSONLoader() {
|
|
@@ -6043,7 +5673,7 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6043
5673
|
}(Loader);
|
|
6044
5674
|
MaterialLoader = __decorate([
|
|
6045
5675
|
resourceLoader(AssetType.Material, [
|
|
6046
|
-
"
|
|
5676
|
+
"mat"
|
|
6047
5677
|
])
|
|
6048
5678
|
], MaterialLoader);
|
|
6049
5679
|
|
|
@@ -6166,7 +5796,7 @@ var ProjectLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6166
5796
|
}(Loader);
|
|
6167
5797
|
ProjectLoader = __decorate([
|
|
6168
5798
|
resourceLoader(AssetType.Project, [
|
|
6169
|
-
"
|
|
5799
|
+
"project"
|
|
6170
5800
|
], false)
|
|
6171
5801
|
], ProjectLoader);
|
|
6172
5802
|
|
|
@@ -6387,28 +6017,20 @@ TextLoader = __decorate([
|
|
|
6387
6017
|
])
|
|
6388
6018
|
], TextLoader);
|
|
6389
6019
|
|
|
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
|
-
|
|
6020
|
+
function loadImageFromBuffer(buffer) {
|
|
6021
|
+
return new AssetPromise(function(resolve, reject) {
|
|
6022
|
+
var blob = new Blob([
|
|
6023
|
+
buffer
|
|
6024
|
+
]);
|
|
6025
|
+
var img = new Image();
|
|
6026
|
+
img.onload = function() {
|
|
6027
|
+
URL.revokeObjectURL(img.src);
|
|
6028
|
+
resolve(img);
|
|
6029
|
+
};
|
|
6030
|
+
img.onerror = reject;
|
|
6031
|
+
img.src = URL.createObjectURL(blob);
|
|
6032
|
+
});
|
|
6033
|
+
}
|
|
6412
6034
|
var Texture2DLoader = /*#__PURE__*/ function(Loader) {
|
|
6413
6035
|
_inherits(Texture2DLoader, Loader);
|
|
6414
6036
|
function Texture2DLoader() {
|
|
@@ -6416,36 +6038,48 @@ var Texture2DLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6416
6038
|
}
|
|
6417
6039
|
var _proto = Texture2DLoader.prototype;
|
|
6418
6040
|
_proto.load = function load(item, resourceManager) {
|
|
6041
|
+
var _this = this;
|
|
6042
|
+
var url = item.url;
|
|
6043
|
+
var requestConfig = _extends({}, item, {
|
|
6044
|
+
type: "arraybuffer"
|
|
6045
|
+
});
|
|
6419
6046
|
return new AssetPromise(function(resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) {
|
|
6420
|
-
var url = item.url;
|
|
6421
|
-
var requestConfig = _extends({}, item, {
|
|
6422
|
-
type: "image"
|
|
6423
|
-
});
|
|
6424
6047
|
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);
|
|
6048
|
+
._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(buffer) {
|
|
6049
|
+
if (FileHeader.checkMagic(buffer)) {
|
|
6050
|
+
decode(buffer, resourceManager.engine).then(function(texture) {
|
|
6051
|
+
resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
|
|
6052
|
+
resolve(texture);
|
|
6053
|
+
}, reject);
|
|
6054
|
+
} else {
|
|
6055
|
+
loadImageFromBuffer(buffer).then(function(img) {
|
|
6056
|
+
var texture = _this._createTexture(img, item, resourceManager);
|
|
6057
|
+
resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
|
|
6058
|
+
resolve(texture);
|
|
6059
|
+
}, reject);
|
|
6441
6060
|
}
|
|
6442
|
-
|
|
6443
|
-
resolve(texture);
|
|
6444
|
-
}).catch(function(e) {
|
|
6445
|
-
reject(e);
|
|
6446
|
-
});
|
|
6061
|
+
}).catch(reject);
|
|
6447
6062
|
});
|
|
6448
6063
|
};
|
|
6064
|
+
_proto._createTexture = function _createTexture(img, item, resourceManager) {
|
|
6065
|
+
var _item_params;
|
|
6066
|
+
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;
|
|
6067
|
+
var width = img.width, height = img.height;
|
|
6068
|
+
var engine = resourceManager.engine;
|
|
6069
|
+
var generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(engine, width, height, format, mipmap, isSRGBColorSpace);
|
|
6070
|
+
var texture = new Texture2D(engine, width, height, format, generateMipmap, isSRGBColorSpace);
|
|
6071
|
+
texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
|
|
6072
|
+
texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
|
|
6073
|
+
texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
|
|
6074
|
+
texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
|
|
6075
|
+
texture.setImageSource(img);
|
|
6076
|
+
generateMipmap && texture.generateMipmaps();
|
|
6077
|
+
var url = item.url;
|
|
6078
|
+
if (url.indexOf("data:") !== 0) {
|
|
6079
|
+
texture.name = url.substring(url.lastIndexOf("/") + 1);
|
|
6080
|
+
}
|
|
6081
|
+
return texture;
|
|
6082
|
+
};
|
|
6449
6083
|
return Texture2DLoader;
|
|
6450
6084
|
}(Loader);
|
|
6451
6085
|
Texture2DLoader = __decorate([
|
|
@@ -6453,40 +6087,319 @@ Texture2DLoader = __decorate([
|
|
|
6453
6087
|
"png",
|
|
6454
6088
|
"jpg",
|
|
6455
6089
|
"webp",
|
|
6456
|
-
"jpeg"
|
|
6090
|
+
"jpeg",
|
|
6091
|
+
"tex"
|
|
6457
6092
|
])
|
|
6458
6093
|
], Texture2DLoader);
|
|
6459
|
-
|
|
6460
|
-
|
|
6461
|
-
|
|
6462
|
-
*/ var TextureCubeContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6463
|
-
_inherits(TextureCubeContentRestorer, ContentRestorer);
|
|
6464
|
-
function TextureCubeContentRestorer(resource, urls, requestConfig) {
|
|
6094
|
+
var Texture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6095
|
+
_inherits(Texture2DContentRestorer, ContentRestorer);
|
|
6096
|
+
function Texture2DContentRestorer(resource, url, requestConfig) {
|
|
6465
6097
|
var _this;
|
|
6466
|
-
_this = ContentRestorer.call(this, resource) || this, _this.
|
|
6098
|
+
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
6467
6099
|
return _this;
|
|
6468
6100
|
}
|
|
6469
|
-
var _proto =
|
|
6101
|
+
var _proto = Texture2DContentRestorer.prototype;
|
|
6470
6102
|
_proto.restoreContent = function restoreContent() {
|
|
6471
|
-
var
|
|
6472
|
-
|
|
6473
|
-
|
|
6474
|
-
|
|
6475
|
-
|
|
6476
|
-
|
|
6477
|
-
|
|
6478
|
-
|
|
6479
|
-
|
|
6480
|
-
|
|
6481
|
-
|
|
6482
|
-
|
|
6483
|
-
|
|
6484
|
-
});
|
|
6103
|
+
var texture = this.resource;
|
|
6104
|
+
var engine = texture.engine;
|
|
6105
|
+
return engine.resourceManager// @ts-ignore
|
|
6106
|
+
._request(this.url, this.requestConfig).then(function(buffer) {
|
|
6107
|
+
if (FileHeader.checkMagic(buffer)) {
|
|
6108
|
+
return decode(buffer, engine, texture);
|
|
6109
|
+
} else {
|
|
6110
|
+
return loadImageFromBuffer(buffer).then(function(img) {
|
|
6111
|
+
texture.setImageSource(img);
|
|
6112
|
+
texture.generateMipmaps();
|
|
6113
|
+
return texture;
|
|
6114
|
+
});
|
|
6115
|
+
}
|
|
6485
6116
|
});
|
|
6486
6117
|
};
|
|
6487
|
-
return
|
|
6118
|
+
return Texture2DContentRestorer;
|
|
6488
6119
|
}(ContentRestorer);
|
|
6489
6120
|
|
|
6121
|
+
/**
|
|
6122
|
+
* @internal
|
|
6123
|
+
* HDR panorama to cubemap decoder.
|
|
6124
|
+
*/ var HDRDecoder = /*#__PURE__*/ function() {
|
|
6125
|
+
function HDRDecoder() {}
|
|
6126
|
+
HDRDecoder.parseHeader = function parseHeader(uint8array) {
|
|
6127
|
+
var line = this._readStringLine(uint8array, 0);
|
|
6128
|
+
if (line[0] !== "#" || line[1] !== "?") {
|
|
6129
|
+
throw "HDRDecoder: invalid file header";
|
|
6130
|
+
}
|
|
6131
|
+
var endOfHeader = false;
|
|
6132
|
+
var findFormat = false;
|
|
6133
|
+
var lineIndex = 0;
|
|
6134
|
+
do {
|
|
6135
|
+
lineIndex += line.length + 1;
|
|
6136
|
+
line = this._readStringLine(uint8array, lineIndex);
|
|
6137
|
+
if (line === "FORMAT=32-bit_rle_rgbe") findFormat = true;
|
|
6138
|
+
else if (line.length === 0) endOfHeader = true;
|
|
6139
|
+
}while (!endOfHeader);
|
|
6140
|
+
if (!findFormat) {
|
|
6141
|
+
throw "HDRDecoder: unsupported format, expected 32-bit_rle_rgbe";
|
|
6142
|
+
}
|
|
6143
|
+
lineIndex += line.length + 1;
|
|
6144
|
+
line = this._readStringLine(uint8array, lineIndex);
|
|
6145
|
+
var match = /^\-Y (.*) \+X (.*)$/g.exec(line);
|
|
6146
|
+
if (!match || match.length < 3) {
|
|
6147
|
+
throw "HDRDecoder: missing image size, only -Y +X layout is supported";
|
|
6148
|
+
}
|
|
6149
|
+
var width = parseInt(match[2]);
|
|
6150
|
+
var height = parseInt(match[1]);
|
|
6151
|
+
if (width < 8 || width > 0x7fff) {
|
|
6152
|
+
throw "HDRDecoder: unsupported image width, must be between 8 and 32767";
|
|
6153
|
+
}
|
|
6154
|
+
return {
|
|
6155
|
+
height: height,
|
|
6156
|
+
width: width,
|
|
6157
|
+
dataPosition: lineIndex + line.length + 1
|
|
6158
|
+
};
|
|
6159
|
+
};
|
|
6160
|
+
HDRDecoder.decodeFaces = function decodeFaces(bufferArray, header, onFace) {
|
|
6161
|
+
var width = header.width, height = header.height, dataPosition = header.dataPosition;
|
|
6162
|
+
var cubeSize = height >> 1;
|
|
6163
|
+
var pixels = HDRDecoder._readPixels(bufferArray.subarray(dataPosition), width, height);
|
|
6164
|
+
var faces = HDRDecoder._faces;
|
|
6165
|
+
var faceBuffer = new Uint16Array(cubeSize * cubeSize * 4);
|
|
6166
|
+
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6167
|
+
HDRDecoder._createCubemapData(cubeSize, faces[faceIndex], pixels, width, height, faceBuffer);
|
|
6168
|
+
onFace(faceIndex, faceBuffer);
|
|
6169
|
+
}
|
|
6170
|
+
};
|
|
6171
|
+
HDRDecoder._generateFloat2HalfTables = function _generateFloat2HalfTables() {
|
|
6172
|
+
var baseTable = new Uint32Array(512);
|
|
6173
|
+
var shiftTable = new Uint32Array(512);
|
|
6174
|
+
for(var i = 0; i < 256; ++i){
|
|
6175
|
+
var e = i - 127;
|
|
6176
|
+
if (e < -27) {
|
|
6177
|
+
baseTable[i] = 0x0000;
|
|
6178
|
+
baseTable[i | 0x100] = 0x8000;
|
|
6179
|
+
shiftTable[i] = 24;
|
|
6180
|
+
shiftTable[i | 0x100] = 24;
|
|
6181
|
+
} else if (e < -14) {
|
|
6182
|
+
baseTable[i] = 0x0400 >> -e - 14;
|
|
6183
|
+
baseTable[i | 0x100] = 0x0400 >> -e - 14 | 0x8000;
|
|
6184
|
+
shiftTable[i] = -e - 1;
|
|
6185
|
+
shiftTable[i | 0x100] = -e - 1;
|
|
6186
|
+
} else if (e <= 15) {
|
|
6187
|
+
baseTable[i] = e + 15 << 10;
|
|
6188
|
+
baseTable[i | 0x100] = e + 15 << 10 | 0x8000;
|
|
6189
|
+
shiftTable[i] = 13;
|
|
6190
|
+
shiftTable[i | 0x100] = 13;
|
|
6191
|
+
} else if (e < 128) {
|
|
6192
|
+
baseTable[i] = 0x7c00;
|
|
6193
|
+
baseTable[i | 0x100] = 0xfc00;
|
|
6194
|
+
shiftTable[i] = 24;
|
|
6195
|
+
shiftTable[i | 0x100] = 24;
|
|
6196
|
+
} else {
|
|
6197
|
+
baseTable[i] = 0x7c00;
|
|
6198
|
+
baseTable[i | 0x100] = 0xfc00;
|
|
6199
|
+
shiftTable[i] = 13;
|
|
6200
|
+
shiftTable[i | 0x100] = 13;
|
|
6201
|
+
}
|
|
6202
|
+
}
|
|
6203
|
+
return {
|
|
6204
|
+
baseTable: baseTable,
|
|
6205
|
+
shiftTable: shiftTable
|
|
6206
|
+
};
|
|
6207
|
+
};
|
|
6208
|
+
HDRDecoder._createCubemapData = function _createCubemapData(texSize, face, pixels, inputWidth, inputHeight, facePixels) {
|
|
6209
|
+
var invSize = 1 / texSize;
|
|
6210
|
+
var rotDX1X = (face[3] - face[0]) * invSize;
|
|
6211
|
+
var rotDX1Y = (face[4] - face[1]) * invSize;
|
|
6212
|
+
var rotDX1Z = (face[5] - face[2]) * invSize;
|
|
6213
|
+
var rotDX2X = (face[9] - face[6]) * invSize;
|
|
6214
|
+
var rotDX2Y = (face[10] - face[7]) * invSize;
|
|
6215
|
+
var rotDX2Z = (face[11] - face[8]) * invSize;
|
|
6216
|
+
var floatView = HDRDecoder._floatView;
|
|
6217
|
+
var uint32View = HDRDecoder._uint32View;
|
|
6218
|
+
var _HDRDecoder__float2HalfTables = HDRDecoder._float2HalfTables, baseTable = _HDRDecoder__float2HalfTables.baseTable, shiftTable = _HDRDecoder__float2HalfTables.shiftTable;
|
|
6219
|
+
var one = HDRDecoder._one;
|
|
6220
|
+
var fy = 0;
|
|
6221
|
+
for(var y = 0; y < texSize; y++){
|
|
6222
|
+
var xv1X = face[0], xv1Y = face[1], xv1Z = face[2];
|
|
6223
|
+
var xv2X = face[6], xv2Y = face[7], xv2Z = face[8];
|
|
6224
|
+
for(var x = 0; x < texSize; x++){
|
|
6225
|
+
var dirX = xv1X + (xv2X - xv1X) * fy;
|
|
6226
|
+
var dirY = xv1Y + (xv2Y - xv1Y) * fy;
|
|
6227
|
+
var dirZ = xv1Z + (xv2Z - xv1Z) * fy;
|
|
6228
|
+
var invLen = 1 / Math.sqrt(dirX * dirX + dirY * dirY + dirZ * dirZ);
|
|
6229
|
+
dirX *= invLen;
|
|
6230
|
+
dirY *= invLen;
|
|
6231
|
+
dirZ *= invLen;
|
|
6232
|
+
var px = Math.round((Math.atan2(dirZ, dirX) / Math.PI * 0.5 + 0.5) * inputWidth);
|
|
6233
|
+
if (px < 0) px = 0;
|
|
6234
|
+
else if (px >= inputWidth) px = inputWidth - 1;
|
|
6235
|
+
var py = Math.round(Math.acos(dirY) / Math.PI * inputHeight);
|
|
6236
|
+
if (py < 0) py = 0;
|
|
6237
|
+
else if (py >= inputHeight) py = inputHeight - 1;
|
|
6238
|
+
var srcIndex = (inputHeight - py - 1) * inputWidth * 4 + px * 4;
|
|
6239
|
+
var scaleFactor = Math.pow(2, pixels[srcIndex + 3] - 128) / 255;
|
|
6240
|
+
var dstIndex = y * texSize * 4 + x * 4;
|
|
6241
|
+
for(var c = 0; c < 3; c++){
|
|
6242
|
+
floatView[0] = pixels[srcIndex + c] * scaleFactor;
|
|
6243
|
+
var f = uint32View[0];
|
|
6244
|
+
var e = f >> 23 & 0x1ff;
|
|
6245
|
+
facePixels[dstIndex + c] = baseTable[e] + ((f & 0x007fffff) >> shiftTable[e]);
|
|
6246
|
+
}
|
|
6247
|
+
facePixels[dstIndex + 3] = one;
|
|
6248
|
+
xv1X += rotDX1X;
|
|
6249
|
+
xv1Y += rotDX1Y;
|
|
6250
|
+
xv1Z += rotDX1Z;
|
|
6251
|
+
xv2X += rotDX2X;
|
|
6252
|
+
xv2Y += rotDX2Y;
|
|
6253
|
+
xv2Z += rotDX2Z;
|
|
6254
|
+
}
|
|
6255
|
+
fy += invSize;
|
|
6256
|
+
}
|
|
6257
|
+
};
|
|
6258
|
+
HDRDecoder._readStringLine = function _readStringLine(uint8array, startIndex) {
|
|
6259
|
+
var line = "";
|
|
6260
|
+
for(var i = startIndex, n = uint8array.length; i < n; i++){
|
|
6261
|
+
var character = String.fromCharCode(uint8array[i]);
|
|
6262
|
+
if (character === "\n") break;
|
|
6263
|
+
line += character;
|
|
6264
|
+
}
|
|
6265
|
+
return line;
|
|
6266
|
+
};
|
|
6267
|
+
HDRDecoder._readPixels = function _readPixels(buffer, width, height) {
|
|
6268
|
+
var byteLength = buffer.byteLength;
|
|
6269
|
+
var dataRGBA = new Uint8Array(4 * width * height);
|
|
6270
|
+
var offset = 0;
|
|
6271
|
+
var pos = 0;
|
|
6272
|
+
var ptrEnd = 4 * width;
|
|
6273
|
+
var scanLineBuffer = new Uint8Array(ptrEnd);
|
|
6274
|
+
var numScanLines = height;
|
|
6275
|
+
while(numScanLines > 0 && pos < byteLength){
|
|
6276
|
+
var a = buffer[pos++];
|
|
6277
|
+
var b = buffer[pos++];
|
|
6278
|
+
var c = buffer[pos++];
|
|
6279
|
+
var d = buffer[pos++];
|
|
6280
|
+
if (a !== 2 || b !== 2 || c & 0x80 || width < 8 || width > 32767) return buffer;
|
|
6281
|
+
if ((c << 8 | d) !== width) throw "HDRDecoder: wrong scanline width";
|
|
6282
|
+
var ptr = 0;
|
|
6283
|
+
while(ptr < ptrEnd && pos < byteLength){
|
|
6284
|
+
var count = buffer[pos++];
|
|
6285
|
+
var isEncodedRun = count > 128;
|
|
6286
|
+
if (isEncodedRun) count -= 128;
|
|
6287
|
+
if (count === 0 || ptr + count > ptrEnd) throw "HDRDecoder: bad scanline data";
|
|
6288
|
+
if (isEncodedRun) {
|
|
6289
|
+
var byteValue = buffer[pos++];
|
|
6290
|
+
for(var i = 0; i < count; i++)scanLineBuffer[ptr++] = byteValue;
|
|
6291
|
+
} else {
|
|
6292
|
+
scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);
|
|
6293
|
+
ptr += count;
|
|
6294
|
+
pos += count;
|
|
6295
|
+
}
|
|
6296
|
+
}
|
|
6297
|
+
for(var i1 = 0; i1 < width; i1++, offset += 4){
|
|
6298
|
+
dataRGBA[offset] = scanLineBuffer[i1];
|
|
6299
|
+
dataRGBA[offset + 1] = scanLineBuffer[i1 + width];
|
|
6300
|
+
dataRGBA[offset + 2] = scanLineBuffer[i1 + width * 2];
|
|
6301
|
+
dataRGBA[offset + 3] = scanLineBuffer[i1 + width * 3];
|
|
6302
|
+
}
|
|
6303
|
+
numScanLines--;
|
|
6304
|
+
}
|
|
6305
|
+
return dataRGBA;
|
|
6306
|
+
};
|
|
6307
|
+
return HDRDecoder;
|
|
6308
|
+
}();
|
|
6309
|
+
// Float32 to Float16 lookup tables (http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf)
|
|
6310
|
+
HDRDecoder._float2HalfTables = HDRDecoder._generateFloat2HalfTables();
|
|
6311
|
+
HDRDecoder._floatView = new Float32Array(1);
|
|
6312
|
+
HDRDecoder._uint32View = new Uint32Array(HDRDecoder._floatView.buffer);
|
|
6313
|
+
HDRDecoder._one = 0x3c00 // Half float for 1.0
|
|
6314
|
+
;
|
|
6315
|
+
// prettier-ignore
|
|
6316
|
+
HDRDecoder._faces = [
|
|
6317
|
+
/* +X */ [
|
|
6318
|
+
1,
|
|
6319
|
+
-1,
|
|
6320
|
+
-1,
|
|
6321
|
+
1,
|
|
6322
|
+
-1,
|
|
6323
|
+
1,
|
|
6324
|
+
1,
|
|
6325
|
+
1,
|
|
6326
|
+
-1,
|
|
6327
|
+
1,
|
|
6328
|
+
1,
|
|
6329
|
+
1
|
|
6330
|
+
],
|
|
6331
|
+
/* -X */ [
|
|
6332
|
+
-1,
|
|
6333
|
+
-1,
|
|
6334
|
+
1,
|
|
6335
|
+
-1,
|
|
6336
|
+
-1,
|
|
6337
|
+
-1,
|
|
6338
|
+
-1,
|
|
6339
|
+
1,
|
|
6340
|
+
1,
|
|
6341
|
+
-1,
|
|
6342
|
+
1,
|
|
6343
|
+
-1
|
|
6344
|
+
],
|
|
6345
|
+
/* +Y */ [
|
|
6346
|
+
-1,
|
|
6347
|
+
-1,
|
|
6348
|
+
1,
|
|
6349
|
+
1,
|
|
6350
|
+
-1,
|
|
6351
|
+
1,
|
|
6352
|
+
-1,
|
|
6353
|
+
-1,
|
|
6354
|
+
-1,
|
|
6355
|
+
1,
|
|
6356
|
+
-1,
|
|
6357
|
+
-1
|
|
6358
|
+
],
|
|
6359
|
+
/* -Y */ [
|
|
6360
|
+
-1,
|
|
6361
|
+
1,
|
|
6362
|
+
-1,
|
|
6363
|
+
1,
|
|
6364
|
+
1,
|
|
6365
|
+
-1,
|
|
6366
|
+
-1,
|
|
6367
|
+
1,
|
|
6368
|
+
1,
|
|
6369
|
+
1,
|
|
6370
|
+
1,
|
|
6371
|
+
1
|
|
6372
|
+
],
|
|
6373
|
+
/* +Z */ [
|
|
6374
|
+
-1,
|
|
6375
|
+
-1,
|
|
6376
|
+
-1,
|
|
6377
|
+
1,
|
|
6378
|
+
-1,
|
|
6379
|
+
-1,
|
|
6380
|
+
-1,
|
|
6381
|
+
1,
|
|
6382
|
+
-1,
|
|
6383
|
+
1,
|
|
6384
|
+
1,
|
|
6385
|
+
-1
|
|
6386
|
+
],
|
|
6387
|
+
/* -Z */ [
|
|
6388
|
+
1,
|
|
6389
|
+
-1,
|
|
6390
|
+
1,
|
|
6391
|
+
-1,
|
|
6392
|
+
-1,
|
|
6393
|
+
1,
|
|
6394
|
+
1,
|
|
6395
|
+
1,
|
|
6396
|
+
1,
|
|
6397
|
+
-1,
|
|
6398
|
+
1,
|
|
6399
|
+
1
|
|
6400
|
+
]
|
|
6401
|
+
];
|
|
6402
|
+
|
|
6490
6403
|
var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
6491
6404
|
_inherits(TextureCubeLoader, Loader);
|
|
6492
6405
|
function TextureCubeLoader() {
|
|
@@ -6494,6 +6407,44 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6494
6407
|
}
|
|
6495
6408
|
var _proto = TextureCubeLoader.prototype;
|
|
6496
6409
|
_proto.load = function load(item, resourceManager) {
|
|
6410
|
+
if (item.urls) {
|
|
6411
|
+
return this._loadCubeFaces(item, resourceManager);
|
|
6412
|
+
} else {
|
|
6413
|
+
return this._loadHDR(item, resourceManager);
|
|
6414
|
+
}
|
|
6415
|
+
};
|
|
6416
|
+
_proto._loadHDR = function _loadHDR(item, resourceManager) {
|
|
6417
|
+
return new AssetPromise(function(resolve, reject) {
|
|
6418
|
+
var engine = resourceManager.engine;
|
|
6419
|
+
var url = item.url;
|
|
6420
|
+
var requestConfig = _extends({}, item, {
|
|
6421
|
+
type: "arraybuffer"
|
|
6422
|
+
});
|
|
6423
|
+
resourceManager// @ts-ignore
|
|
6424
|
+
._request(url, requestConfig).then(function(buffer) {
|
|
6425
|
+
if (!SystemInfo.supportsTextureFormat(engine, TextureFormat.R16G16B16A16)) {
|
|
6426
|
+
reject(new Error("TextureCubeLoader: HDR texture requires half float support."));
|
|
6427
|
+
return;
|
|
6428
|
+
}
|
|
6429
|
+
var _item_params;
|
|
6430
|
+
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;
|
|
6431
|
+
var bufferArray = new Uint8Array(buffer);
|
|
6432
|
+
var header = HDRDecoder.parseHeader(bufferArray);
|
|
6433
|
+
var texture = new TextureCube(engine, header.height >> 1, TextureFormat.R16G16B16A16, mipmap, false);
|
|
6434
|
+
HDRDecoder.decodeFaces(bufferArray, header, function(faceIndex, data) {
|
|
6435
|
+
texture.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);
|
|
6436
|
+
});
|
|
6437
|
+
texture.generateMipmaps();
|
|
6438
|
+
texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
|
|
6439
|
+
texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
|
|
6440
|
+
texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
|
|
6441
|
+
texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
|
|
6442
|
+
resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));
|
|
6443
|
+
resolve(texture);
|
|
6444
|
+
}).catch(reject);
|
|
6445
|
+
});
|
|
6446
|
+
};
|
|
6447
|
+
_proto._loadCubeFaces = function _loadCubeFaces(item, resourceManager) {
|
|
6497
6448
|
return new AssetPromise(function(resolve, reject) {
|
|
6498
6449
|
var urls = item.urls;
|
|
6499
6450
|
var requestConfig = _extends({}, item, {
|
|
@@ -6507,7 +6458,7 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6507
6458
|
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
6459
|
var _images_ = images[0], width = _images_.width, height = _images_.height;
|
|
6509
6460
|
if (width !== height) {
|
|
6510
|
-
|
|
6461
|
+
reject(new Error("The cube texture must have the same width and height"));
|
|
6511
6462
|
return;
|
|
6512
6463
|
}
|
|
6513
6464
|
var engine = resourceManager.engine;
|
|
@@ -6520,21 +6471,70 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6520
6471
|
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6521
6472
|
texture.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
|
|
6522
6473
|
}
|
|
6523
|
-
|
|
6524
|
-
resourceManager.addContentRestorer(new
|
|
6474
|
+
texture.generateMipmaps();
|
|
6475
|
+
resourceManager.addContentRestorer(new CubeFaceContentRestorer(texture, urls, requestConfig));
|
|
6525
6476
|
resolve(texture);
|
|
6526
|
-
}).catch(
|
|
6527
|
-
reject(e);
|
|
6528
|
-
});
|
|
6477
|
+
}).catch(reject);
|
|
6529
6478
|
});
|
|
6530
6479
|
};
|
|
6531
6480
|
return TextureCubeLoader;
|
|
6532
6481
|
}(Loader);
|
|
6533
6482
|
TextureCubeLoader = __decorate([
|
|
6534
6483
|
resourceLoader(AssetType.TextureCube, [
|
|
6535
|
-
""
|
|
6484
|
+
"texCube",
|
|
6485
|
+
"hdr"
|
|
6536
6486
|
])
|
|
6537
6487
|
], TextureCubeLoader);
|
|
6488
|
+
var HDRContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6489
|
+
_inherits(HDRContentRestorer, ContentRestorer);
|
|
6490
|
+
function HDRContentRestorer(resource, url, requestConfig) {
|
|
6491
|
+
var _this;
|
|
6492
|
+
_this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
|
|
6493
|
+
return _this;
|
|
6494
|
+
}
|
|
6495
|
+
var _proto = HDRContentRestorer.prototype;
|
|
6496
|
+
_proto.restoreContent = function restoreContent() {
|
|
6497
|
+
var _this = this;
|
|
6498
|
+
return new AssetPromise(function(resolve, reject) {
|
|
6499
|
+
var resource = _this.resource;
|
|
6500
|
+
resource.engine.resourceManager// @ts-ignore
|
|
6501
|
+
._request(_this.url, _this.requestConfig).then(function(buffer) {
|
|
6502
|
+
var bufferArray = new Uint8Array(buffer);
|
|
6503
|
+
HDRDecoder.decodeFaces(bufferArray, HDRDecoder.parseHeader(bufferArray), function(faceIndex, data) {
|
|
6504
|
+
resource.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);
|
|
6505
|
+
});
|
|
6506
|
+
resource.generateMipmaps();
|
|
6507
|
+
resolve(resource);
|
|
6508
|
+
}).catch(reject);
|
|
6509
|
+
});
|
|
6510
|
+
};
|
|
6511
|
+
return HDRContentRestorer;
|
|
6512
|
+
}(ContentRestorer);
|
|
6513
|
+
var CubeFaceContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
|
|
6514
|
+
_inherits(CubeFaceContentRestorer, ContentRestorer);
|
|
6515
|
+
function CubeFaceContentRestorer(resource, urls, requestConfig) {
|
|
6516
|
+
var _this;
|
|
6517
|
+
_this = ContentRestorer.call(this, resource) || this, _this.urls = urls, _this.requestConfig = requestConfig;
|
|
6518
|
+
return _this;
|
|
6519
|
+
}
|
|
6520
|
+
var _proto = CubeFaceContentRestorer.prototype;
|
|
6521
|
+
_proto.restoreContent = function restoreContent() {
|
|
6522
|
+
var _this = this;
|
|
6523
|
+
return new AssetPromise(function(resolve, reject) {
|
|
6524
|
+
Promise.all(_this.urls.map(function(url) {
|
|
6525
|
+
return request(url, _this.requestConfig);
|
|
6526
|
+
})).then(function(images) {
|
|
6527
|
+
var resource = _this.resource;
|
|
6528
|
+
for(var faceIndex = 0; faceIndex < 6; faceIndex++){
|
|
6529
|
+
resource.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
|
|
6530
|
+
}
|
|
6531
|
+
resource.generateMipmaps();
|
|
6532
|
+
resolve(resource);
|
|
6533
|
+
}).catch(reject);
|
|
6534
|
+
});
|
|
6535
|
+
};
|
|
6536
|
+
return CubeFaceContentRestorer;
|
|
6537
|
+
}(ContentRestorer);
|
|
6538
6538
|
|
|
6539
6539
|
var AudioLoader = /*#__PURE__*/ function(Loader) {
|
|
6540
6540
|
_inherits(AudioLoader, Loader);
|
|
@@ -6684,7 +6684,7 @@ var PhysicsMaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
6684
6684
|
}(Loader);
|
|
6685
6685
|
PhysicsMaterialLoader = __decorate([
|
|
6686
6686
|
resourceLoader(AssetType.PhysicsMaterial, [
|
|
6687
|
-
"
|
|
6687
|
+
"physMat"
|
|
6688
6688
|
])
|
|
6689
6689
|
], PhysicsMaterialLoader);
|
|
6690
6690
|
|
|
@@ -7356,5 +7356,5 @@ EXT_texture_webp = __decorate([
|
|
|
7356
7356
|
registerGLTFExtension("EXT_texture_webp", GLTFExtensionMode.CreateAndParse)
|
|
7357
7357
|
], EXT_texture_webp);
|
|
7358
7358
|
|
|
7359
|
-
export { AccessorType, AnimationClipDecoder, BufferInfo, BufferReader,
|
|
7359
|
+
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
7360
|
//# sourceMappingURL=module.js.map
|