@babylonjs/serializers 9.12.1 → 9.14.0
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/3MF/core/model/pure.d.ts +8 -0
- package/3MF/core/model/pure.js +9 -0
- package/3MF/core/model/pure.js.map +1 -0
- package/3MF/core/pure.d.ts +3 -0
- package/3MF/core/pure.js +5 -0
- package/3MF/core/pure.js.map +1 -0
- package/3MF/core/xml/pure.d.ts +7 -0
- package/3MF/core/xml/pure.js +8 -0
- package/3MF/core/xml/pure.js.map +1 -0
- package/3MF/pure.d.ts +4 -0
- package/3MF/pure.js +6 -0
- package/3MF/pure.js.map +1 -0
- package/BVH/pure.d.ts +2 -0
- package/BVH/pure.js +3 -0
- package/BVH/pure.js.map +1 -0
- package/OBJ/pure.d.ts +2 -0
- package/OBJ/pure.js +3 -0
- package/OBJ/pure.js.map +1 -0
- package/USDZ/pure.d.ts +2 -0
- package/USDZ/pure.js +4 -0
- package/USDZ/pure.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_lights_area.d.ts +3 -37
- package/glTF/2.0/Extensions/EXT_lights_area.js +5 -130
- package/glTF/2.0/Extensions/EXT_lights_area.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_lights_area.pure.d.ts +44 -0
- package/glTF/2.0/Extensions/EXT_lights_area.pure.js +145 -0
- package/glTF/2.0/Extensions/EXT_lights_area.pure.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +4 -38
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +6 -138
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.pure.d.ts +44 -0
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.pure.js +151 -0
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.pure.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_texture_avif.d.ts +3 -15
- package/glTF/2.0/Extensions/EXT_texture_avif.js +5 -38
- package/glTF/2.0/Extensions/EXT_texture_avif.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_texture_avif.pure.d.ts +27 -0
- package/glTF/2.0/Extensions/EXT_texture_avif.pure.js +58 -0
- package/glTF/2.0/Extensions/EXT_texture_avif.pure.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_texture_webp.d.ts +3 -14
- package/glTF/2.0/Extensions/EXT_texture_webp.js +5 -37
- package/glTF/2.0/Extensions/EXT_texture_webp.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_texture_webp.pure.d.ts +26 -0
- package/glTF/2.0/Extensions/EXT_texture_webp.pure.js +57 -0
- package/glTF/2.0/Extensions/EXT_texture_webp.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.d.ts +3 -30
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +5 -128
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.pure.d.ts +37 -0
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.pure.js +143 -0
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_lights_punctual.d.ts +3 -37
- package/glTF/2.0/Extensions/KHR_lights_punctual.js +5 -142
- package/glTF/2.0/Extensions/KHR_lights_punctual.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_lights_punctual.pure.d.ts +44 -0
- package/glTF/2.0/Extensions/KHR_lights_punctual.pure.js +157 -0
- package/glTF/2.0/Extensions/KHR_lights_punctual.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.d.ts +3 -30
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.js +5 -177
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.pure.d.ts +37 -0
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.pure.js +192 -0
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +3 -30
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.js +5 -251
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.pure.d.ts +37 -0
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.pure.js +266 -0
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_coat.d.ts +3 -30
- package/glTF/2.0/Extensions/KHR_materials_coat.js +5 -380
- package/glTF/2.0/Extensions/KHR_materials_coat.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_coat.pure.d.ts +37 -0
- package/glTF/2.0/Extensions/KHR_materials_coat.pure.js +395 -0
- package/glTF/2.0/Extensions/KHR_materials_coat.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.d.ts +3 -22
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js +5 -75
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.pure.d.ts +29 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.pure.js +90 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.d.ts +3 -38
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js +5 -115
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.pure.d.ts +45 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.pure.js +130 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_dispersion.d.ts +3 -29
- package/glTF/2.0/Extensions/KHR_materials_dispersion.js +5 -60
- package/glTF/2.0/Extensions/KHR_materials_dispersion.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_dispersion.pure.d.ts +36 -0
- package/glTF/2.0/Extensions/KHR_materials_dispersion.pure.js +75 -0
- package/glTF/2.0/Extensions/KHR_materials_dispersion.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +3 -25
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +5 -54
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.pure.d.ts +32 -0
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.pure.js +69 -0
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_fuzz.d.ts +3 -30
- package/glTF/2.0/Extensions/KHR_materials_fuzz.js +5 -191
- package/glTF/2.0/Extensions/KHR_materials_fuzz.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_fuzz.pure.d.ts +37 -0
- package/glTF/2.0/Extensions/KHR_materials_fuzz.pure.js +206 -0
- package/glTF/2.0/Extensions/KHR_materials_fuzz.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_ior.d.ts +3 -27
- package/glTF/2.0/Extensions/KHR_materials_ior.js +5 -67
- package/glTF/2.0/Extensions/KHR_materials_ior.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_ior.pure.d.ts +34 -0
- package/glTF/2.0/Extensions/KHR_materials_ior.pure.js +81 -0
- package/glTF/2.0/Extensions/KHR_materials_ior.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_iridescence.d.ts +3 -22
- package/glTF/2.0/Extensions/KHR_materials_iridescence.js +5 -100
- package/glTF/2.0/Extensions/KHR_materials_iridescence.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_iridescence.pure.d.ts +29 -0
- package/glTF/2.0/Extensions/KHR_materials_iridescence.pure.js +115 -0
- package/glTF/2.0/Extensions/KHR_materials_iridescence.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_openpbr.d.ts +3 -25
- package/glTF/2.0/Extensions/KHR_materials_openpbr.js +5 -41
- package/glTF/2.0/Extensions/KHR_materials_openpbr.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_openpbr.pure.d.ts +32 -0
- package/glTF/2.0/Extensions/KHR_materials_openpbr.pure.js +56 -0
- package/glTF/2.0/Extensions/KHR_materials_openpbr.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +3 -22
- package/glTF/2.0/Extensions/KHR_materials_sheen.js +5 -63
- package/glTF/2.0/Extensions/KHR_materials_sheen.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_sheen.pure.d.ts +29 -0
- package/glTF/2.0/Extensions/KHR_materials_sheen.pure.js +78 -0
- package/glTF/2.0/Extensions/KHR_materials_sheen.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_specular.d.ts +3 -39
- package/glTF/2.0/Extensions/KHR_materials_specular.js +5 -123
- package/glTF/2.0/Extensions/KHR_materials_specular.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_specular.pure.d.ts +46 -0
- package/glTF/2.0/Extensions/KHR_materials_specular.pure.js +138 -0
- package/glTF/2.0/Extensions/KHR_materials_specular.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_transmission.d.ts +3 -38
- package/glTF/2.0/Extensions/KHR_materials_transmission.js +5 -145
- package/glTF/2.0/Extensions/KHR_materials_transmission.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_transmission.pure.d.ts +45 -0
- package/glTF/2.0/Extensions/KHR_materials_transmission.pure.js +160 -0
- package/glTF/2.0/Extensions/KHR_materials_transmission.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_unlit.d.ts +3 -18
- package/glTF/2.0/Extensions/KHR_materials_unlit.js +5 -43
- package/glTF/2.0/Extensions/KHR_materials_unlit.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_unlit.pure.d.ts +25 -0
- package/glTF/2.0/Extensions/KHR_materials_unlit.pure.js +58 -0
- package/glTF/2.0/Extensions/KHR_materials_unlit.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_volume.d.ts +3 -38
- package/glTF/2.0/Extensions/KHR_materials_volume.js +5 -169
- package/glTF/2.0/Extensions/KHR_materials_volume.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_volume.pure.d.ts +45 -0
- package/glTF/2.0/Extensions/KHR_materials_volume.pure.js +184 -0
- package/glTF/2.0/Extensions/KHR_materials_volume.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.d.ts +3 -38
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.js +5 -130
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.pure.d.ts +45 -0
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.pure.js +145 -0
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +3 -14
- package/glTF/2.0/Extensions/KHR_texture_basisu.js +5 -37
- package/glTF/2.0/Extensions/KHR_texture_basisu.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_texture_basisu.pure.d.ts +26 -0
- package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js +57 -0
- package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_texture_transform.d.ts +3 -19
- package/glTF/2.0/Extensions/KHR_texture_transform.js +5 -90
- package/glTF/2.0/Extensions/KHR_texture_transform.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_texture_transform.pure.d.ts +26 -0
- package/glTF/2.0/Extensions/KHR_texture_transform.pure.js +105 -0
- package/glTF/2.0/Extensions/KHR_texture_transform.pure.js.map +1 -0
- package/glTF/2.0/Extensions/pure.d.ts +26 -0
- package/glTF/2.0/Extensions/pure.js +27 -0
- package/glTF/2.0/Extensions/pure.js.map +1 -0
- package/glTF/2.0/pure.d.ts +5 -0
- package/glTF/2.0/pure.js +7 -0
- package/glTF/2.0/pure.js.map +1 -0
- package/glTF/pure.d.ts +3 -0
- package/glTF/pure.js +5 -0
- package/glTF/pure.js.map +1 -0
- package/package.json +30 -4
- package/pure.d.ts +7 -0
- package/pure.js +9 -0
- package/pure.js.map +1 -0
- package/stl/pure.d.ts +2 -0
- package/stl/pure.js +3 -0
- package/stl/pure.js.map +1 -0
|
@@ -1,103 +1,8 @@
|
|
|
1
|
-
import { GLTFExporter } from "../glTFExporter.js";
|
|
2
|
-
import { PBRBaseMaterial } from "@babylonjs/core/Materials/PBR/pbrBaseMaterial.js";
|
|
3
|
-
import { OpenPBRMaterial } from "@babylonjs/core/Materials/PBR/openpbrMaterial.js";
|
|
4
|
-
const NAME = "KHR_materials_iridescence";
|
|
5
1
|
/**
|
|
6
|
-
*
|
|
2
|
+
* Re-exports the pure implementation and applies the runtime registration side effect.
|
|
3
|
+
* Import "./KHR_materials_iridescence.pure" for tree-shakeable, side-effect-free usage.
|
|
7
4
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
/** Name of this extension */
|
|
12
|
-
this.name = NAME;
|
|
13
|
-
/** Defines whether this extension is enabled */
|
|
14
|
-
this.enabled = true;
|
|
15
|
-
/** Defines whether this extension is required */
|
|
16
|
-
this.required = false;
|
|
17
|
-
this._wasUsed = false;
|
|
18
|
-
this._exporter = exporter;
|
|
19
|
-
}
|
|
20
|
-
dispose() { }
|
|
21
|
-
/** @internal */
|
|
22
|
-
get wasUsed() {
|
|
23
|
-
return this._wasUsed;
|
|
24
|
-
}
|
|
25
|
-
async postExportMaterialAdditionalTexturesAsync(context, node, babylonMaterial) {
|
|
26
|
-
const additionalTextures = [];
|
|
27
|
-
if (babylonMaterial instanceof PBRBaseMaterial) {
|
|
28
|
-
if (babylonMaterial.iridescence.isEnabled) {
|
|
29
|
-
if (babylonMaterial.iridescence.texture) {
|
|
30
|
-
additionalTextures.push(babylonMaterial.iridescence.texture);
|
|
31
|
-
}
|
|
32
|
-
if (babylonMaterial.iridescence.thicknessTexture && babylonMaterial.iridescence.thicknessTexture !== babylonMaterial.iridescence.texture) {
|
|
33
|
-
additionalTextures.push(babylonMaterial.iridescence.thicknessTexture);
|
|
34
|
-
}
|
|
35
|
-
return additionalTextures;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
else if (babylonMaterial instanceof OpenPBRMaterial) {
|
|
39
|
-
if (babylonMaterial.thinFilmWeight > 0) {
|
|
40
|
-
if (babylonMaterial.thinFilmWeightTexture) {
|
|
41
|
-
additionalTextures.push(babylonMaterial.thinFilmWeightTexture);
|
|
42
|
-
}
|
|
43
|
-
if (babylonMaterial.thinFilmThicknessTexture && babylonMaterial.thinFilmThicknessTexture !== babylonMaterial.thinFilmWeightTexture) {
|
|
44
|
-
additionalTextures.push(babylonMaterial.thinFilmThicknessTexture);
|
|
45
|
-
}
|
|
46
|
-
return additionalTextures;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return [];
|
|
50
|
-
}
|
|
51
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
52
|
-
postExportMaterialAsync(context, node, babylonMaterial) {
|
|
53
|
-
return new Promise((resolve) => {
|
|
54
|
-
if (babylonMaterial instanceof PBRBaseMaterial) {
|
|
55
|
-
if (!babylonMaterial.iridescence.isEnabled) {
|
|
56
|
-
resolve(node);
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
this._wasUsed = true;
|
|
60
|
-
node.extensions = node.extensions || {};
|
|
61
|
-
const iridescenceTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.iridescence.texture);
|
|
62
|
-
const iridescenceThicknessTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.iridescence.thicknessTexture);
|
|
63
|
-
const iridescenceInfo = {
|
|
64
|
-
iridescenceFactor: babylonMaterial.iridescence.intensity,
|
|
65
|
-
iridescenceIor: babylonMaterial.iridescence.indexOfRefraction,
|
|
66
|
-
iridescenceThicknessMinimum: babylonMaterial.iridescence.minimumThickness,
|
|
67
|
-
iridescenceThicknessMaximum: babylonMaterial.iridescence.maximumThickness,
|
|
68
|
-
iridescenceTexture: iridescenceTextureInfo ?? undefined,
|
|
69
|
-
iridescenceThicknessTexture: iridescenceThicknessTextureInfo ?? undefined,
|
|
70
|
-
};
|
|
71
|
-
if (iridescenceInfo.iridescenceTexture !== null || iridescenceInfo.iridescenceThicknessTexture !== null) {
|
|
72
|
-
this._exporter._materialNeedsUVsSet.add(babylonMaterial);
|
|
73
|
-
}
|
|
74
|
-
node.extensions[NAME] = iridescenceInfo;
|
|
75
|
-
}
|
|
76
|
-
else if (babylonMaterial instanceof OpenPBRMaterial) {
|
|
77
|
-
if (babylonMaterial.thinFilmWeight <= 0) {
|
|
78
|
-
resolve(node);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
this._wasUsed = true;
|
|
82
|
-
node.extensions = node.extensions || {};
|
|
83
|
-
const thinFilmWeightTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.thinFilmWeightTexture);
|
|
84
|
-
const thinFilmThicknessTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.thinFilmThicknessTexture);
|
|
85
|
-
const iridescenceInfo = {
|
|
86
|
-
iridescenceFactor: babylonMaterial.thinFilmWeight,
|
|
87
|
-
iridescenceIor: babylonMaterial.thinFilmIor,
|
|
88
|
-
iridescenceThicknessMinimum: babylonMaterial.thinFilmThicknessMin * 1000, // Convert to nanometers for glTF
|
|
89
|
-
iridescenceThicknessMaximum: babylonMaterial.thinFilmThickness * 1000, // Convert to nanometers for glTF
|
|
90
|
-
iridescenceTexture: thinFilmWeightTextureInfo ?? undefined,
|
|
91
|
-
iridescenceThicknessTexture: thinFilmThicknessTextureInfo ?? undefined,
|
|
92
|
-
};
|
|
93
|
-
if (iridescenceInfo.iridescenceTexture !== null || iridescenceInfo.iridescenceThicknessTexture !== null) {
|
|
94
|
-
this._exporter._materialNeedsUVsSet.add(babylonMaterial);
|
|
95
|
-
}
|
|
96
|
-
node.extensions[NAME] = iridescenceInfo;
|
|
97
|
-
}
|
|
98
|
-
resolve(node);
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
GLTFExporter.RegisterExtension(NAME, (exporter) => new KHR_materials_iridescence(exporter));
|
|
5
|
+
export * from "./KHR_materials_iridescence.pure.js";
|
|
6
|
+
import { RegisterKHR_materials_iridescence } from "./KHR_materials_iridescence.pure.js";
|
|
7
|
+
RegisterKHR_materials_iridescence();
|
|
103
8
|
//# sourceMappingURL=KHR_materials_iridescence.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KHR_materials_iridescence.js","sourceRoot":"","sources":["../../../../../../dev/serializers/src/glTF/2.0/Extensions/KHR_materials_iridescence.ts"],"names":[],"mappings":"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","sourcesContent":["import { type IMaterial, type IKHRMaterialsIridescence } from \"babylonjs-gltf2interface\";\r\nimport { type IGLTFExporterExtensionV2 } from \"../glTFExporterExtension\";\r\nimport { GLTFExporter } from \"../glTFExporter\";\r\nimport { type Material } from \"core/Materials/material\";\r\nimport { PBRBaseMaterial } from \"core/Materials/PBR/pbrBaseMaterial\";\r\nimport { OpenPBRMaterial } from \"core/Materials/PBR/openpbrMaterial\";\r\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\n\r\nconst NAME = \"KHR_materials_iridescence\";\r\n\r\n/**\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class KHR_materials_iridescence implements IGLTFExporterExtensionV2 {\r\n /** Name of this extension */\r\n public readonly name = NAME;\r\n\r\n /** Defines whether this extension is enabled */\r\n public enabled = true;\r\n\r\n /** Defines whether this extension is required */\r\n public required = false;\r\n\r\n private _exporter: GLTFExporter;\r\n\r\n private _wasUsed = false;\r\n\r\n constructor(exporter: GLTFExporter) {\r\n this._exporter = exporter;\r\n }\r\n\r\n public dispose() {}\r\n\r\n /** @internal */\r\n public get wasUsed() {\r\n return this._wasUsed;\r\n }\r\n\r\n public async postExportMaterialAdditionalTexturesAsync?(context: string, node: IMaterial, babylonMaterial: Material): Promise<BaseTexture[]> {\r\n const additionalTextures: BaseTexture[] = [];\r\n if (babylonMaterial instanceof PBRBaseMaterial) {\r\n if (babylonMaterial.iridescence.isEnabled) {\r\n if (babylonMaterial.iridescence.texture) {\r\n additionalTextures.push(babylonMaterial.iridescence.texture);\r\n }\r\n if (babylonMaterial.iridescence.thicknessTexture && babylonMaterial.iridescence.thicknessTexture !== babylonMaterial.iridescence.texture) {\r\n additionalTextures.push(babylonMaterial.iridescence.thicknessTexture);\r\n }\r\n return additionalTextures;\r\n }\r\n } else if (babylonMaterial instanceof OpenPBRMaterial) {\r\n if (babylonMaterial.thinFilmWeight > 0) {\r\n if (babylonMaterial.thinFilmWeightTexture) {\r\n additionalTextures.push(babylonMaterial.thinFilmWeightTexture);\r\n }\r\n if (babylonMaterial.thinFilmThicknessTexture && babylonMaterial.thinFilmThicknessTexture !== babylonMaterial.thinFilmWeightTexture) {\r\n additionalTextures.push(babylonMaterial.thinFilmThicknessTexture);\r\n }\r\n return additionalTextures;\r\n }\r\n }\r\n return [];\r\n }\r\n\r\n // eslint-disable-next-line no-restricted-syntax\r\n public postExportMaterialAsync?(context: string, node: IMaterial, babylonMaterial: Material): Promise<IMaterial> {\r\n return new Promise((resolve) => {\r\n if (babylonMaterial instanceof PBRBaseMaterial) {\r\n if (!babylonMaterial.iridescence.isEnabled) {\r\n resolve(node);\r\n return;\r\n }\r\n\r\n this._wasUsed = true;\r\n\r\n node.extensions = node.extensions || {};\r\n\r\n const iridescenceTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.iridescence.texture);\r\n const iridescenceThicknessTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.iridescence.thicknessTexture);\r\n\r\n const iridescenceInfo: IKHRMaterialsIridescence = {\r\n iridescenceFactor: babylonMaterial.iridescence.intensity,\r\n iridescenceIor: babylonMaterial.iridescence.indexOfRefraction,\r\n iridescenceThicknessMinimum: babylonMaterial.iridescence.minimumThickness,\r\n iridescenceThicknessMaximum: babylonMaterial.iridescence.maximumThickness,\r\n\r\n iridescenceTexture: iridescenceTextureInfo ?? undefined,\r\n iridescenceThicknessTexture: iridescenceThicknessTextureInfo ?? undefined,\r\n };\r\n\r\n if (iridescenceInfo.iridescenceTexture !== null || iridescenceInfo.iridescenceThicknessTexture !== null) {\r\n this._exporter._materialNeedsUVsSet.add(babylonMaterial);\r\n }\r\n\r\n node.extensions[NAME] = iridescenceInfo;\r\n } else if (babylonMaterial instanceof OpenPBRMaterial) {\r\n if (babylonMaterial.thinFilmWeight <= 0) {\r\n resolve(node);\r\n return;\r\n }\r\n\r\n this._wasUsed = true;\r\n\r\n node.extensions = node.extensions || {};\r\n\r\n const thinFilmWeightTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.thinFilmWeightTexture);\r\n const thinFilmThicknessTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.thinFilmThicknessTexture);\r\n\r\n const iridescenceInfo: IKHRMaterialsIridescence = {\r\n iridescenceFactor: babylonMaterial.thinFilmWeight,\r\n iridescenceIor: babylonMaterial.thinFilmIor,\r\n iridescenceThicknessMinimum: babylonMaterial.thinFilmThicknessMin * 1000, // Convert to nanometers for glTF\r\n iridescenceThicknessMaximum: babylonMaterial.thinFilmThickness * 1000, // Convert to nanometers for glTF\r\n\r\n iridescenceTexture: thinFilmWeightTextureInfo ?? undefined,\r\n iridescenceThicknessTexture: thinFilmThicknessTextureInfo ?? undefined,\r\n };\r\n\r\n if (iridescenceInfo.iridescenceTexture !== null || iridescenceInfo.iridescenceThicknessTexture !== null) {\r\n this._exporter._materialNeedsUVsSet.add(babylonMaterial);\r\n }\r\n\r\n node.extensions[NAME] = iridescenceInfo;\r\n }\r\n resolve(node);\r\n });\r\n }\r\n}\r\n\r\nGLTFExporter.RegisterExtension(NAME, (exporter) => new KHR_materials_iridescence(exporter));\r\n"]}
|
|
1
|
+
{"version":3,"file":"KHR_materials_iridescence.js","sourceRoot":"","sources":["../../../../../../dev/serializers/src/glTF/2.0/Extensions/KHR_materials_iridescence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,kCAAkC,CAAC;AAEjD,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,iCAAiC,EAAE,CAAC","sourcesContent":["/**\r\n * Re-exports the pure implementation and applies the runtime registration side effect.\r\n * Import \"./KHR_materials_iridescence.pure\" for tree-shakeable, side-effect-free usage.\r\n */\r\nexport * from \"./KHR_materials_iridescence.pure\";\r\n\r\nimport { RegisterKHR_materials_iridescence } from \"./KHR_materials_iridescence.pure\";\r\nRegisterKHR_materials_iridescence();\r\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type IMaterial } from "babylonjs-gltf2interface";
|
|
2
|
+
import { type IGLTFExporterExtensionV2 } from "../glTFExporterExtension.js";
|
|
3
|
+
import { GLTFExporter } from "../glTFExporter.js";
|
|
4
|
+
import { type Material } from "@babylonjs/core/Materials/material.js";
|
|
5
|
+
import { type BaseTexture } from "@babylonjs/core/Materials/Textures/baseTexture.js";
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export declare class KHR_materials_iridescence implements IGLTFExporterExtensionV2 {
|
|
10
|
+
/** Name of this extension */
|
|
11
|
+
readonly name = "KHR_materials_iridescence";
|
|
12
|
+
/** Defines whether this extension is enabled */
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
/** Defines whether this extension is required */
|
|
15
|
+
required: boolean;
|
|
16
|
+
private _exporter;
|
|
17
|
+
private _wasUsed;
|
|
18
|
+
constructor(exporter: GLTFExporter);
|
|
19
|
+
dispose(): void;
|
|
20
|
+
/** @internal */
|
|
21
|
+
get wasUsed(): boolean;
|
|
22
|
+
postExportMaterialAdditionalTexturesAsync?(context: string, node: IMaterial, babylonMaterial: Material): Promise<BaseTexture[]>;
|
|
23
|
+
postExportMaterialAsync?(context: string, node: IMaterial, babylonMaterial: Material): Promise<IMaterial>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Registers the KHR_materials_iridescence glTF serializer extension with the {@link GLTFExporter}.
|
|
27
|
+
* Safe to call multiple times; only the first call has an effect.
|
|
28
|
+
*/
|
|
29
|
+
export declare function RegisterKHR_materials_iridescence(): void;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { GLTFExporter } from "../glTFExporter.js";
|
|
2
|
+
import { PBRBaseMaterial } from "@babylonjs/core/Materials/PBR/pbrBaseMaterial.pure.js";
|
|
3
|
+
import { OpenPBRMaterial } from "@babylonjs/core/Materials/PBR/openpbrMaterial.pure.js";
|
|
4
|
+
const NAME = "KHR_materials_iridescence";
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
9
|
+
export class KHR_materials_iridescence {
|
|
10
|
+
constructor(exporter) {
|
|
11
|
+
/** Name of this extension */
|
|
12
|
+
this.name = NAME;
|
|
13
|
+
/** Defines whether this extension is enabled */
|
|
14
|
+
this.enabled = true;
|
|
15
|
+
/** Defines whether this extension is required */
|
|
16
|
+
this.required = false;
|
|
17
|
+
this._wasUsed = false;
|
|
18
|
+
this._exporter = exporter;
|
|
19
|
+
}
|
|
20
|
+
dispose() { }
|
|
21
|
+
/** @internal */
|
|
22
|
+
get wasUsed() {
|
|
23
|
+
return this._wasUsed;
|
|
24
|
+
}
|
|
25
|
+
async postExportMaterialAdditionalTexturesAsync(context, node, babylonMaterial) {
|
|
26
|
+
const additionalTextures = [];
|
|
27
|
+
if (babylonMaterial instanceof PBRBaseMaterial) {
|
|
28
|
+
if (babylonMaterial.iridescence.isEnabled) {
|
|
29
|
+
if (babylonMaterial.iridescence.texture) {
|
|
30
|
+
additionalTextures.push(babylonMaterial.iridescence.texture);
|
|
31
|
+
}
|
|
32
|
+
if (babylonMaterial.iridescence.thicknessTexture && babylonMaterial.iridescence.thicknessTexture !== babylonMaterial.iridescence.texture) {
|
|
33
|
+
additionalTextures.push(babylonMaterial.iridescence.thicknessTexture);
|
|
34
|
+
}
|
|
35
|
+
return additionalTextures;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else if (babylonMaterial instanceof OpenPBRMaterial) {
|
|
39
|
+
if (babylonMaterial.thinFilmWeight > 0) {
|
|
40
|
+
if (babylonMaterial.thinFilmWeightTexture) {
|
|
41
|
+
additionalTextures.push(babylonMaterial.thinFilmWeightTexture);
|
|
42
|
+
}
|
|
43
|
+
if (babylonMaterial.thinFilmThicknessTexture && babylonMaterial.thinFilmThicknessTexture !== babylonMaterial.thinFilmWeightTexture) {
|
|
44
|
+
additionalTextures.push(babylonMaterial.thinFilmThicknessTexture);
|
|
45
|
+
}
|
|
46
|
+
return additionalTextures;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
52
|
+
postExportMaterialAsync(context, node, babylonMaterial) {
|
|
53
|
+
return new Promise((resolve) => {
|
|
54
|
+
if (babylonMaterial instanceof PBRBaseMaterial) {
|
|
55
|
+
if (!babylonMaterial.iridescence.isEnabled) {
|
|
56
|
+
resolve(node);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
this._wasUsed = true;
|
|
60
|
+
node.extensions = node.extensions || {};
|
|
61
|
+
const iridescenceTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.iridescence.texture);
|
|
62
|
+
const iridescenceThicknessTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.iridescence.thicknessTexture);
|
|
63
|
+
const iridescenceInfo = {
|
|
64
|
+
iridescenceFactor: babylonMaterial.iridescence.intensity,
|
|
65
|
+
iridescenceIor: babylonMaterial.iridescence.indexOfRefraction,
|
|
66
|
+
iridescenceThicknessMinimum: babylonMaterial.iridescence.minimumThickness,
|
|
67
|
+
iridescenceThicknessMaximum: babylonMaterial.iridescence.maximumThickness,
|
|
68
|
+
iridescenceTexture: iridescenceTextureInfo ?? undefined,
|
|
69
|
+
iridescenceThicknessTexture: iridescenceThicknessTextureInfo ?? undefined,
|
|
70
|
+
};
|
|
71
|
+
if (iridescenceInfo.iridescenceTexture !== null || iridescenceInfo.iridescenceThicknessTexture !== null) {
|
|
72
|
+
this._exporter._materialNeedsUVsSet.add(babylonMaterial);
|
|
73
|
+
}
|
|
74
|
+
node.extensions[NAME] = iridescenceInfo;
|
|
75
|
+
}
|
|
76
|
+
else if (babylonMaterial instanceof OpenPBRMaterial) {
|
|
77
|
+
if (babylonMaterial.thinFilmWeight <= 0) {
|
|
78
|
+
resolve(node);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
this._wasUsed = true;
|
|
82
|
+
node.extensions = node.extensions || {};
|
|
83
|
+
const thinFilmWeightTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.thinFilmWeightTexture);
|
|
84
|
+
const thinFilmThicknessTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.thinFilmThicknessTexture);
|
|
85
|
+
const iridescenceInfo = {
|
|
86
|
+
iridescenceFactor: babylonMaterial.thinFilmWeight,
|
|
87
|
+
iridescenceIor: babylonMaterial.thinFilmIor,
|
|
88
|
+
iridescenceThicknessMinimum: babylonMaterial.thinFilmThicknessMin * 1000, // Convert to nanometers for glTF
|
|
89
|
+
iridescenceThicknessMaximum: babylonMaterial.thinFilmThickness * 1000, // Convert to nanometers for glTF
|
|
90
|
+
iridescenceTexture: thinFilmWeightTextureInfo ?? undefined,
|
|
91
|
+
iridescenceThicknessTexture: thinFilmThicknessTextureInfo ?? undefined,
|
|
92
|
+
};
|
|
93
|
+
if (iridescenceInfo.iridescenceTexture !== null || iridescenceInfo.iridescenceThicknessTexture !== null) {
|
|
94
|
+
this._exporter._materialNeedsUVsSet.add(babylonMaterial);
|
|
95
|
+
}
|
|
96
|
+
node.extensions[NAME] = iridescenceInfo;
|
|
97
|
+
}
|
|
98
|
+
resolve(node);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
let _Registered = false;
|
|
103
|
+
/**
|
|
104
|
+
* Registers the KHR_materials_iridescence glTF serializer extension with the {@link GLTFExporter}.
|
|
105
|
+
* Safe to call multiple times; only the first call has an effect.
|
|
106
|
+
*/
|
|
107
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
108
|
+
export function RegisterKHR_materials_iridescence() {
|
|
109
|
+
if (_Registered) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
_Registered = true;
|
|
113
|
+
GLTFExporter.RegisterExtension(NAME, (exporter) => new KHR_materials_iridescence(exporter));
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=KHR_materials_iridescence.pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KHR_materials_iridescence.pure.js","sourceRoot":"","sources":["../../../../../../dev/serializers/src/glTF/2.0/Extensions/KHR_materials_iridescence.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type IMaterial, type IKHRMaterialsIridescence } from \"babylonjs-gltf2interface\";\r\nimport { type IGLTFExporterExtensionV2 } from \"../glTFExporterExtension\";\r\nimport { GLTFExporter } from \"../glTFExporter\";\r\nimport { type Material } from \"core/Materials/material\";\r\nimport { PBRBaseMaterial } from \"core/Materials/PBR/pbrBaseMaterial.pure\";\r\nimport { OpenPBRMaterial } from \"core/Materials/PBR/openpbrMaterial.pure\";\r\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\n\r\nconst NAME = \"KHR_materials_iridescence\";\r\n\r\n/**\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class KHR_materials_iridescence implements IGLTFExporterExtensionV2 {\r\n /** Name of this extension */\r\n public readonly name = NAME;\r\n\r\n /** Defines whether this extension is enabled */\r\n public enabled = true;\r\n\r\n /** Defines whether this extension is required */\r\n public required = false;\r\n\r\n private _exporter: GLTFExporter;\r\n\r\n private _wasUsed = false;\r\n\r\n constructor(exporter: GLTFExporter) {\r\n this._exporter = exporter;\r\n }\r\n\r\n public dispose() {}\r\n\r\n /** @internal */\r\n public get wasUsed() {\r\n return this._wasUsed;\r\n }\r\n\r\n public async postExportMaterialAdditionalTexturesAsync?(context: string, node: IMaterial, babylonMaterial: Material): Promise<BaseTexture[]> {\r\n const additionalTextures: BaseTexture[] = [];\r\n if (babylonMaterial instanceof PBRBaseMaterial) {\r\n if (babylonMaterial.iridescence.isEnabled) {\r\n if (babylonMaterial.iridescence.texture) {\r\n additionalTextures.push(babylonMaterial.iridescence.texture);\r\n }\r\n if (babylonMaterial.iridescence.thicknessTexture && babylonMaterial.iridescence.thicknessTexture !== babylonMaterial.iridescence.texture) {\r\n additionalTextures.push(babylonMaterial.iridescence.thicknessTexture);\r\n }\r\n return additionalTextures;\r\n }\r\n } else if (babylonMaterial instanceof OpenPBRMaterial) {\r\n if (babylonMaterial.thinFilmWeight > 0) {\r\n if (babylonMaterial.thinFilmWeightTexture) {\r\n additionalTextures.push(babylonMaterial.thinFilmWeightTexture);\r\n }\r\n if (babylonMaterial.thinFilmThicknessTexture && babylonMaterial.thinFilmThicknessTexture !== babylonMaterial.thinFilmWeightTexture) {\r\n additionalTextures.push(babylonMaterial.thinFilmThicknessTexture);\r\n }\r\n return additionalTextures;\r\n }\r\n }\r\n return [];\r\n }\r\n\r\n // eslint-disable-next-line no-restricted-syntax\r\n public postExportMaterialAsync?(context: string, node: IMaterial, babylonMaterial: Material): Promise<IMaterial> {\r\n return new Promise((resolve) => {\r\n if (babylonMaterial instanceof PBRBaseMaterial) {\r\n if (!babylonMaterial.iridescence.isEnabled) {\r\n resolve(node);\r\n return;\r\n }\r\n\r\n this._wasUsed = true;\r\n\r\n node.extensions = node.extensions || {};\r\n\r\n const iridescenceTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.iridescence.texture);\r\n const iridescenceThicknessTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.iridescence.thicknessTexture);\r\n\r\n const iridescenceInfo: IKHRMaterialsIridescence = {\r\n iridescenceFactor: babylonMaterial.iridescence.intensity,\r\n iridescenceIor: babylonMaterial.iridescence.indexOfRefraction,\r\n iridescenceThicknessMinimum: babylonMaterial.iridescence.minimumThickness,\r\n iridescenceThicknessMaximum: babylonMaterial.iridescence.maximumThickness,\r\n\r\n iridescenceTexture: iridescenceTextureInfo ?? undefined,\r\n iridescenceThicknessTexture: iridescenceThicknessTextureInfo ?? undefined,\r\n };\r\n\r\n if (iridescenceInfo.iridescenceTexture !== null || iridescenceInfo.iridescenceThicknessTexture !== null) {\r\n this._exporter._materialNeedsUVsSet.add(babylonMaterial);\r\n }\r\n\r\n node.extensions[NAME] = iridescenceInfo;\r\n } else if (babylonMaterial instanceof OpenPBRMaterial) {\r\n if (babylonMaterial.thinFilmWeight <= 0) {\r\n resolve(node);\r\n return;\r\n }\r\n\r\n this._wasUsed = true;\r\n\r\n node.extensions = node.extensions || {};\r\n\r\n const thinFilmWeightTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.thinFilmWeightTexture);\r\n const thinFilmThicknessTextureInfo = this._exporter._materialExporter.getTextureInfo(babylonMaterial.thinFilmThicknessTexture);\r\n\r\n const iridescenceInfo: IKHRMaterialsIridescence = {\r\n iridescenceFactor: babylonMaterial.thinFilmWeight,\r\n iridescenceIor: babylonMaterial.thinFilmIor,\r\n iridescenceThicknessMinimum: babylonMaterial.thinFilmThicknessMin * 1000, // Convert to nanometers for glTF\r\n iridescenceThicknessMaximum: babylonMaterial.thinFilmThickness * 1000, // Convert to nanometers for glTF\r\n\r\n iridescenceTexture: thinFilmWeightTextureInfo ?? undefined,\r\n iridescenceThicknessTexture: thinFilmThicknessTextureInfo ?? undefined,\r\n };\r\n\r\n if (iridescenceInfo.iridescenceTexture !== null || iridescenceInfo.iridescenceThicknessTexture !== null) {\r\n this._exporter._materialNeedsUVsSet.add(babylonMaterial);\r\n }\r\n\r\n node.extensions[NAME] = iridescenceInfo;\r\n }\r\n resolve(node);\r\n });\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the KHR_materials_iridescence glTF serializer extension with the {@link GLTFExporter}.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterKHR_materials_iridescence(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n GLTFExporter.RegisterExtension(NAME, (exporter) => new KHR_materials_iridescence(exporter));\r\n}\r\n"]}
|
|
@@ -1,27 +1,5 @@
|
|
|
1
|
-
import { type IMaterial } from "babylonjs-gltf2interface";
|
|
2
|
-
import { type IGLTFExporterExtensionV2 } from "../glTFExporterExtension.js";
|
|
3
|
-
import { type Material } from "@babylonjs/core/Materials/material.js";
|
|
4
1
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Re-exports the pure implementation and applies the runtime registration side effect.
|
|
3
|
+
* Import "./KHR_materials_openpbr.pure" for tree-shakeable, side-effect-free usage.
|
|
7
4
|
*/
|
|
8
|
-
export
|
|
9
|
-
/** Name of this extension */
|
|
10
|
-
readonly name = "KHR_materials_openpbr";
|
|
11
|
-
/** Defines whether this extension is enabled */
|
|
12
|
-
enabled: boolean;
|
|
13
|
-
/** Defines whether this extension is required */
|
|
14
|
-
required: boolean;
|
|
15
|
-
private _wasUsed;
|
|
16
|
-
dispose(): void;
|
|
17
|
-
/** @internal */
|
|
18
|
-
get wasUsed(): boolean;
|
|
19
|
-
/**
|
|
20
|
-
* After exporting a material
|
|
21
|
-
* @param context GLTF context of the material
|
|
22
|
-
* @param node exported GLTF node
|
|
23
|
-
* @param babylonMaterial corresponding babylon material
|
|
24
|
-
* @returns promise that resolves with the updated node
|
|
25
|
-
*/
|
|
26
|
-
postExportMaterialAsync?(context: string, node: IMaterial, babylonMaterial: Material): Promise<IMaterial>;
|
|
27
|
-
}
|
|
5
|
+
export * from "./KHR_materials_openpbr.pure.js";
|
|
@@ -1,44 +1,8 @@
|
|
|
1
|
-
import { GLTFExporter } from "../glTFExporter.js";
|
|
2
|
-
import { OpenPBRMaterial } from "@babylonjs/core/Materials/PBR/openpbrMaterial.js";
|
|
3
|
-
const NAME = "KHR_materials_openpbr";
|
|
4
1
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Re-exports the pure implementation and applies the runtime registration side effect.
|
|
3
|
+
* Import "./KHR_materials_openpbr.pure" for tree-shakeable, side-effect-free usage.
|
|
7
4
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
/** Name of this extension */
|
|
12
|
-
this.name = NAME;
|
|
13
|
-
/** Defines whether this extension is enabled */
|
|
14
|
-
this.enabled = true;
|
|
15
|
-
/** Defines whether this extension is required */
|
|
16
|
-
this.required = false;
|
|
17
|
-
this._wasUsed = false;
|
|
18
|
-
}
|
|
19
|
-
dispose() { }
|
|
20
|
-
/** @internal */
|
|
21
|
-
get wasUsed() {
|
|
22
|
-
return this._wasUsed;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* After exporting a material
|
|
26
|
-
* @param context GLTF context of the material
|
|
27
|
-
* @param node exported GLTF node
|
|
28
|
-
* @param babylonMaterial corresponding babylon material
|
|
29
|
-
* @returns promise that resolves with the updated node
|
|
30
|
-
*/
|
|
31
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
32
|
-
postExportMaterialAsync(context, node, babylonMaterial) {
|
|
33
|
-
return new Promise((resolve) => {
|
|
34
|
-
if (babylonMaterial instanceof OpenPBRMaterial) {
|
|
35
|
-
this._wasUsed = true;
|
|
36
|
-
node.extensions = node.extensions || {};
|
|
37
|
-
node.extensions[NAME] = {};
|
|
38
|
-
}
|
|
39
|
-
resolve(node);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
GLTFExporter.RegisterExtension(NAME, (exporter) => new KHR_materials_openpbr());
|
|
5
|
+
export * from "./KHR_materials_openpbr.pure.js";
|
|
6
|
+
import { RegisterKHR_materials_openpbr } from "./KHR_materials_openpbr.pure.js";
|
|
7
|
+
RegisterKHR_materials_openpbr();
|
|
44
8
|
//# sourceMappingURL=KHR_materials_openpbr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KHR_materials_openpbr.js","sourceRoot":"","sources":["../../../../../../dev/serializers/src/glTF/2.0/Extensions/KHR_materials_openpbr.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"KHR_materials_openpbr.js","sourceRoot":"","sources":["../../../../../../dev/serializers/src/glTF/2.0/Extensions/KHR_materials_openpbr.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,8BAA8B,CAAC;AAE7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,6BAA6B,EAAE,CAAC","sourcesContent":["/**\r\n * Re-exports the pure implementation and applies the runtime registration side effect.\r\n * Import \"./KHR_materials_openpbr.pure\" for tree-shakeable, side-effect-free usage.\r\n */\r\nexport * from \"./KHR_materials_openpbr.pure\";\r\n\r\nimport { RegisterKHR_materials_openpbr } from \"./KHR_materials_openpbr.pure\";\r\nRegisterKHR_materials_openpbr();\r\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type IMaterial } from "babylonjs-gltf2interface";
|
|
2
|
+
import { type IGLTFExporterExtensionV2 } from "../glTFExporterExtension.js";
|
|
3
|
+
import { type Material } from "@babylonjs/core/Materials/material.js";
|
|
4
|
+
/**
|
|
5
|
+
* TODO: Add link to specification. Specification still being drafted.
|
|
6
|
+
* @experimental
|
|
7
|
+
*/
|
|
8
|
+
export declare class KHR_materials_openpbr implements IGLTFExporterExtensionV2 {
|
|
9
|
+
/** Name of this extension */
|
|
10
|
+
readonly name = "KHR_materials_openpbr";
|
|
11
|
+
/** Defines whether this extension is enabled */
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
/** Defines whether this extension is required */
|
|
14
|
+
required: boolean;
|
|
15
|
+
private _wasUsed;
|
|
16
|
+
dispose(): void;
|
|
17
|
+
/** @internal */
|
|
18
|
+
get wasUsed(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* After exporting a material
|
|
21
|
+
* @param context GLTF context of the material
|
|
22
|
+
* @param node exported GLTF node
|
|
23
|
+
* @param babylonMaterial corresponding babylon material
|
|
24
|
+
* @returns promise that resolves with the updated node
|
|
25
|
+
*/
|
|
26
|
+
postExportMaterialAsync?(context: string, node: IMaterial, babylonMaterial: Material): Promise<IMaterial>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Registers the KHR_materials_openpbr glTF serializer extension with the {@link GLTFExporter}.
|
|
30
|
+
* Safe to call multiple times; only the first call has an effect.
|
|
31
|
+
*/
|
|
32
|
+
export declare function RegisterKHR_materials_openpbr(): void;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { GLTFExporter } from "../glTFExporter.js";
|
|
2
|
+
import { OpenPBRMaterial } from "@babylonjs/core/Materials/PBR/openpbrMaterial.pure.js";
|
|
3
|
+
const NAME = "KHR_materials_openpbr";
|
|
4
|
+
/**
|
|
5
|
+
* TODO: Add link to specification. Specification still being drafted.
|
|
6
|
+
* @experimental
|
|
7
|
+
*/
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
9
|
+
export class KHR_materials_openpbr {
|
|
10
|
+
constructor() {
|
|
11
|
+
/** Name of this extension */
|
|
12
|
+
this.name = NAME;
|
|
13
|
+
/** Defines whether this extension is enabled */
|
|
14
|
+
this.enabled = true;
|
|
15
|
+
/** Defines whether this extension is required */
|
|
16
|
+
this.required = false;
|
|
17
|
+
this._wasUsed = false;
|
|
18
|
+
}
|
|
19
|
+
dispose() { }
|
|
20
|
+
/** @internal */
|
|
21
|
+
get wasUsed() {
|
|
22
|
+
return this._wasUsed;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* After exporting a material
|
|
26
|
+
* @param context GLTF context of the material
|
|
27
|
+
* @param node exported GLTF node
|
|
28
|
+
* @param babylonMaterial corresponding babylon material
|
|
29
|
+
* @returns promise that resolves with the updated node
|
|
30
|
+
*/
|
|
31
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
32
|
+
postExportMaterialAsync(context, node, babylonMaterial) {
|
|
33
|
+
return new Promise((resolve) => {
|
|
34
|
+
if (babylonMaterial instanceof OpenPBRMaterial) {
|
|
35
|
+
this._wasUsed = true;
|
|
36
|
+
node.extensions = node.extensions || {};
|
|
37
|
+
node.extensions[NAME] = {};
|
|
38
|
+
}
|
|
39
|
+
resolve(node);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
let _Registered = false;
|
|
44
|
+
/**
|
|
45
|
+
* Registers the KHR_materials_openpbr glTF serializer extension with the {@link GLTFExporter}.
|
|
46
|
+
* Safe to call multiple times; only the first call has an effect.
|
|
47
|
+
*/
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
49
|
+
export function RegisterKHR_materials_openpbr() {
|
|
50
|
+
if (_Registered) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
_Registered = true;
|
|
54
|
+
GLTFExporter.RegisterExtension(NAME, () => new KHR_materials_openpbr());
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=KHR_materials_openpbr.pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KHR_materials_openpbr.pure.js","sourceRoot":"","sources":["../../../../../../dev/serializers/src/glTF/2.0/Extensions/KHR_materials_openpbr.pure.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE1E,MAAM,IAAI,GAAG,uBAAuB,CAAC;AAErC;;;GAGG;AACH,gEAAgE;AAChE,MAAM,OAAO,qBAAqB;IAAlC;QACI,6BAA6B;QACb,SAAI,GAAG,IAAI,CAAC;QAE5B,gDAAgD;QACzC,YAAO,GAAG,IAAI,CAAC;QAEtB,iDAAiD;QAC1C,aAAQ,GAAG,KAAK,CAAC;QAEhB,aAAQ,GAAG,KAAK,CAAC;IA4B7B,CAAC;IA1BU,OAAO,KAAI,CAAC;IAEnB,gBAAgB;IAChB,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACH,gDAAgD;IACzC,uBAAuB,CAAE,OAAe,EAAE,IAAe,EAAE,eAAyB;QACvF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,eAAe,YAAY,eAAe,EAAE,CAAC;gBAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAErB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;gBACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/B,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAED,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,gEAAgE;AAChE,MAAM,UAAU,6BAA6B;IACzC,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;AAC5E,CAAC","sourcesContent":["import { type IMaterial } from \"babylonjs-gltf2interface\";\r\nimport { type IGLTFExporterExtensionV2 } from \"../glTFExporterExtension\";\r\nimport { GLTFExporter } from \"../glTFExporter\";\r\nimport { type Material } from \"core/Materials/material\";\r\nimport { OpenPBRMaterial } from \"core/Materials/PBR/openpbrMaterial.pure\";\r\n\r\nconst NAME = \"KHR_materials_openpbr\";\r\n\r\n/**\r\n * TODO: Add link to specification. Specification still being drafted.\r\n * @experimental\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class KHR_materials_openpbr implements IGLTFExporterExtensionV2 {\r\n /** Name of this extension */\r\n public readonly name = NAME;\r\n\r\n /** Defines whether this extension is enabled */\r\n public enabled = true;\r\n\r\n /** Defines whether this extension is required */\r\n public required = false;\r\n\r\n private _wasUsed = false;\r\n\r\n public dispose() {}\r\n\r\n /** @internal */\r\n public get wasUsed() {\r\n return this._wasUsed;\r\n }\r\n\r\n /**\r\n * After exporting a material\r\n * @param context GLTF context of the material\r\n * @param node exported GLTF node\r\n * @param babylonMaterial corresponding babylon material\r\n * @returns promise that resolves with the updated node\r\n */\r\n // eslint-disable-next-line no-restricted-syntax\r\n public postExportMaterialAsync?(context: string, node: IMaterial, babylonMaterial: Material): Promise<IMaterial> {\r\n return new Promise((resolve) => {\r\n if (babylonMaterial instanceof OpenPBRMaterial) {\r\n this._wasUsed = true;\r\n\r\n node.extensions = node.extensions || {};\r\n node.extensions[NAME] = {};\r\n }\r\n resolve(node);\r\n });\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the KHR_materials_openpbr glTF serializer extension with the {@link GLTFExporter}.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterKHR_materials_openpbr(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n GLTFExporter.RegisterExtension(NAME, () => new KHR_materials_openpbr());\r\n}\r\n"]}
|
|
@@ -1,24 +1,5 @@
|
|
|
1
|
-
import { type IMaterial } from "babylonjs-gltf2interface";
|
|
2
|
-
import { type IGLTFExporterExtensionV2 } from "../glTFExporterExtension.js";
|
|
3
|
-
import { GLTFExporter } from "../glTFExporter.js";
|
|
4
|
-
import { type Material } from "@babylonjs/core/Materials/material.js";
|
|
5
|
-
import { type BaseTexture } from "@babylonjs/core/Materials/Textures/baseTexture.js";
|
|
6
1
|
/**
|
|
7
|
-
*
|
|
2
|
+
* Re-exports the pure implementation and applies the runtime registration side effect.
|
|
3
|
+
* Import "./KHR_materials_sheen.pure" for tree-shakeable, side-effect-free usage.
|
|
8
4
|
*/
|
|
9
|
-
export
|
|
10
|
-
/** Name of this extension */
|
|
11
|
-
readonly name = "KHR_materials_sheen";
|
|
12
|
-
/** Defines whether this extension is enabled */
|
|
13
|
-
enabled: boolean;
|
|
14
|
-
/** Defines whether this extension is required */
|
|
15
|
-
required: boolean;
|
|
16
|
-
private _wasUsed;
|
|
17
|
-
private _exporter;
|
|
18
|
-
constructor(exporter: GLTFExporter);
|
|
19
|
-
dispose(): void;
|
|
20
|
-
/** @internal */
|
|
21
|
-
get wasUsed(): boolean;
|
|
22
|
-
postExportMaterialAdditionalTexturesAsync(context: string, node: IMaterial, babylonMaterial: Material): Promise<BaseTexture[]>;
|
|
23
|
-
postExportMaterialAsync(context: string, node: IMaterial, babylonMaterial: Material): Promise<IMaterial>;
|
|
24
|
-
}
|
|
5
|
+
export * from "./KHR_materials_sheen.pure.js";
|
|
@@ -1,66 +1,8 @@
|
|
|
1
|
-
import { GLTFExporter } from "../glTFExporter.js";
|
|
2
|
-
import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial.js";
|
|
3
|
-
const NAME = "KHR_materials_sheen";
|
|
4
1
|
/**
|
|
5
|
-
*
|
|
2
|
+
* Re-exports the pure implementation and applies the runtime registration side effect.
|
|
3
|
+
* Import "./KHR_materials_sheen.pure" for tree-shakeable, side-effect-free usage.
|
|
6
4
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
/** Name of this extension */
|
|
11
|
-
this.name = NAME;
|
|
12
|
-
/** Defines whether this extension is enabled */
|
|
13
|
-
this.enabled = true;
|
|
14
|
-
/** Defines whether this extension is required */
|
|
15
|
-
this.required = false;
|
|
16
|
-
this._wasUsed = false;
|
|
17
|
-
this._exporter = exporter;
|
|
18
|
-
}
|
|
19
|
-
dispose() { }
|
|
20
|
-
/** @internal */
|
|
21
|
-
get wasUsed() {
|
|
22
|
-
return this._wasUsed;
|
|
23
|
-
}
|
|
24
|
-
async postExportMaterialAdditionalTexturesAsync(context, node, babylonMaterial) {
|
|
25
|
-
if (babylonMaterial instanceof PBRMaterial) {
|
|
26
|
-
if (babylonMaterial.sheen.isEnabled && babylonMaterial.sheen.texture) {
|
|
27
|
-
return [babylonMaterial.sheen.texture];
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return [];
|
|
31
|
-
}
|
|
32
|
-
async postExportMaterialAsync(context, node, babylonMaterial) {
|
|
33
|
-
return await new Promise((resolve) => {
|
|
34
|
-
if (babylonMaterial instanceof PBRMaterial) {
|
|
35
|
-
if (!babylonMaterial.sheen.isEnabled) {
|
|
36
|
-
resolve(node);
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
this._wasUsed = true;
|
|
40
|
-
if (node.extensions == null) {
|
|
41
|
-
node.extensions = {};
|
|
42
|
-
}
|
|
43
|
-
const sheenInfo = {
|
|
44
|
-
sheenColorFactor: babylonMaterial.sheen.color.asArray(),
|
|
45
|
-
sheenRoughnessFactor: babylonMaterial.sheen.roughness ?? 0,
|
|
46
|
-
};
|
|
47
|
-
if (sheenInfo.sheenColorTexture !== null || sheenInfo.sheenRoughnessTexture !== null) {
|
|
48
|
-
this._exporter._materialNeedsUVsSet.add(babylonMaterial);
|
|
49
|
-
}
|
|
50
|
-
if (babylonMaterial.sheen.texture) {
|
|
51
|
-
sheenInfo.sheenColorTexture = this._exporter._materialExporter.getTextureInfo(babylonMaterial.sheen.texture) ?? undefined;
|
|
52
|
-
}
|
|
53
|
-
if (babylonMaterial.sheen.textureRoughness && !babylonMaterial.sheen.useRoughnessFromMainTexture) {
|
|
54
|
-
sheenInfo.sheenRoughnessTexture = this._exporter._materialExporter.getTextureInfo(babylonMaterial.sheen.textureRoughness) ?? undefined;
|
|
55
|
-
}
|
|
56
|
-
else if (babylonMaterial.sheen.texture && babylonMaterial.sheen.useRoughnessFromMainTexture) {
|
|
57
|
-
sheenInfo.sheenRoughnessTexture = this._exporter._materialExporter.getTextureInfo(babylonMaterial.sheen.texture) ?? undefined;
|
|
58
|
-
}
|
|
59
|
-
node.extensions[NAME] = sheenInfo;
|
|
60
|
-
}
|
|
61
|
-
resolve(node);
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
GLTFExporter.RegisterExtension(NAME, (exporter) => new KHR_materials_sheen(exporter));
|
|
5
|
+
export * from "./KHR_materials_sheen.pure.js";
|
|
6
|
+
import { RegisterKHR_materials_sheen } from "./KHR_materials_sheen.pure.js";
|
|
7
|
+
RegisterKHR_materials_sheen();
|
|
66
8
|
//# sourceMappingURL=KHR_materials_sheen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KHR_materials_sheen.js","sourceRoot":"","sources":["../../../../../../dev/serializers/src/glTF/2.0/Extensions/KHR_materials_sheen.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"KHR_materials_sheen.js","sourceRoot":"","sources":["../../../../../../dev/serializers/src/glTF/2.0/Extensions/KHR_materials_sheen.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,2BAA2B,EAAE,CAAC","sourcesContent":["/**\r\n * Re-exports the pure implementation and applies the runtime registration side effect.\r\n * Import \"./KHR_materials_sheen.pure\" for tree-shakeable, side-effect-free usage.\r\n */\r\nexport * from \"./KHR_materials_sheen.pure\";\r\n\r\nimport { RegisterKHR_materials_sheen } from \"./KHR_materials_sheen.pure\";\r\nRegisterKHR_materials_sheen();\r\n"]}
|