@onerjs/loaders 8.27.3 → 8.27.4

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.
Files changed (44) hide show
  1. package/SPLAT/sog.d.ts +84 -0
  2. package/SPLAT/sog.js +295 -0
  3. package/SPLAT/sog.js.map +1 -0
  4. package/SPLAT/splatDefs.d.ts +22 -0
  5. package/SPLAT/splatDefs.js +11 -0
  6. package/SPLAT/splatDefs.js.map +1 -0
  7. package/SPLAT/splatFileLoader.d.ts +7 -1
  8. package/SPLAT/splatFileLoader.js +61 -176
  9. package/SPLAT/splatFileLoader.js.map +1 -1
  10. package/SPLAT/splatFileLoader.metadata.d.ts +6 -0
  11. package/SPLAT/splatFileLoader.metadata.js +4 -0
  12. package/SPLAT/splatFileLoader.metadata.js.map +1 -1
  13. package/SPLAT/spz.d.ts +11 -0
  14. package/SPLAT/spz.js +177 -0
  15. package/SPLAT/spz.js.map +1 -0
  16. package/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +3 -0
  17. package/glTF/2.0/Extensions/KHR_materials_clearcoat.js +74 -24
  18. package/glTF/2.0/Extensions/KHR_materials_clearcoat.js.map +1 -1
  19. package/glTF/2.0/Extensions/MSFT_minecraftMesh.js +1 -1
  20. package/glTF/2.0/Extensions/MSFT_minecraftMesh.js.map +1 -1
  21. package/glTF/2.0/Extensions/index.d.ts +0 -3
  22. package/glTF/2.0/Extensions/index.js +0 -3
  23. package/glTF/2.0/Extensions/index.js.map +1 -1
  24. package/glTF/2.0/glTFLoader.d.ts +5 -8
  25. package/glTF/2.0/glTFLoader.js +42 -54
  26. package/glTF/2.0/glTFLoader.js.map +1 -1
  27. package/glTF/2.0/materialLoadingAdapter.d.ts +4 -0
  28. package/glTF/2.0/materialLoadingAdapter.js.map +1 -1
  29. package/glTF/2.0/openPbrMaterialLoadingAdapter.d.ts +4 -0
  30. package/glTF/2.0/openPbrMaterialLoadingAdapter.js +6 -0
  31. package/glTF/2.0/openPbrMaterialLoadingAdapter.js.map +1 -1
  32. package/glTF/2.0/pbrMaterialLoadingAdapter.d.ts +4 -0
  33. package/glTF/2.0/pbrMaterialLoadingAdapter.js +6 -0
  34. package/glTF/2.0/pbrMaterialLoadingAdapter.js.map +1 -1
  35. package/package.json +3 -3
  36. package/glTF/2.0/Extensions/KHR_materials_clearcoat_anisotropy.d.ts +0 -42
  37. package/glTF/2.0/Extensions/KHR_materials_clearcoat_anisotropy.js +0 -66
  38. package/glTF/2.0/Extensions/KHR_materials_clearcoat_anisotropy.js.map +0 -1
  39. package/glTF/2.0/Extensions/KHR_materials_clearcoat_color.d.ts +0 -42
  40. package/glTF/2.0/Extensions/KHR_materials_clearcoat_color.js +0 -62
  41. package/glTF/2.0/Extensions/KHR_materials_clearcoat_color.js.map +0 -1
  42. package/glTF/2.0/Extensions/KHR_materials_clearcoat_darkening.d.ts +0 -43
  43. package/glTF/2.0/Extensions/KHR_materials_clearcoat_darkening.js +0 -62
  44. package/glTF/2.0/Extensions/KHR_materials_clearcoat_darkening.js.map +0 -1
@@ -192,9 +192,7 @@ export class GLTFLoader {
192
192
  this._postSceneLoadActions = new Array();
193
193
  this._materialAdapterCache = new WeakMap();
194
194
  /** @internal */
195
- this._pbrMaterialClass = null;
196
- /** @internal */
197
- this._pbrMaterialAdapterClass = null;
195
+ this._pbrMaterialImpl = null;
198
196
  this._parent = parent;
199
197
  }
200
198
  /**
@@ -206,8 +204,8 @@ export class GLTFLoader {
206
204
  _getOrCreateMaterialAdapter(material) {
207
205
  let adapter = this._materialAdapterCache.get(material);
208
206
  if (!adapter) {
209
- if (this._pbrMaterialAdapterClass) {
210
- adapter = new this._pbrMaterialAdapterClass(material);
207
+ if (this._pbrMaterialImpl) {
208
+ adapter = new this._pbrMaterialImpl.adapterClass(material);
211
209
  }
212
210
  else {
213
211
  throw new Error(`Appropriate material adapter class not found`);
@@ -291,6 +289,21 @@ export class GLTFLoader {
291
289
  this._fileName = fileName;
292
290
  this._allMaterialsDirtyRequired = false;
293
291
  await this._loadExtensionsAsync();
292
+ // NOTE: Explicitly check _pbrMaterialImpl for null as a value of false means don't use PBR materials at all.
293
+ if (!this.parent.skipMaterials && this._pbrMaterialImpl == null) {
294
+ if (this.parent.useOpenPBR) {
295
+ this._pbrMaterialImpl = {
296
+ materialClass: (await import("@onerjs/core/Materials/PBR/openPbrMaterial.js")).OpenPBRMaterial,
297
+ adapterClass: (await import("./openPbrMaterialLoadingAdapter.js")).OpenPBRMaterialLoadingAdapter,
298
+ };
299
+ }
300
+ else {
301
+ this._pbrMaterialImpl = {
302
+ materialClass: (await import("@onerjs/core/Materials/PBR/pbrMaterial.js")).PBRMaterial,
303
+ adapterClass: (await import("./pbrMaterialLoadingAdapter.js")).PBRMaterialLoadingAdapter,
304
+ };
305
+ }
306
+ }
294
307
  const loadingToReadyCounterName = `${GLTFLoaderState[GLTFLoaderState.LOADING]} => ${GLTFLoaderState[GLTFLoaderState.READY]}`;
295
308
  const loadingToCompleteCounterName = `${GLTFLoaderState[GLTFLoaderState.LOADING]} => ${GLTFLoaderState[GLTFLoaderState.COMPLETE]}`;
296
309
  this._parent._startPerformanceCounter(loadingToReadyCounterName);
@@ -849,28 +862,24 @@ export class GLTFLoader {
849
862
  this._babylonScene._blockEntityCollection = false;
850
863
  });
851
864
  }));
852
- const babylonDrawMode = GLTFLoader._GetDrawMode(context, primitive.mode);
853
- if (primitive.material == undefined) {
854
- const babylonMaterial = this._defaultBabylonMaterialData[babylonDrawMode];
855
- if (!babylonMaterial) {
856
- promises.push((async () => {
857
- await this._ensurePbrMaterialClassesAsync();
858
- const created = this._createDefaultMaterial("__GLTFLoader._default", babylonDrawMode);
859
- this._parent.onMaterialLoadedObservable.notifyObservers(created);
860
- this._defaultBabylonMaterialData[babylonDrawMode] = created;
861
- babylonMesh.material = created;
862
- })());
865
+ if (!this.parent.skipMaterials) {
866
+ const babylonDrawMode = GLTFLoader._GetDrawMode(context, primitive.mode);
867
+ if (primitive.material == undefined) {
868
+ let babylonMaterial = this._defaultBabylonMaterialData[babylonDrawMode];
869
+ if (!babylonMaterial) {
870
+ babylonMaterial = this._createDefaultMaterial("__GLTFLoader._default", babylonDrawMode);
871
+ this._parent.onMaterialLoadedObservable.notifyObservers(babylonMaterial);
872
+ this._defaultBabylonMaterialData[babylonDrawMode] = babylonMaterial;
873
+ }
874
+ babylonMesh.material = babylonMaterial;
863
875
  }
864
876
  else {
865
- babylonMesh.material = babylonMaterial;
877
+ const material = ArrayItem.Get(`${context}/material`, this._gltf.materials, primitive.material);
878
+ promises.push(this._loadMaterialAsync(`/materials/${material.index}`, material, babylonMesh, babylonDrawMode, (babylonMaterial) => {
879
+ babylonMesh.material = babylonMaterial;
880
+ }));
866
881
  }
867
882
  }
868
- else if (!this.parent.skipMaterials) {
869
- const material = ArrayItem.Get(`${context}/material`, this._gltf.materials, primitive.material);
870
- promises.push(this._loadMaterialAsync(`/materials/${material.index}`, material, babylonMesh, babylonDrawMode, (babylonMaterial) => {
871
- babylonMesh.material = babylonMaterial;
872
- }));
873
- }
874
883
  promise = Promise.all(promises);
875
884
  if (shouldInstance) {
876
885
  primitive._instanceData = {
@@ -1766,37 +1775,16 @@ export class GLTFLoader {
1766
1775
  /**
1767
1776
  * @internal
1768
1777
  */
1769
- async _ensurePbrMaterialClassesAsync() {
1770
- if (!this._pbrMaterialClass || !this._pbrMaterialAdapterClass) {
1771
- const openpbrExt = this._extensions.find((extension) => extension.name === "KHR_materials_openpbr");
1772
- if (this.parent.useOpenPBR || openpbrExt) {
1773
- const materialAdapterModule = await import("./openPbrMaterialLoadingAdapter.js");
1774
- this._pbrMaterialAdapterClass = materialAdapterModule.OpenPBRMaterialLoadingAdapter;
1775
- const materialModule = await import("@onerjs/core/Materials/PBR/openPbrMaterial.js");
1776
- this._pbrMaterialClass = materialModule.OpenPBRMaterial;
1777
- }
1778
- else {
1779
- const materialAdapterModule = await import("./pbrMaterialLoadingAdapter.js");
1780
- this._pbrMaterialAdapterClass = materialAdapterModule.PBRMaterialLoadingAdapter;
1781
- const materialModule = await import("@onerjs/core/Materials/PBR/pbrMaterial.js");
1782
- this._pbrMaterialClass = materialModule.PBRMaterial;
1783
- }
1784
- }
1785
- }
1786
1778
  async _loadMaterialAsync(context, material, babylonMesh, babylonDrawMode, assign = () => { }) {
1787
1779
  const extensionPromise = this._extensionsLoadMaterialAsync(context, material, babylonMesh, babylonDrawMode, assign);
1788
1780
  if (extensionPromise) {
1789
1781
  return await extensionPromise;
1790
1782
  }
1791
- // Ensure PBR/OpenPBR classes are available before creating materials
1792
- await this._ensurePbrMaterialClassesAsync();
1793
1783
  material._data = material._data || {};
1794
1784
  let babylonData = material._data[babylonDrawMode];
1795
1785
  if (!babylonData) {
1796
1786
  this.logOpen(`${context} ${material.name || ""}`);
1797
1787
  const babylonMaterial = this.createMaterial(context, material, babylonDrawMode);
1798
- // Create the adapter for this material immediately after creation
1799
- this._getOrCreateMaterialAdapter(babylonMaterial);
1800
1788
  babylonData = {
1801
1789
  babylonMaterial: babylonMaterial,
1802
1790
  babylonMeshes: [],
@@ -1821,15 +1809,15 @@ export class GLTFLoader {
1821
1809
  return babylonData.babylonMaterial;
1822
1810
  }
1823
1811
  _createDefaultMaterial(name, babylonDrawMode) {
1824
- if (!this._pbrMaterialClass) {
1812
+ if (!this._pbrMaterialImpl) {
1825
1813
  throw new Error("PBR Material class not loaded");
1826
1814
  }
1827
1815
  this._babylonScene._blockEntityCollection = !!this._assetContainer;
1828
- const babylonMaterial = new this._pbrMaterialClass(name, this._babylonScene);
1816
+ const babylonMaterial = new this._pbrMaterialImpl.materialClass(name, this._babylonScene);
1829
1817
  babylonMaterial._parentContainer = this._assetContainer;
1830
1818
  this._babylonScene._blockEntityCollection = false;
1831
1819
  babylonMaterial.fillMode = babylonDrawMode;
1832
- babylonMaterial.transparencyMode = this._pbrMaterialClass.MATERIAL_OPAQUE;
1820
+ babylonMaterial.transparencyMode = this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE;
1833
1821
  // Create the material adapter and set some default properties.
1834
1822
  // We don't need to wait for the promise to resolve here.
1835
1823
  const adapter = this._getOrCreateMaterialAdapter(babylonMaterial);
@@ -1847,9 +1835,9 @@ export class GLTFLoader {
1847
1835
  * @returns The Babylon material
1848
1836
  */
1849
1837
  createMaterial(context, material, babylonDrawMode) {
1850
- const extensionPromise = this._extensionsCreateMaterial(context, material, babylonDrawMode);
1851
- if (extensionPromise) {
1852
- return extensionPromise;
1838
+ const extensionMaterial = this._extensionsCreateMaterial(context, material, babylonDrawMode);
1839
+ if (extensionMaterial) {
1840
+ return extensionMaterial;
1853
1841
  }
1854
1842
  const name = material.name || `material${material.index}`;
1855
1843
  const babylonMaterial = this._createDefaultMaterial(name, babylonDrawMode);
@@ -1942,7 +1930,7 @@ export class GLTFLoader {
1942
1930
  * @param babylonMaterial The Babylon material
1943
1931
  */
1944
1932
  loadMaterialAlphaProperties(context, material, babylonMaterial) {
1945
- if (!this._pbrMaterialClass) {
1933
+ if (!this._pbrMaterialImpl) {
1946
1934
  throw new Error(`${context}: Material type not supported`);
1947
1935
  }
1948
1936
  const adapter = this._getOrCreateMaterialAdapter(babylonMaterial);
@@ -1950,12 +1938,12 @@ export class GLTFLoader {
1950
1938
  const alphaMode = material.alphaMode || "OPAQUE" /* MaterialAlphaMode.OPAQUE */;
1951
1939
  switch (alphaMode) {
1952
1940
  case "OPAQUE" /* MaterialAlphaMode.OPAQUE */: {
1953
- babylonMaterial.transparencyMode = this._pbrMaterialClass.MATERIAL_OPAQUE;
1941
+ babylonMaterial.transparencyMode = this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE;
1954
1942
  babylonMaterial.alpha = 1.0; // Force alpha to 1.0 for opaque mode.
1955
1943
  break;
1956
1944
  }
1957
1945
  case "MASK" /* MaterialAlphaMode.MASK */: {
1958
- babylonMaterial.transparencyMode = this._pbrMaterialClass.MATERIAL_ALPHATEST;
1946
+ babylonMaterial.transparencyMode = this._pbrMaterialImpl.materialClass.MATERIAL_ALPHATEST;
1959
1947
  adapter.alphaCutOff = material.alphaCutoff == undefined ? 0.5 : material.alphaCutoff;
1960
1948
  if (baseColorTexture) {
1961
1949
  baseColorTexture.hasAlpha = true;
@@ -1963,7 +1951,7 @@ export class GLTFLoader {
1963
1951
  break;
1964
1952
  }
1965
1953
  case "BLEND" /* MaterialAlphaMode.BLEND */: {
1966
- babylonMaterial.transparencyMode = this._pbrMaterialClass.MATERIAL_ALPHABLEND;
1954
+ babylonMaterial.transparencyMode = this._pbrMaterialImpl.materialClass.MATERIAL_ALPHABLEND;
1967
1955
  if (baseColorTexture) {
1968
1956
  baseColorTexture.hasAlpha = true;
1969
1957
  adapter.useAlphaFromBaseColorTexture = true;