@onerjs/loaders 8.26.9 → 8.27.1
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/glTF/2.0/Extensions/KHR_materials_openpbr.d.ts +43 -0
- package/glTF/2.0/Extensions/KHR_materials_openpbr.js +50 -0
- package/glTF/2.0/Extensions/KHR_materials_openpbr.js.map +1 -0
- package/glTF/2.0/Extensions/index.d.ts +1 -0
- package/glTF/2.0/Extensions/index.js +1 -0
- package/glTF/2.0/Extensions/index.js.map +1 -1
- package/glTF/2.0/glTFLoader.d.ts +1 -0
- package/glTF/2.0/glTFLoader.js +34 -22
- package/glTF/2.0/glTFLoader.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Nullable } from "@onerjs/core/types.js";
|
|
2
|
+
import type { Material } from "@onerjs/core/Materials/material.js";
|
|
3
|
+
import type { IMaterial } from "../glTFLoaderInterfaces.js";
|
|
4
|
+
import type { IGLTFLoaderExtension } from "../glTFLoaderExtension.js";
|
|
5
|
+
import { GLTFLoader } from "../glTFLoader.js";
|
|
6
|
+
declare module "../../glTFFileLoader.js" {
|
|
7
|
+
interface GLTFLoaderExtensionOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Defines options for the KHR_materials_openpbr extension.
|
|
10
|
+
*/
|
|
11
|
+
["KHR_materials_openpbr"]: {};
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_openpbr/README.md)
|
|
16
|
+
* [Playground Sample](https://www.babylonjs-playground.com/frame.html#7F7PN6#8)
|
|
17
|
+
*/
|
|
18
|
+
export declare class KHR_materials_openpbr implements IGLTFLoaderExtension {
|
|
19
|
+
/**
|
|
20
|
+
* The name of this extension.
|
|
21
|
+
*/
|
|
22
|
+
readonly name = "KHR_materials_openpbr";
|
|
23
|
+
/**
|
|
24
|
+
* Defines whether this extension is enabled.
|
|
25
|
+
*/
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Defines a number that determines the order the extensions are applied.
|
|
29
|
+
*/
|
|
30
|
+
order: number;
|
|
31
|
+
private _loader;
|
|
32
|
+
/**
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
constructor(loader: GLTFLoader);
|
|
36
|
+
/** @internal */
|
|
37
|
+
dispose(): void;
|
|
38
|
+
/**
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
loadMaterialPropertiesAsync(context: string, material: IMaterial, babylonMaterial: Material): Nullable<Promise<void>>;
|
|
42
|
+
private _loadOpenPBRPropertiesAsync;
|
|
43
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { GLTFLoader } from "../glTFLoader.js";
|
|
2
|
+
import { registerGLTFExtension, unregisterGLTFExtension } from "../glTFLoaderExtensionRegistry.js";
|
|
3
|
+
const NAME = "KHR_materials_openpbr";
|
|
4
|
+
/**
|
|
5
|
+
* [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_openpbr/README.md)
|
|
6
|
+
* [Playground Sample](https://www.babylonjs-playground.com/frame.html#7F7PN6#8)
|
|
7
|
+
*/
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
9
|
+
export class KHR_materials_openpbr {
|
|
10
|
+
/**
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
constructor(loader) {
|
|
14
|
+
/**
|
|
15
|
+
* The name of this extension.
|
|
16
|
+
*/
|
|
17
|
+
this.name = NAME;
|
|
18
|
+
/**
|
|
19
|
+
* Defines a number that determines the order the extensions are applied.
|
|
20
|
+
*/
|
|
21
|
+
this.order = 100;
|
|
22
|
+
this._loader = loader;
|
|
23
|
+
this.enabled = this._loader.isExtensionUsed(NAME);
|
|
24
|
+
}
|
|
25
|
+
/** @internal */
|
|
26
|
+
dispose() {
|
|
27
|
+
this._loader = null;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
33
|
+
loadMaterialPropertiesAsync(context, material, babylonMaterial) {
|
|
34
|
+
return GLTFLoader.LoadExtensionAsync(context, material, this.name, async (extensionContext, extension) => {
|
|
35
|
+
const promises = new Array();
|
|
36
|
+
promises.push(this._loader.loadMaterialPropertiesAsync(context, material, babylonMaterial));
|
|
37
|
+
promises.push(this._loadOpenPBRPropertiesAsync(extensionContext, extension, babylonMaterial));
|
|
38
|
+
await Promise.all(promises);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax
|
|
42
|
+
_loadOpenPBRPropertiesAsync(context, properties, babylonMaterial) {
|
|
43
|
+
const promises = new Array();
|
|
44
|
+
// eslint-disable-next-line github/no-then
|
|
45
|
+
return Promise.all(promises).then(() => { });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
unregisterGLTFExtension(NAME);
|
|
49
|
+
registerGLTFExtension(NAME, true, (loader) => new KHR_materials_openpbr(loader));
|
|
50
|
+
//# sourceMappingURL=KHR_materials_openpbr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KHR_materials_openpbr.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_materials_openpbr.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEhG,MAAM,IAAI,GAAG,uBAAuB,CAAC;AAarC;;;GAGG;AACH,gEAAgE;AAChE,MAAM,OAAO,qBAAqB;IAkB9B;;OAEG;IACH,YAAY,MAAkB;QApB9B;;WAEG;QACa,SAAI,GAAG,IAAI,CAAC;QAO5B;;WAEG;QACI,UAAK,GAAG,GAAG,CAAC;QAQf,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,gBAAgB;IACT,OAAO;QACT,IAAI,CAAC,OAAe,GAAG,IAAI,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,gDAAgD;IACzC,2BAA2B,CAAC,OAAe,EAAE,QAAmB,EAAE,eAAyB;QAC9F,OAAO,UAAU,CAAC,kBAAkB,CAAyB,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE;YAC7H,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAgB,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;YAC5F,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,gBAAgB,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;YAC9F,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,2FAA2F;IACnF,2BAA2B,CAAC,OAAe,EAAE,UAAkC,EAAE,eAAyB;QAC9G,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAgB,CAAC;QAE3C,0CAA0C;QAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChD,CAAC;CACJ;AAED,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAC9B,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC","sourcesContent":["import type { Nullable } from \"core/types\";\r\nimport type { Material } from \"core/Materials/material\";\r\nimport type { IMaterial } from \"../glTFLoaderInterfaces\";\r\nimport type { IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport { GLTFLoader } from \"../glTFLoader\";\r\nimport type { IKHRMaterialsClearcoat } from \"babylonjs-gltf2interface\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\r\n\r\nconst NAME = \"KHR_materials_openpbr\";\r\n\r\ndeclare module \"../../glTFFileLoader\" {\r\n // eslint-disable-next-line jsdoc/require-jsdoc, @typescript-eslint/naming-convention\r\n export interface GLTFLoaderExtensionOptions {\r\n /**\r\n * Defines options for the KHR_materials_openpbr extension.\r\n */\r\n // NOTE: Don't use NAME here as it will break the UMD type declarations.\r\n [\"KHR_materials_openpbr\"]: {};\r\n }\r\n}\r\n\r\n/**\r\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_openpbr/README.md)\r\n * [Playground Sample](https://www.babylonjs-playground.com/frame.html#7F7PN6#8)\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class KHR_materials_openpbr implements IGLTFLoaderExtension {\r\n /**\r\n * The name of this extension.\r\n */\r\n public readonly name = NAME;\r\n\r\n /**\r\n * Defines whether this extension is enabled.\r\n */\r\n public enabled: boolean;\r\n\r\n /**\r\n * Defines a number that determines the order the extensions are applied.\r\n */\r\n public order = 100;\r\n\r\n private _loader: GLTFLoader;\r\n\r\n /**\r\n * @internal\r\n */\r\n constructor(loader: GLTFLoader) {\r\n this._loader = loader;\r\n this.enabled = this._loader.isExtensionUsed(NAME);\r\n }\r\n\r\n /** @internal */\r\n public dispose() {\r\n (this._loader as any) = null;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n // eslint-disable-next-line no-restricted-syntax\r\n public loadMaterialPropertiesAsync(context: string, material: IMaterial, babylonMaterial: Material): Nullable<Promise<void>> {\r\n return GLTFLoader.LoadExtensionAsync<IKHRMaterialsClearcoat>(context, material, this.name, async (extensionContext, extension) => {\r\n const promises = new Array<Promise<any>>();\r\n promises.push(this._loader.loadMaterialPropertiesAsync(context, material, babylonMaterial));\r\n promises.push(this._loadOpenPBRPropertiesAsync(extensionContext, extension, babylonMaterial));\r\n await Promise.all(promises);\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n private _loadOpenPBRPropertiesAsync(context: string, properties: IKHRMaterialsClearcoat, babylonMaterial: Material): Promise<void> {\r\n const promises = new Array<Promise<any>>();\r\n\r\n // eslint-disable-next-line github/no-then\r\n return Promise.all(promises).then(() => {});\r\n }\r\n}\r\n\r\nunregisterGLTFExtension(NAME);\r\nregisterGLTFExtension(NAME, true, (loader) => new KHR_materials_openpbr(loader));\r\n"]}
|
|
@@ -8,6 +8,7 @@ export * from "./EXT_texture_avif.js";
|
|
|
8
8
|
export * from "./EXT_lights_ies.js";
|
|
9
9
|
export * from "./KHR_draco_mesh_compression.js";
|
|
10
10
|
export * from "./KHR_lights_punctual.js";
|
|
11
|
+
export * from "./KHR_materials_openpbr.js";
|
|
11
12
|
export * from "./KHR_materials_pbrSpecularGlossiness.js";
|
|
12
13
|
export * from "./KHR_materials_unlit.js";
|
|
13
14
|
export * from "./KHR_materials_clearcoat.js";
|
|
@@ -9,6 +9,7 @@ export * from "./EXT_texture_avif.js";
|
|
|
9
9
|
export * from "./EXT_lights_ies.js";
|
|
10
10
|
export * from "./KHR_draco_mesh_compression.js";
|
|
11
11
|
export * from "./KHR_lights_punctual.js";
|
|
12
|
+
export * from "./KHR_materials_openpbr.js";
|
|
12
13
|
export * from "./KHR_materials_pbrSpecularGlossiness.js";
|
|
13
14
|
export * from "./KHR_materials_unlit.js";
|
|
14
15
|
export * from "./KHR_materials_clearcoat.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sCAAsC,CAAC;AACrD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./objectModelMapping\";\r\nexport * from \"./EXT_lights_area\";\r\nexport * from \"./EXT_lights_image_based\";\r\nexport * from \"./EXT_mesh_gpu_instancing\";\r\nexport * from \"./EXT_meshopt_compression\";\r\nexport * from \"./EXT_texture_webp\";\r\nexport * from \"./EXT_texture_avif\";\r\nexport * from \"./EXT_lights_ies\";\r\nexport * from \"./KHR_draco_mesh_compression\";\r\nexport * from \"./KHR_lights_punctual\";\r\nexport * from \"./KHR_materials_pbrSpecularGlossiness\";\r\nexport * from \"./KHR_materials_unlit\";\r\nexport * from \"./KHR_materials_clearcoat\";\r\nexport * from \"./KHR_materials_clearcoat_darkening\";\r\nexport * from \"./KHR_materials_clearcoat_color\";\r\nexport * from \"./KHR_materials_clearcoat_anisotropy\";\r\nexport * from \"./KHR_materials_iridescence\";\r\nexport * from \"./KHR_materials_anisotropy\";\r\nexport * from \"./KHR_materials_emissive_strength\";\r\nexport * from \"./KHR_materials_sheen\";\r\nexport * from \"./KHR_materials_specular\";\r\nexport * from \"./KHR_materials_ior\";\r\nexport * from \"./KHR_materials_variants\";\r\nexport * from \"./KHR_materials_transmission\";\r\nexport * from \"./KHR_materials_diffuse_transmission\";\r\nexport * from \"./KHR_materials_volume\";\r\nexport * from \"./KHR_materials_dispersion\";\r\nexport * from \"./KHR_materials_diffuse_roughness\";\r\nexport * from \"./KHR_mesh_quantization\";\r\nexport * from \"./KHR_texture_basisu\";\r\nexport * from \"./KHR_texture_transform\";\r\nexport * from \"./KHR_xmp_json_ld\";\r\nexport * from \"./KHR_animation_pointer\";\r\nexport * from \"./MSFT_audio_emitter\";\r\nexport * from \"./MSFT_lod\";\r\nexport * from \"./MSFT_minecraftMesh\";\r\nexport * from \"./MSFT_sRGBFactors\";\r\nexport * from \"./KHR_interactivity\";\r\nexport * from \"./KHR_node_visibility\";\r\nexport * from \"./KHR_node_selectability\";\r\nexport * from \"./KHR_node_hoverability\";\r\nexport * from \"./ExtrasAsMetadata\";\r\nexport * from \"./KHR_interactivity/index\";\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sCAAsC,CAAC;AACrD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./objectModelMapping\";\r\nexport * from \"./EXT_lights_area\";\r\nexport * from \"./EXT_lights_image_based\";\r\nexport * from \"./EXT_mesh_gpu_instancing\";\r\nexport * from \"./EXT_meshopt_compression\";\r\nexport * from \"./EXT_texture_webp\";\r\nexport * from \"./EXT_texture_avif\";\r\nexport * from \"./EXT_lights_ies\";\r\nexport * from \"./KHR_draco_mesh_compression\";\r\nexport * from \"./KHR_lights_punctual\";\r\nexport * from \"./KHR_materials_openpbr\";\r\nexport * from \"./KHR_materials_pbrSpecularGlossiness\";\r\nexport * from \"./KHR_materials_unlit\";\r\nexport * from \"./KHR_materials_clearcoat\";\r\nexport * from \"./KHR_materials_clearcoat_darkening\";\r\nexport * from \"./KHR_materials_clearcoat_color\";\r\nexport * from \"./KHR_materials_clearcoat_anisotropy\";\r\nexport * from \"./KHR_materials_iridescence\";\r\nexport * from \"./KHR_materials_anisotropy\";\r\nexport * from \"./KHR_materials_emissive_strength\";\r\nexport * from \"./KHR_materials_sheen\";\r\nexport * from \"./KHR_materials_specular\";\r\nexport * from \"./KHR_materials_ior\";\r\nexport * from \"./KHR_materials_variants\";\r\nexport * from \"./KHR_materials_transmission\";\r\nexport * from \"./KHR_materials_diffuse_transmission\";\r\nexport * from \"./KHR_materials_volume\";\r\nexport * from \"./KHR_materials_dispersion\";\r\nexport * from \"./KHR_materials_diffuse_roughness\";\r\nexport * from \"./KHR_mesh_quantization\";\r\nexport * from \"./KHR_texture_basisu\";\r\nexport * from \"./KHR_texture_transform\";\r\nexport * from \"./KHR_xmp_json_ld\";\r\nexport * from \"./KHR_animation_pointer\";\r\nexport * from \"./MSFT_audio_emitter\";\r\nexport * from \"./MSFT_lod\";\r\nexport * from \"./MSFT_minecraftMesh\";\r\nexport * from \"./MSFT_sRGBFactors\";\r\nexport * from \"./KHR_interactivity\";\r\nexport * from \"./KHR_node_visibility\";\r\nexport * from \"./KHR_node_selectability\";\r\nexport * from \"./KHR_node_hoverability\";\r\nexport * from \"./ExtrasAsMetadata\";\r\nexport * from \"./KHR_interactivity/index\";\r\n"]}
|
package/glTF/2.0/glTFLoader.d.ts
CHANGED
|
@@ -291,6 +291,7 @@ export declare class GLTFLoader implements IGLTFLoader {
|
|
|
291
291
|
/**
|
|
292
292
|
* @internal
|
|
293
293
|
*/
|
|
294
|
+
private _ensurePbrMaterialClassesAsync;
|
|
294
295
|
_loadMaterialAsync(context: string, material: IMaterial, babylonMesh: Nullable<Mesh>, babylonDrawMode: number, assign?: (babylonMaterial: Material) => void): Promise<Material>;
|
|
295
296
|
private _createDefaultMaterial;
|
|
296
297
|
/**
|
package/glTF/2.0/glTFLoader.js
CHANGED
|
@@ -291,18 +291,6 @@ export class GLTFLoader {
|
|
|
291
291
|
this._fileName = fileName;
|
|
292
292
|
this._allMaterialsDirtyRequired = false;
|
|
293
293
|
await this._loadExtensionsAsync();
|
|
294
|
-
if (this.parent.useOpenPBR) {
|
|
295
|
-
const materialAdapterModule = await import("./openPbrMaterialLoadingAdapter.js");
|
|
296
|
-
this._pbrMaterialAdapterClass = materialAdapterModule.OpenPBRMaterialLoadingAdapter;
|
|
297
|
-
const materialModule = await import("@onerjs/core/Materials/PBR/openPbrMaterial.js");
|
|
298
|
-
this._pbrMaterialClass = materialModule.OpenPBRMaterial;
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
const materialAdapterModule = await import("./pbrMaterialLoadingAdapter.js");
|
|
302
|
-
this._pbrMaterialAdapterClass = materialAdapterModule.PBRMaterialLoadingAdapter;
|
|
303
|
-
const materialModule = await import("@onerjs/core/Materials/PBR/pbrMaterial.js");
|
|
304
|
-
this._pbrMaterialClass = materialModule.PBRMaterial;
|
|
305
|
-
}
|
|
306
294
|
const loadingToReadyCounterName = `${GLTFLoaderState[GLTFLoaderState.LOADING]} => ${GLTFLoaderState[GLTFLoaderState.READY]}`;
|
|
307
295
|
const loadingToCompleteCounterName = `${GLTFLoaderState[GLTFLoaderState.LOADING]} => ${GLTFLoaderState[GLTFLoaderState.COMPLETE]}`;
|
|
308
296
|
this._parent._startPerformanceCounter(loadingToReadyCounterName);
|
|
@@ -863,13 +851,19 @@ export class GLTFLoader {
|
|
|
863
851
|
}));
|
|
864
852
|
const babylonDrawMode = GLTFLoader._GetDrawMode(context, primitive.mode);
|
|
865
853
|
if (primitive.material == undefined) {
|
|
866
|
-
|
|
854
|
+
const babylonMaterial = this._defaultBabylonMaterialData[babylonDrawMode];
|
|
867
855
|
if (!babylonMaterial) {
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
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
|
+
})());
|
|
863
|
+
}
|
|
864
|
+
else {
|
|
865
|
+
babylonMesh.material = babylonMaterial;
|
|
871
866
|
}
|
|
872
|
-
babylonMesh.material = babylonMaterial;
|
|
873
867
|
}
|
|
874
868
|
else if (!this.parent.skipMaterials) {
|
|
875
869
|
const material = ArrayItem.Get(`${context}/material`, this._gltf.materials, primitive.material);
|
|
@@ -1772,11 +1766,30 @@ export class GLTFLoader {
|
|
|
1772
1766
|
/**
|
|
1773
1767
|
* @internal
|
|
1774
1768
|
*/
|
|
1775
|
-
|
|
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
|
+
async _loadMaterialAsync(context, material, babylonMesh, babylonDrawMode, assign = () => { }) {
|
|
1776
1787
|
const extensionPromise = this._extensionsLoadMaterialAsync(context, material, babylonMesh, babylonDrawMode, assign);
|
|
1777
1788
|
if (extensionPromise) {
|
|
1778
|
-
return extensionPromise;
|
|
1789
|
+
return await extensionPromise;
|
|
1779
1790
|
}
|
|
1791
|
+
// Ensure PBR/OpenPBR classes are available before creating materials
|
|
1792
|
+
await this._ensurePbrMaterialClassesAsync();
|
|
1780
1793
|
material._data = material._data || {};
|
|
1781
1794
|
let babylonData = material._data[babylonDrawMode];
|
|
1782
1795
|
if (!babylonData) {
|
|
@@ -1804,9 +1817,8 @@ export class GLTFLoader {
|
|
|
1804
1817
|
});
|
|
1805
1818
|
}
|
|
1806
1819
|
assign(babylonData.babylonMaterial);
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
});
|
|
1820
|
+
await babylonData.promise;
|
|
1821
|
+
return babylonData.babylonMaterial;
|
|
1810
1822
|
}
|
|
1811
1823
|
_createDefaultMaterial(name, babylonDrawMode) {
|
|
1812
1824
|
if (!this._pbrMaterialClass) {
|