babylonjs-loaders 8.47.0 → 8.47.2

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.
@@ -25,6 +25,7 @@ export { GLTF1, GLTF2 };
25
25
  }
26
26
  declare module "babylonjs-loaders/glTF/glTFValidation" {
27
27
  import * as GLTF2 from "babylonjs-gltf2interface";
28
+ import { Nullable } from "babylonjs/types";
28
29
  /**
29
30
  * Configuration for glTF validation
30
31
  */
@@ -43,6 +44,11 @@ export class GLTFValidation {
43
44
  */
44
45
  static Configuration: IGLTFValidationConfiguration;
45
46
  private static _LoadScriptPromise;
47
+ /**
48
+ * The most recent validation results.
49
+ * @internal - Used for back-compat in Sandbox with Inspector V2.
50
+ */
51
+ static _LastResults: Nullable<GLTF2.IGLTFValidationResults>;
46
52
  /**
47
53
  * Validate a glTF asset using the glTF-Validator.
48
54
  * @param data The JSON of a glTF or the array buffer of a binary glTF
@@ -635,12 +641,14 @@ import { Material } from "babylonjs/Materials/material";
635
641
  import { BaseTexture } from "babylonjs/Materials/Textures/baseTexture";
636
642
  import { Nullable } from "babylonjs/types";
637
643
  import { Color3 } from "babylonjs/Maths/math.color";
644
+ import { Vector3 } from "babylonjs/Maths/math.vector";
638
645
  import { IMaterialLoadingAdapter } from "babylonjs-loaders/glTF/2.0/materialLoadingAdapter";
639
646
  /**
640
647
  * Material Loading Adapter for PBR materials that provides a unified OpenPBR-like interface.
641
648
  */
642
649
  export class PBRMaterialLoadingAdapter implements IMaterialLoadingAdapter {
643
650
  private _material;
651
+ private _extinctionCoefficient;
644
652
  /**
645
653
  * Creates a new instance of the PBRMaterialLoadingAdapter.
646
654
  * @param material - The PBR material to adapt.
@@ -1028,20 +1036,60 @@ export class PBRMaterialLoadingAdapter implements IMaterialLoadingAdapter {
1028
1036
  */
1029
1037
  set transmissionWeightTexture(value: Nullable<BaseTexture>);
1030
1038
  /**
1031
- * Sets the attenuation distance for volume scattering.
1039
+ * Sets the attenuation distance for volume.
1032
1040
  * @param value The attenuation distance value
1033
1041
  */
1034
1042
  set transmissionDepth(value: number);
1043
+ /**
1044
+ * Gets the attenuation distance for volume.
1045
+ * @returns The attenuation distance value
1046
+ */
1047
+ get transmissionDepth(): number;
1035
1048
  /**
1036
1049
  * Sets the attenuation color (mapped to PBR subSurface.tintColor).
1037
1050
  * @param value The attenuation color as a Color3
1038
1051
  */
1039
1052
  set transmissionColor(value: Color3);
1040
1053
  /**
1041
- * Gets the transmission dispersion Abbe number.
1054
+ * Sets the attenuation color (mapped to PBR subSurface.tintColor).
1055
+ * @returns The attenuation color as a Color3
1056
+ */
1057
+ get transmissionColor(): Color3;
1058
+ /**
1059
+ * Sets the transmission scatter coefficient.
1060
+ * @param value The scatter coefficient as a Color3
1061
+ */
1062
+ set transmissionScatter(value: Color3);
1063
+ /**
1064
+ * Sets the transmission scatter coefficient.
1065
+ * @returns The scatter coefficient as a Color3
1066
+ */
1067
+ get transmissionScatter(): Color3;
1068
+ /**
1069
+ * Sets the transmission scattering anisotropy.
1070
+ * @param value The anisotropy intensity value (-1 to 1)
1071
+ */
1072
+ set transmissionScatterAnisotropy(value: number);
1073
+ /**
1074
+ * Sets the transmission dispersion Abbe number.
1042
1075
  * @param value The Abbe number value
1043
1076
  */
1044
1077
  set transmissionDispersionAbbeNumber(value: number);
1078
+ /**
1079
+ * Sets the transmission dispersion scale.
1080
+ * @param value The dispersion scale value
1081
+ */
1082
+ set transmissionDispersionScale(value: number);
1083
+ /**
1084
+ * Gets the refraction background texture
1085
+ * @returns The refraction background texture or null
1086
+ */
1087
+ get refractionBackgroundTexture(): Nullable<BaseTexture>;
1088
+ /**
1089
+ * Sets the refraction background texture
1090
+ * @param value The refraction background texture or null
1091
+ */
1092
+ set refractionBackgroundTexture(value: Nullable<BaseTexture>);
1045
1093
  /**
1046
1094
  * Configures transmission for thin-surface transmission (KHR_materials_transmission).
1047
1095
  * Sets up the material for proper thin-surface transmission behavior.
@@ -1063,6 +1111,15 @@ export class PBRMaterialLoadingAdapter implements IMaterialLoadingAdapter {
1063
1111
  * Configures subsurface properties for PBR material
1064
1112
  */
1065
1113
  configureSubsurface(): void;
1114
+ /**
1115
+ * Sets the extinction coefficient of the volume.
1116
+ * @param value The extinction coefficient as a Vector3
1117
+ */
1118
+ set extinctionCoefficient(value: Vector3);
1119
+ /**
1120
+ * Gets the extinction coefficient of the volume.
1121
+ */
1122
+ get extinctionCoefficient(): Vector3;
1066
1123
  /**
1067
1124
  * Sets the subsurface weight
1068
1125
  */
@@ -1086,6 +1143,50 @@ export class PBRMaterialLoadingAdapter implements IMaterialLoadingAdapter {
1086
1143
  * @param value The subsurface tint texture or null
1087
1144
  */
1088
1145
  set subsurfaceColorTexture(value: Nullable<BaseTexture>);
1146
+ /**
1147
+ * Sets the surface tint of the material (when using subsurface scattering)
1148
+ */
1149
+ set subsurfaceConstantTint(value: Color3);
1150
+ /**
1151
+ * Gets the subsurface constant tint (when using subsurface scattering)
1152
+ * @returns The subsurface constant tint as a Color3
1153
+ */
1154
+ get subsurfaceConstantTint(): Color3;
1155
+ /**
1156
+ * Sets the subsurface constant tint texture (when using subsurface scattering)
1157
+ * @param value The subsurface constant tint texture or null
1158
+ */
1159
+ set subsurfaceConstantTintTexture(value: Nullable<BaseTexture>);
1160
+ /**
1161
+ * Gets the subsurface radius (used for subsurface scattering)
1162
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
1163
+ * @returns The subsurface radius as a Color3
1164
+ */
1165
+ get subsurfaceRadius(): number;
1166
+ /**
1167
+ * Sets the subsurface radius (used for subsurface scattering)
1168
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
1169
+ * @param value The subsurface radius as a number
1170
+ */
1171
+ set subsurfaceRadius(value: number);
1172
+ /**
1173
+ * Gets the subsurface radius scale (used for subsurface scattering)
1174
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
1175
+ * @returns The subsurface radius scale as a Color3
1176
+ */
1177
+ get subsurfaceRadiusScale(): Color3;
1178
+ /**
1179
+ * Sets the subsurface radius scale (used for subsurface scattering)
1180
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
1181
+ * @param value The subsurface radius scale as a Color3
1182
+ */
1183
+ set subsurfaceRadiusScale(value: Color3);
1184
+ /**
1185
+ * Sets the subsurface scattering anisotropy.
1186
+ * Note: PBRMaterial does not have a direct equivalent, so this is a no-op.
1187
+ * @param value The anisotropy intensity value (ignored for PBR)
1188
+ */
1189
+ set subsurfaceScatterAnisotropy(value: number);
1089
1190
  /**
1090
1191
  * Configures sheen for PBR material.
1091
1192
  * Enables sheen and sets up proper configuration.
@@ -1191,12 +1292,6 @@ export class PBRMaterialLoadingAdapter implements IMaterialLoadingAdapter {
1191
1292
  * @param value The iridescence thickness texture or null
1192
1293
  */
1193
1294
  set thinFilmThicknessTexture(value: Nullable<BaseTexture>);
1194
- /**
1195
- * Sets the transmission dispersion value.
1196
- * Note: PBR doesn't have direct dispersion support, so this stores it as metadata.
1197
- * @param value The dispersion value (stored as metadata)
1198
- */
1199
- set transmissionDispersion(value: number);
1200
1295
  /**
1201
1296
  * Sets whether the material is unlit.
1202
1297
  * @param value True to make the material unlit
@@ -1255,11 +1350,13 @@ import { BaseTexture } from "babylonjs/Materials/Textures/baseTexture";
1255
1350
  import { Nullable } from "babylonjs/types";
1256
1351
  import { Color3 } from "babylonjs/Maths/math.color";
1257
1352
  import { IMaterialLoadingAdapter } from "babylonjs-loaders/glTF/2.0/materialLoadingAdapter";
1353
+ import { Vector3 } from "babylonjs/Maths/math.vector";
1258
1354
  /**
1259
1355
  * Material Loading Adapter for OpenPBR materials that provides a unified OpenPBR-like interface.
1260
1356
  */
1261
1357
  export class OpenPBRMaterialLoadingAdapter implements IMaterialLoadingAdapter {
1262
1358
  private _material;
1359
+ private _extinctionCoefficient;
1263
1360
  /**
1264
1361
  * Creates a new instance of the OpenPBRMaterialLoadingAdapter.
1265
1362
  * @param material - The OpenPBR material to adapt.
@@ -1622,55 +1719,87 @@ export class OpenPBRMaterialLoadingAdapter implements IMaterialLoadingAdapter {
1622
1719
  * @returns Currently returns null as coat anisotropy is not yet available
1623
1720
  */
1624
1721
  get geometryCoatTangentTexture(): Nullable<BaseTexture>;
1722
+ /**
1723
+ * Configures transmission for OpenPBR material.
1724
+ */
1725
+ configureTransmission(): void;
1625
1726
  /**
1626
1727
  * Sets the transmission weight.
1627
- * TODO: Implementation pending OpenPBR transmission feature availability.
1628
1728
  * @param value The transmission weight value (0-1)
1629
1729
  */
1630
1730
  set transmissionWeight(value: number);
1631
1731
  /**
1632
1732
  * Sets the transmission weight texture.
1633
- * TODO: Implementation pending OpenPBR transmission feature availability.
1634
1733
  * @param value The transmission weight texture or null
1635
1734
  */
1636
1735
  set transmissionWeightTexture(value: Nullable<BaseTexture>);
1637
1736
  /**
1638
1737
  * Gets the transmission weight.
1639
- * TODO: Implementation pending OpenPBR transmission feature availability.
1640
1738
  * @returns Currently returns 0 as transmission is not yet available
1641
1739
  */
1642
1740
  get transmissionWeight(): number;
1643
1741
  /**
1644
- * Gets the transmission dispersion Abbe number.
1742
+ * Sets the transmission scatter coefficient.
1743
+ * @param value The scatter coefficient as a Vector3
1744
+ */
1745
+ set transmissionScatter(value: Color3);
1746
+ /**
1747
+ * Gets the transmission scatter coefficient.
1748
+ * @returns The scatter coefficient as a Vector3
1749
+ */
1750
+ get transmissionScatter(): Color3;
1751
+ set transmissionScatterTexture(value: Nullable<BaseTexture>);
1752
+ get transmissionScatterTexture(): Nullable<BaseTexture>;
1753
+ /**
1754
+ * Sets the transmission scattering anisotropy.
1755
+ * @param value The anisotropy intensity value (-1 to 1)
1756
+ */
1757
+ set transmissionScatterAnisotropy(value: number);
1758
+ /**
1759
+ * Sets the transmission dispersion Abbe number.
1645
1760
  * @param value The Abbe number value
1646
1761
  */
1647
1762
  set transmissionDispersionAbbeNumber(value: number);
1648
1763
  /**
1649
- * Configures transmission for OpenPBR material.
1650
- * TODO: Implementation pending OpenPBR transmission feature availability.
1764
+ * Sets the transmission dispersion scale.
1765
+ * @param value The dispersion scale value
1651
1766
  */
1652
- configureTransmission(): void;
1767
+ set transmissionDispersionScale(value: number);
1653
1768
  /**
1654
- * Sets the attenuation distance for volume scattering.
1655
- * TODO: Implementation pending OpenPBR volume feature availability.
1769
+ * Sets the attenuation distance.
1656
1770
  * @param value The attenuation distance value
1657
1771
  */
1658
1772
  set transmissionDepth(value: number);
1659
1773
  /**
1660
- * Sets the attenuation color for volume scattering.
1661
- * TODO: Implementation pending OpenPBR volume feature availability.
1774
+ * Gets the attenuation distance.
1775
+ */
1776
+ get transmissionDepth(): number;
1777
+ /**
1778
+ * Sets the attenuation color.
1662
1779
  * @param value The attenuation color as a Color3
1663
1780
  */
1664
1781
  set transmissionColor(value: Color3);
1665
1782
  /**
1666
- * Sets the thickness texture for volume scattering.
1667
- * TODO: Implementation pending OpenPBR volume feature availability.
1783
+ * Gets the attenuation color.
1784
+ */
1785
+ get transmissionColor(): Color3;
1786
+ /**
1787
+ * Gets the refraction background texture
1788
+ * @returns The refraction background texture or null
1789
+ */
1790
+ get refractionBackgroundTexture(): Nullable<BaseTexture>;
1791
+ /**
1792
+ * Sets the refraction background texture
1793
+ * @param value The refraction background texture or null
1794
+ */
1795
+ set refractionBackgroundTexture(value: Nullable<BaseTexture>);
1796
+ /**
1797
+ * Sets the thickness texture.
1668
1798
  * @param value The thickness texture or null
1669
1799
  */
1670
1800
  set volumeThicknessTexture(value: Nullable<BaseTexture>);
1671
1801
  /**
1672
- * Sets the thickness factor for volume scattering.
1673
- * TODO: Implementation pending OpenPBR volume feature availability.
1802
+ * Sets the thickness factor.
1674
1803
  * @param value The thickness value
1675
1804
  */
1676
1805
  set volumeThickness(value: number);
@@ -1678,6 +1807,15 @@ export class OpenPBRMaterialLoadingAdapter implements IMaterialLoadingAdapter {
1678
1807
  * Configures subsurface properties for PBR material
1679
1808
  */
1680
1809
  configureSubsurface(): void;
1810
+ /**
1811
+ * Sets the extinction coefficient of the volume.
1812
+ * @param value The extinction coefficient as a Vector3
1813
+ */
1814
+ set extinctionCoefficient(value: Vector3);
1815
+ /**
1816
+ * Gets the extinction coefficient of the volume.
1817
+ */
1818
+ get extinctionCoefficient(): Vector3;
1681
1819
  /**
1682
1820
  * Sets the subsurface weight
1683
1821
  */
@@ -1697,6 +1835,45 @@ export class OpenPBRMaterialLoadingAdapter implements IMaterialLoadingAdapter {
1697
1835
  * @param value The subsurface tint texture or null
1698
1836
  */
1699
1837
  set subsurfaceColorTexture(value: Nullable<BaseTexture>);
1838
+ /**
1839
+ * Sets the surface tint of the material (when using subsurface scattering)
1840
+ */
1841
+ set subsurfaceConstantTint(value: Color3);
1842
+ /**
1843
+ * Gets the surface tint of the material (when using subsurface scattering)
1844
+ */
1845
+ get subsurfaceConstantTint(): Color3;
1846
+ /**
1847
+ * Sets the surface tint texture of the material (when using subsurface scattering)
1848
+ */
1849
+ set subsurfaceConstantTintTexture(value: Nullable<BaseTexture>);
1850
+ /**
1851
+ * Gets the subsurface radius for subsurface scattering.
1852
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
1853
+ */
1854
+ get subsurfaceRadius(): number;
1855
+ /**
1856
+ * Sets the subsurface radius for subsurface scattering.
1857
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
1858
+ * @param value The subsurface radius value
1859
+ */
1860
+ set subsurfaceRadius(value: number);
1861
+ /**
1862
+ * Gets the subsurface radius scale for subsurface scattering.
1863
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
1864
+ */
1865
+ get subsurfaceRadiusScale(): Color3;
1866
+ /**
1867
+ * Sets the subsurface radius scale for subsurface scattering.
1868
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
1869
+ * @param value The subsurface radius scale as a Color3
1870
+ */
1871
+ set subsurfaceRadiusScale(value: Color3);
1872
+ /**
1873
+ * Sets the subsurface scattering anisotropy.
1874
+ * @param value The anisotropy intensity value
1875
+ */
1876
+ set subsurfaceScatterAnisotropy(value: number);
1700
1877
  /**
1701
1878
  * Configures fuzz for OpenPBR.
1702
1879
  * Enables fuzz and sets up proper configuration.
@@ -1848,6 +2025,7 @@ import { Material } from "babylonjs/Materials/material";
1848
2025
  import { BaseTexture } from "babylonjs/Materials/Textures/baseTexture";
1849
2026
  import { Nullable } from "babylonjs/types";
1850
2027
  import { Color3 } from "babylonjs/Maths/math.color";
2028
+ import { Vector3 } from "babylonjs/Maths/math.vector";
1851
2029
  /**
1852
2030
  * Interface for material loading adapters that provides a unified OpenPBR-like interface
1853
2031
  * for both OpenPBR and PBR materials, eliminating conditional branches in extensions.
@@ -2034,10 +2212,26 @@ export interface IMaterialLoadingAdapter {
2034
2212
  * Sets the attenuation color
2035
2213
  */
2036
2214
  transmissionColor: Color3;
2215
+ /**
2216
+ * Sets the scattering coefficient
2217
+ */
2218
+ transmissionScatter: Color3;
2219
+ /**
2220
+ * Sets the scattering anisotropy (-1 to 1)
2221
+ */
2222
+ transmissionScatterAnisotropy: number;
2037
2223
  /**
2038
2224
  * Sets the dispersion Abbe number
2039
2225
  */
2040
2226
  transmissionDispersionAbbeNumber: number;
2227
+ /**
2228
+ * Sets the dispersion scale
2229
+ */
2230
+ transmissionDispersionScale: number;
2231
+ /**
2232
+ * The refraction background texture
2233
+ */
2234
+ refractionBackgroundTexture: Nullable<BaseTexture>;
2041
2235
  /**
2042
2236
  * Configures transmission for thin-surface transmission (KHR_materials_transmission)
2043
2237
  */
@@ -2051,9 +2245,14 @@ export interface IMaterialLoadingAdapter {
2051
2245
  */
2052
2246
  volumeThickness: number;
2053
2247
  /**
2054
- * Configures subsurface properties for PBR material
2248
+ * Configures subsurface properties
2055
2249
  */
2056
2250
  configureSubsurface(): void;
2251
+ /**
2252
+ * @internal
2253
+ * Sets/gets the extinction coefficient
2254
+ */
2255
+ extinctionCoefficient: Vector3;
2057
2256
  /**
2058
2257
  * Sets/gets the subsurface weight
2059
2258
  */
@@ -2070,6 +2269,26 @@ export interface IMaterialLoadingAdapter {
2070
2269
  * Sets/gets the subsurface color texture
2071
2270
  */
2072
2271
  subsurfaceColorTexture: Nullable<BaseTexture>;
2272
+ /**
2273
+ * Sets/gets the surface tint of the material (when using subsurface scattering)
2274
+ */
2275
+ subsurfaceConstantTint: Color3;
2276
+ /**
2277
+ * Sets/gets the surface tint texture of the material (when using subsurface scattering)
2278
+ */
2279
+ subsurfaceConstantTintTexture: Nullable<BaseTexture>;
2280
+ /**
2281
+ * Sets/gets the subsurface radius (used for subsurface scattering)
2282
+ */
2283
+ subsurfaceRadius: number;
2284
+ /**
2285
+ * Sets/gets the subsurface radius scale (used for subsurface scattering)
2286
+ */
2287
+ subsurfaceRadiusScale: Color3;
2288
+ /**
2289
+ * Sets/gets the subsurface scattering anisotropy
2290
+ */
2291
+ subsurfaceScatterAnisotropy: number;
2073
2292
  /**
2074
2293
  * Configures initial settings for fuzz for material.
2075
2294
  */
@@ -3467,6 +3686,7 @@ export * from "babylonjs-loaders/glTF/2.0/Extensions/KHR_materials_variants";
3467
3686
  export * from "babylonjs-loaders/glTF/2.0/Extensions/KHR_materials_transmission";
3468
3687
  export * from "babylonjs-loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission";
3469
3688
  export * from "babylonjs-loaders/glTF/2.0/Extensions/KHR_materials_volume";
3689
+ export * from "babylonjs-loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter";
3470
3690
  export * from "babylonjs-loaders/glTF/2.0/Extensions/KHR_materials_dispersion";
3471
3691
  export * from "babylonjs-loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness";
3472
3692
  export * from "babylonjs-loaders/glTF/2.0/Extensions/KHR_mesh_quantization";
@@ -4016,6 +4236,54 @@ export class KHR_mesh_quantization implements IGLTFLoaderExtension {
4016
4236
  dispose(): void;
4017
4237
  }
4018
4238
 
4239
+ }
4240
+ declare module "babylonjs-loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter" {
4241
+ import { Nullable } from "babylonjs/types";
4242
+ import { Material } from "babylonjs/Materials/material";
4243
+ import { IMaterial } from "babylonjs-loaders/glTF/2.0/glTFLoaderInterfaces";
4244
+ import { IGLTFLoaderExtension } from "babylonjs-loaders/glTF/2.0/glTFLoaderExtension";
4245
+ import { GLTFLoader } from "babylonjs-loaders/glTF/2.0/glTFLoader";
4246
+ module "babylonjs-loaders/glTF/glTFFileLoader" {
4247
+ interface GLTFLoaderExtensionOptions {
4248
+ /**
4249
+ * Defines options for the KHR_materials_volume_scatter extension.
4250
+ */
4251
+ ["KHR_materials_volume_scatter"]: {};
4252
+ }
4253
+ }
4254
+ /**
4255
+ * TODO: In-progress specification
4256
+ * [Specification](https://github.com/KhronosGroup/glTF/blob/7ea427ed55d44427e83c0a6d1c87068b1a4151c5/extensions/2.0/Khronos/KHR_materials_volume_scatter/README.md)
4257
+ * @experimental
4258
+ * @since 9.0.0
4259
+ */
4260
+ export class KHR_materials_volume_scatter implements IGLTFLoaderExtension {
4261
+ /**
4262
+ * The name of this extension.
4263
+ */
4264
+ readonly name: string;
4265
+ /**
4266
+ * Defines whether this extension is enabled.
4267
+ */
4268
+ enabled: boolean;
4269
+ /**
4270
+ * Defines a number that determines the order the extensions are applied.
4271
+ */
4272
+ order: number;
4273
+ private _loader;
4274
+ /**
4275
+ * @internal
4276
+ */
4277
+ constructor(loader: GLTFLoader);
4278
+ /** @internal */
4279
+ dispose(): void;
4280
+ /**
4281
+ * @internal
4282
+ */
4283
+ loadMaterialPropertiesAsync(context: string, material: IMaterial, babylonMaterial: Material): Nullable<Promise<void>>;
4284
+ private _loadVolumePropertiesAsync;
4285
+ }
4286
+
4019
4287
  }
4020
4288
  declare module "babylonjs-loaders/glTF/2.0/Extensions/KHR_materials_volume" {
4021
4289
  import { Nullable } from "babylonjs/types";
@@ -4513,7 +4781,8 @@ module "babylonjs-loaders/glTF/glTFFileLoader" {
4513
4781
  }
4514
4782
  }
4515
4783
  /**
4516
- * [Specification]
4784
+ * [Specification](https://github.com/KhronosGroup/glTF/blob/9734e44accd0dfb986ec5f376117aa00192745fe/extensions/2.0/Khronos/KHR_materials_fuzz/README.md)
4785
+ * @experimental
4517
4786
  */
4518
4787
  export class KHR_materials_fuzz implements IGLTFLoaderExtension {
4519
4788
  /**
@@ -4695,7 +4964,7 @@ module "babylonjs-loaders/glTF/glTFFileLoader" {
4695
4964
  }
4696
4965
  }
4697
4966
  /**
4698
- * [Specification](https://github.com/KhronosGroup/glTF/blob/fdee35425ae560ea378092e38977216d63a094ec/extensions/2.0/Khronos/KHR_materials_diffuse_roughness/README.md)
4967
+ * [Specification](https://github.com/KhronosGroup/glTF/blob/b102d2d2b40d44a8776800bb2bf85e218853c17d/extensions/2.0/Khronos/KHR_materials_diffuse_roughness/README.md)
4699
4968
  * @experimental
4700
4969
  */
4701
4970
  export class KHR_materials_diffuse_roughness implements IGLTFLoaderExtension {
@@ -4741,8 +5010,8 @@ module "babylonjs-loaders/glTF/glTFFileLoader" {
4741
5010
  }
4742
5011
  }
4743
5012
  /**
4744
- * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_coat/README.md)
4745
- * [Playground Sample](https://www.babylonjs-playground.com/frame.html#7F7PN6#8)
5013
+ * [Specification](https://github.com/KhronosGroup/glTF/blob/6cb2cb84b504c245c49cf2e9a8ae16d26f72ac97/extensions/2.0/Khronos/KHR_materials_coat/README.md)
5014
+ * @experimental
4746
5015
  */
4747
5016
  export class KHR_materials_coat implements IGLTFLoaderExtension {
4748
5017
  /**
@@ -7529,6 +7798,11 @@ declare module BABYLON {
7529
7798
  */
7530
7799
  static Configuration: IGLTFValidationConfiguration;
7531
7800
  private static _LoadScriptPromise;
7801
+ /**
7802
+ * The most recent validation results.
7803
+ * @internal - Used for back-compat in Sandbox with Inspector V2.
7804
+ */
7805
+ static _LastResults: Nullable<GLTF2.IGLTFValidationResults>;
7532
7806
  /**
7533
7807
  * Validate a glTF asset using the glTF-Validator.
7534
7808
  * @param data The JSON of a glTF or the array buffer of a binary glTF
@@ -8102,6 +8376,7 @@ declare module BABYLON.GLTF2 {
8102
8376
  */
8103
8377
  export class PBRMaterialLoadingAdapter implements BABYLON.GLTF2.IMaterialLoadingAdapter {
8104
8378
  private _material;
8379
+ private _extinctionCoefficient;
8105
8380
  /**
8106
8381
  * Creates a new instance of the PBRMaterialLoadingAdapter.
8107
8382
  * @param material - The PBR material to adapt.
@@ -8489,20 +8764,60 @@ declare module BABYLON.GLTF2 {
8489
8764
  */
8490
8765
  set transmissionWeightTexture(value: Nullable<BaseTexture>);
8491
8766
  /**
8492
- * Sets the attenuation distance for volume scattering.
8767
+ * Sets the attenuation distance for volume.
8493
8768
  * @param value The attenuation distance value
8494
8769
  */
8495
8770
  set transmissionDepth(value: number);
8771
+ /**
8772
+ * Gets the attenuation distance for volume.
8773
+ * @returns The attenuation distance value
8774
+ */
8775
+ get transmissionDepth(): number;
8496
8776
  /**
8497
8777
  * Sets the attenuation color (mapped to PBR subSurface.tintColor).
8498
8778
  * @param value The attenuation color as a Color3
8499
8779
  */
8500
8780
  set transmissionColor(value: Color3);
8501
8781
  /**
8502
- * Gets the transmission dispersion Abbe number.
8782
+ * Sets the attenuation color (mapped to PBR subSurface.tintColor).
8783
+ * @returns The attenuation color as a Color3
8784
+ */
8785
+ get transmissionColor(): Color3;
8786
+ /**
8787
+ * Sets the transmission scatter coefficient.
8788
+ * @param value The scatter coefficient as a Color3
8789
+ */
8790
+ set transmissionScatter(value: Color3);
8791
+ /**
8792
+ * Sets the transmission scatter coefficient.
8793
+ * @returns The scatter coefficient as a Color3
8794
+ */
8795
+ get transmissionScatter(): Color3;
8796
+ /**
8797
+ * Sets the transmission scattering anisotropy.
8798
+ * @param value The anisotropy intensity value (-1 to 1)
8799
+ */
8800
+ set transmissionScatterAnisotropy(value: number);
8801
+ /**
8802
+ * Sets the transmission dispersion Abbe number.
8503
8803
  * @param value The Abbe number value
8504
8804
  */
8505
8805
  set transmissionDispersionAbbeNumber(value: number);
8806
+ /**
8807
+ * Sets the transmission dispersion scale.
8808
+ * @param value The dispersion scale value
8809
+ */
8810
+ set transmissionDispersionScale(value: number);
8811
+ /**
8812
+ * Gets the refraction background texture
8813
+ * @returns The refraction background texture or null
8814
+ */
8815
+ get refractionBackgroundTexture(): Nullable<BaseTexture>;
8816
+ /**
8817
+ * Sets the refraction background texture
8818
+ * @param value The refraction background texture or null
8819
+ */
8820
+ set refractionBackgroundTexture(value: Nullable<BaseTexture>);
8506
8821
  /**
8507
8822
  * Configures transmission for thin-surface transmission (KHR_materials_transmission).
8508
8823
  * Sets up the material for proper thin-surface transmission behavior.
@@ -8524,6 +8839,15 @@ declare module BABYLON.GLTF2 {
8524
8839
  * Configures subsurface properties for PBR material
8525
8840
  */
8526
8841
  configureSubsurface(): void;
8842
+ /**
8843
+ * Sets the extinction coefficient of the volume.
8844
+ * @param value The extinction coefficient as a Vector3
8845
+ */
8846
+ set extinctionCoefficient(value: Vector3);
8847
+ /**
8848
+ * Gets the extinction coefficient of the volume.
8849
+ */
8850
+ get extinctionCoefficient(): Vector3;
8527
8851
  /**
8528
8852
  * Sets the subsurface weight
8529
8853
  */
@@ -8547,6 +8871,50 @@ declare module BABYLON.GLTF2 {
8547
8871
  * @param value The subsurface tint texture or null
8548
8872
  */
8549
8873
  set subsurfaceColorTexture(value: Nullable<BaseTexture>);
8874
+ /**
8875
+ * Sets the surface tint of the material (when using subsurface scattering)
8876
+ */
8877
+ set subsurfaceConstantTint(value: Color3);
8878
+ /**
8879
+ * Gets the subsurface constant tint (when using subsurface scattering)
8880
+ * @returns The subsurface constant tint as a Color3
8881
+ */
8882
+ get subsurfaceConstantTint(): Color3;
8883
+ /**
8884
+ * Sets the subsurface constant tint texture (when using subsurface scattering)
8885
+ * @param value The subsurface constant tint texture or null
8886
+ */
8887
+ set subsurfaceConstantTintTexture(value: Nullable<BaseTexture>);
8888
+ /**
8889
+ * Gets the subsurface radius (used for subsurface scattering)
8890
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
8891
+ * @returns The subsurface radius as a Color3
8892
+ */
8893
+ get subsurfaceRadius(): number;
8894
+ /**
8895
+ * Sets the subsurface radius (used for subsurface scattering)
8896
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
8897
+ * @param value The subsurface radius as a number
8898
+ */
8899
+ set subsurfaceRadius(value: number);
8900
+ /**
8901
+ * Gets the subsurface radius scale (used for subsurface scattering)
8902
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
8903
+ * @returns The subsurface radius scale as a Color3
8904
+ */
8905
+ get subsurfaceRadiusScale(): Color3;
8906
+ /**
8907
+ * Sets the subsurface radius scale (used for subsurface scattering)
8908
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
8909
+ * @param value The subsurface radius scale as a Color3
8910
+ */
8911
+ set subsurfaceRadiusScale(value: Color3);
8912
+ /**
8913
+ * Sets the subsurface scattering anisotropy.
8914
+ * Note: PBRMaterial does not have a direct equivalent, so this is a no-op.
8915
+ * @param value The anisotropy intensity value (ignored for PBR)
8916
+ */
8917
+ set subsurfaceScatterAnisotropy(value: number);
8550
8918
  /**
8551
8919
  * Configures sheen for PBR material.
8552
8920
  * Enables sheen and sets up proper configuration.
@@ -8652,12 +9020,6 @@ declare module BABYLON.GLTF2 {
8652
9020
  * @param value The iridescence thickness texture or null
8653
9021
  */
8654
9022
  set thinFilmThicknessTexture(value: Nullable<BaseTexture>);
8655
- /**
8656
- * Sets the transmission dispersion value.
8657
- * Note: PBR doesn't have direct dispersion support, so this stores it as metadata.
8658
- * @param value The dispersion value (stored as metadata)
8659
- */
8660
- set transmissionDispersion(value: number);
8661
9023
  /**
8662
9024
  * Sets whether the material is unlit.
8663
9025
  * @param value True to make the material unlit
@@ -8721,6 +9083,7 @@ declare module BABYLON.GLTF2 {
8721
9083
  */
8722
9084
  export class OpenPBRMaterialLoadingAdapter implements BABYLON.GLTF2.IMaterialLoadingAdapter {
8723
9085
  private _material;
9086
+ private _extinctionCoefficient;
8724
9087
  /**
8725
9088
  * Creates a new instance of the OpenPBRMaterialLoadingAdapter.
8726
9089
  * @param material - The OpenPBR material to adapt.
@@ -9083,55 +9446,87 @@ declare module BABYLON.GLTF2 {
9083
9446
  * @returns Currently returns null as coat anisotropy is not yet available
9084
9447
  */
9085
9448
  get geometryCoatTangentTexture(): Nullable<BaseTexture>;
9449
+ /**
9450
+ * Configures transmission for OpenPBR material.
9451
+ */
9452
+ configureTransmission(): void;
9086
9453
  /**
9087
9454
  * Sets the transmission weight.
9088
- * TODO: Implementation pending OpenPBR transmission feature availability.
9089
9455
  * @param value The transmission weight value (0-1)
9090
9456
  */
9091
9457
  set transmissionWeight(value: number);
9092
9458
  /**
9093
9459
  * Sets the transmission weight texture.
9094
- * TODO: Implementation pending OpenPBR transmission feature availability.
9095
9460
  * @param value The transmission weight texture or null
9096
9461
  */
9097
9462
  set transmissionWeightTexture(value: Nullable<BaseTexture>);
9098
9463
  /**
9099
9464
  * Gets the transmission weight.
9100
- * TODO: Implementation pending OpenPBR transmission feature availability.
9101
9465
  * @returns Currently returns 0 as transmission is not yet available
9102
9466
  */
9103
9467
  get transmissionWeight(): number;
9104
9468
  /**
9105
- * Gets the transmission dispersion Abbe number.
9469
+ * Sets the transmission scatter coefficient.
9470
+ * @param value The scatter coefficient as a Vector3
9471
+ */
9472
+ set transmissionScatter(value: Color3);
9473
+ /**
9474
+ * Gets the transmission scatter coefficient.
9475
+ * @returns The scatter coefficient as a Vector3
9476
+ */
9477
+ get transmissionScatter(): Color3;
9478
+ set transmissionScatterTexture(value: Nullable<BaseTexture>);
9479
+ get transmissionScatterTexture(): Nullable<BaseTexture>;
9480
+ /**
9481
+ * Sets the transmission scattering anisotropy.
9482
+ * @param value The anisotropy intensity value (-1 to 1)
9483
+ */
9484
+ set transmissionScatterAnisotropy(value: number);
9485
+ /**
9486
+ * Sets the transmission dispersion Abbe number.
9106
9487
  * @param value The Abbe number value
9107
9488
  */
9108
9489
  set transmissionDispersionAbbeNumber(value: number);
9109
9490
  /**
9110
- * Configures transmission for OpenPBR material.
9111
- * TODO: Implementation pending OpenPBR transmission feature availability.
9491
+ * Sets the transmission dispersion scale.
9492
+ * @param value The dispersion scale value
9112
9493
  */
9113
- configureTransmission(): void;
9494
+ set transmissionDispersionScale(value: number);
9114
9495
  /**
9115
- * Sets the attenuation distance for volume scattering.
9116
- * TODO: Implementation pending OpenPBR volume feature availability.
9496
+ * Sets the attenuation distance.
9117
9497
  * @param value The attenuation distance value
9118
9498
  */
9119
9499
  set transmissionDepth(value: number);
9120
9500
  /**
9121
- * Sets the attenuation color for volume scattering.
9122
- * TODO: Implementation pending OpenPBR volume feature availability.
9501
+ * Gets the attenuation distance.
9502
+ */
9503
+ get transmissionDepth(): number;
9504
+ /**
9505
+ * Sets the attenuation color.
9123
9506
  * @param value The attenuation color as a Color3
9124
9507
  */
9125
9508
  set transmissionColor(value: Color3);
9126
9509
  /**
9127
- * Sets the thickness texture for volume scattering.
9128
- * TODO: Implementation pending OpenPBR volume feature availability.
9510
+ * Gets the attenuation color.
9511
+ */
9512
+ get transmissionColor(): Color3;
9513
+ /**
9514
+ * Gets the refraction background texture
9515
+ * @returns The refraction background texture or null
9516
+ */
9517
+ get refractionBackgroundTexture(): Nullable<BaseTexture>;
9518
+ /**
9519
+ * Sets the refraction background texture
9520
+ * @param value The refraction background texture or null
9521
+ */
9522
+ set refractionBackgroundTexture(value: Nullable<BaseTexture>);
9523
+ /**
9524
+ * Sets the thickness texture.
9129
9525
  * @param value The thickness texture or null
9130
9526
  */
9131
9527
  set volumeThicknessTexture(value: Nullable<BaseTexture>);
9132
9528
  /**
9133
- * Sets the thickness factor for volume scattering.
9134
- * TODO: Implementation pending OpenPBR volume feature availability.
9529
+ * Sets the thickness factor.
9135
9530
  * @param value The thickness value
9136
9531
  */
9137
9532
  set volumeThickness(value: number);
@@ -9139,6 +9534,15 @@ declare module BABYLON.GLTF2 {
9139
9534
  * Configures subsurface properties for PBR material
9140
9535
  */
9141
9536
  configureSubsurface(): void;
9537
+ /**
9538
+ * Sets the extinction coefficient of the volume.
9539
+ * @param value The extinction coefficient as a Vector3
9540
+ */
9541
+ set extinctionCoefficient(value: Vector3);
9542
+ /**
9543
+ * Gets the extinction coefficient of the volume.
9544
+ */
9545
+ get extinctionCoefficient(): Vector3;
9142
9546
  /**
9143
9547
  * Sets the subsurface weight
9144
9548
  */
@@ -9158,6 +9562,45 @@ declare module BABYLON.GLTF2 {
9158
9562
  * @param value The subsurface tint texture or null
9159
9563
  */
9160
9564
  set subsurfaceColorTexture(value: Nullable<BaseTexture>);
9565
+ /**
9566
+ * Sets the surface tint of the material (when using subsurface scattering)
9567
+ */
9568
+ set subsurfaceConstantTint(value: Color3);
9569
+ /**
9570
+ * Gets the surface tint of the material (when using subsurface scattering)
9571
+ */
9572
+ get subsurfaceConstantTint(): Color3;
9573
+ /**
9574
+ * Sets the surface tint texture of the material (when using subsurface scattering)
9575
+ */
9576
+ set subsurfaceConstantTintTexture(value: Nullable<BaseTexture>);
9577
+ /**
9578
+ * Gets the subsurface radius for subsurface scattering.
9579
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
9580
+ */
9581
+ get subsurfaceRadius(): number;
9582
+ /**
9583
+ * Sets the subsurface radius for subsurface scattering.
9584
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
9585
+ * @param value The subsurface radius value
9586
+ */
9587
+ set subsurfaceRadius(value: number);
9588
+ /**
9589
+ * Gets the subsurface radius scale for subsurface scattering.
9590
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
9591
+ */
9592
+ get subsurfaceRadiusScale(): Color3;
9593
+ /**
9594
+ * Sets the subsurface radius scale for subsurface scattering.
9595
+ * subsurfaceRadiusScale * subsurfaceRadius gives the mean free path per color channel.
9596
+ * @param value The subsurface radius scale as a Color3
9597
+ */
9598
+ set subsurfaceRadiusScale(value: Color3);
9599
+ /**
9600
+ * Sets the subsurface scattering anisotropy.
9601
+ * @param value The anisotropy intensity value
9602
+ */
9603
+ set subsurfaceScatterAnisotropy(value: number);
9161
9604
  /**
9162
9605
  * Configures fuzz for OpenPBR.
9163
9606
  * Enables fuzz and sets up proper configuration.
@@ -9497,10 +9940,26 @@ declare module BABYLON.GLTF2 {
9497
9940
  * Sets the attenuation color
9498
9941
  */
9499
9942
  transmissionColor: Color3;
9943
+ /**
9944
+ * Sets the scattering coefficient
9945
+ */
9946
+ transmissionScatter: Color3;
9947
+ /**
9948
+ * Sets the scattering anisotropy (-1 to 1)
9949
+ */
9950
+ transmissionScatterAnisotropy: number;
9500
9951
  /**
9501
9952
  * Sets the dispersion Abbe number
9502
9953
  */
9503
9954
  transmissionDispersionAbbeNumber: number;
9955
+ /**
9956
+ * Sets the dispersion scale
9957
+ */
9958
+ transmissionDispersionScale: number;
9959
+ /**
9960
+ * The refraction background texture
9961
+ */
9962
+ refractionBackgroundTexture: Nullable<BaseTexture>;
9504
9963
  /**
9505
9964
  * Configures transmission for thin-surface transmission (KHR_materials_transmission)
9506
9965
  */
@@ -9514,9 +9973,14 @@ declare module BABYLON.GLTF2 {
9514
9973
  */
9515
9974
  volumeThickness: number;
9516
9975
  /**
9517
- * Configures subsurface properties for PBR material
9976
+ * Configures subsurface properties
9518
9977
  */
9519
9978
  configureSubsurface(): void;
9979
+ /**
9980
+ * @internal
9981
+ * Sets/gets the extinction coefficient
9982
+ */
9983
+ extinctionCoefficient: Vector3;
9520
9984
  /**
9521
9985
  * Sets/gets the subsurface weight
9522
9986
  */
@@ -9533,6 +9997,26 @@ declare module BABYLON.GLTF2 {
9533
9997
  * Sets/gets the subsurface color texture
9534
9998
  */
9535
9999
  subsurfaceColorTexture: Nullable<BaseTexture>;
10000
+ /**
10001
+ * Sets/gets the surface tint of the material (when using subsurface scattering)
10002
+ */
10003
+ subsurfaceConstantTint: Color3;
10004
+ /**
10005
+ * Sets/gets the surface tint texture of the material (when using subsurface scattering)
10006
+ */
10007
+ subsurfaceConstantTintTexture: Nullable<BaseTexture>;
10008
+ /**
10009
+ * Sets/gets the subsurface radius (used for subsurface scattering)
10010
+ */
10011
+ subsurfaceRadius: number;
10012
+ /**
10013
+ * Sets/gets the subsurface radius scale (used for subsurface scattering)
10014
+ */
10015
+ subsurfaceRadiusScale: Color3;
10016
+ /**
10017
+ * Sets/gets the subsurface scattering anisotropy
10018
+ */
10019
+ subsurfaceScatterAnisotropy: number;
9536
10020
  /**
9537
10021
  * Configures initial settings for fuzz for material.
9538
10022
  */
@@ -11404,6 +11888,52 @@ declare module BABYLON {
11404
11888
  ["KHR_mesh_quantization"]: {};
11405
11889
  }
11406
11890
 
11891
+ }
11892
+ declare module BABYLON.GLTF2.Loader.Extensions {
11893
+ /**
11894
+ * TODO: In-progress specification
11895
+ * [Specification](https://github.com/KhronosGroup/glTF/blob/7ea427ed55d44427e83c0a6d1c87068b1a4151c5/extensions/2.0/Khronos/KHR_materials_volume_scatter/README.md)
11896
+ * @experimental
11897
+ * @since 9.0.0
11898
+ */
11899
+ export class KHR_materials_volume_scatter implements BABYLON.GLTF2.IGLTFLoaderExtension {
11900
+ /**
11901
+ * The name of this extension.
11902
+ */
11903
+ readonly name = "KHR_materials_volume_scatter";
11904
+ /**
11905
+ * Defines whether this extension is enabled.
11906
+ */
11907
+ enabled: boolean;
11908
+ /**
11909
+ * Defines a number that determines the order the extensions are applied.
11910
+ */
11911
+ order: number;
11912
+ private _loader;
11913
+ /**
11914
+ * @internal
11915
+ */
11916
+ constructor(loader: BABYLON.GLTF2.GLTFLoader);
11917
+ /** @internal */
11918
+ dispose(): void;
11919
+ /**
11920
+ * @internal
11921
+ */
11922
+ loadMaterialPropertiesAsync(context: string, material: BABYLON.GLTF2.Loader.IMaterial, babylonMaterial: Material): Nullable<Promise<void>>;
11923
+ private _loadVolumePropertiesAsync;
11924
+ }
11925
+
11926
+
11927
+
11928
+ }
11929
+ declare module BABYLON {
11930
+ interface GLTFLoaderExtensionOptions {
11931
+ /**
11932
+ * Defines options for the KHR_materials_volume_scatter extension.
11933
+ */
11934
+ ["KHR_materials_volume_scatter"]: {};
11935
+ }
11936
+
11407
11937
  }
11408
11938
  declare module BABYLON.GLTF2.Loader.Extensions {
11409
11939
  /**
@@ -11867,7 +12397,8 @@ declare module BABYLON {
11867
12397
  }
11868
12398
  declare module BABYLON.GLTF2.Loader.Extensions {
11869
12399
  /**
11870
- * [Specification]
12400
+ * [Specification](https://github.com/KhronosGroup/glTF/blob/9734e44accd0dfb986ec5f376117aa00192745fe/extensions/2.0/Khronos/KHR_materials_fuzz/README.md)
12401
+ * @experimental
11871
12402
  */
11872
12403
  export class KHR_materials_fuzz implements BABYLON.GLTF2.IGLTFLoaderExtension {
11873
12404
  /**
@@ -12041,7 +12572,7 @@ declare module BABYLON {
12041
12572
  }
12042
12573
  declare module BABYLON.GLTF2.Loader.Extensions {
12043
12574
  /**
12044
- * [Specification](https://github.com/KhronosGroup/glTF/blob/fdee35425ae560ea378092e38977216d63a094ec/extensions/2.0/Khronos/KHR_materials_diffuse_roughness/README.md)
12575
+ * [Specification](https://github.com/KhronosGroup/glTF/blob/b102d2d2b40d44a8776800bb2bf85e218853c17d/extensions/2.0/Khronos/KHR_materials_diffuse_roughness/README.md)
12045
12576
  * @experimental
12046
12577
  */
12047
12578
  export class KHR_materials_diffuse_roughness implements BABYLON.GLTF2.IGLTFLoaderExtension {
@@ -12085,8 +12616,8 @@ declare module BABYLON {
12085
12616
  }
12086
12617
  declare module BABYLON.GLTF2.Loader.Extensions {
12087
12618
  /**
12088
- * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_coat/README.md)
12089
- * [Playground Sample](https://www.babylonjs-playground.com/frame.html#7F7PN6#8)
12619
+ * [Specification](https://github.com/KhronosGroup/glTF/blob/6cb2cb84b504c245c49cf2e9a8ae16d26f72ac97/extensions/2.0/Khronos/KHR_materials_coat/README.md)
12620
+ * @experimental
12090
12621
  */
12091
12622
  export class KHR_materials_coat implements BABYLON.GLTF2.IGLTFLoaderExtension {
12092
12623
  /**