@babylonjs/loaders 8.33.4 → 8.34.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/glTF/2.0/Extensions/EXT_lights_area.js +10 -10
- package/glTF/2.0/Extensions/EXT_lights_area.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_animation_pointer.data.js +4 -0
- package/glTF/2.0/Extensions/KHR_animation_pointer.data.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +0 -3
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.js +0 -80
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_coat.d.ts +49 -0
- package/glTF/2.0/Extensions/KHR_materials_coat.js +120 -0
- package/glTF/2.0/Extensions/KHR_materials_coat.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_fuzz.d.ts +42 -0
- package/glTF/2.0/Extensions/KHR_materials_fuzz.js +77 -0
- package/glTF/2.0/Extensions/KHR_materials_fuzz.js.map +1 -0
- package/glTF/2.0/Extensions/dynamic.js +4 -0
- package/glTF/2.0/Extensions/dynamic.js.map +1 -1
- package/glTF/2.0/Extensions/index.d.ts +3 -1
- package/glTF/2.0/Extensions/index.js +3 -1
- package/glTF/2.0/Extensions/index.js.map +1 -1
- package/glTF/2.0/Extensions/objectModelMapping.d.ts +15 -1
- package/glTF/2.0/Extensions/objectModelMapping.js +43 -0
- package/glTF/2.0/Extensions/objectModelMapping.js.map +1 -1
- package/glTF/2.0/glTFLoaderAnimation.js +2 -2
- package/glTF/2.0/glTFLoaderAnimation.js.map +1 -1
- package/glTF/2.0/materialLoadingAdapter.d.ts +50 -46
- package/glTF/2.0/materialLoadingAdapter.js.map +1 -1
- package/glTF/2.0/openpbrMaterialLoadingAdapter.d.ts +5 -0
- package/glTF/2.0/openpbrMaterialLoadingAdapter.js +11 -0
- package/glTF/2.0/openpbrMaterialLoadingAdapter.js.map +1 -1
- package/glTF/2.0/pbrMaterialLoadingAdapter.d.ts +5 -0
- package/glTF/2.0/pbrMaterialLoadingAdapter.js +13 -1
- package/glTF/2.0/pbrMaterialLoadingAdapter.js.map +1 -1
- package/package.json +3 -3
|
@@ -36,27 +36,27 @@ export interface IMaterialLoadingAdapter {
|
|
|
36
36
|
*/
|
|
37
37
|
transparencyAsAlphaCoverage: boolean;
|
|
38
38
|
/**
|
|
39
|
-
* Sets/gets the base color
|
|
39
|
+
* Sets/gets the base color
|
|
40
40
|
*/
|
|
41
41
|
baseColor: Color3;
|
|
42
42
|
/**
|
|
43
|
-
* Sets/gets the base color texture
|
|
43
|
+
* Sets/gets the base color texture
|
|
44
44
|
*/
|
|
45
45
|
baseColorTexture: Nullable<BaseTexture>;
|
|
46
46
|
/**
|
|
47
|
-
* Sets/gets the base diffuse roughness
|
|
47
|
+
* Sets/gets the base diffuse roughness
|
|
48
48
|
*/
|
|
49
49
|
baseDiffuseRoughness: number;
|
|
50
50
|
/**
|
|
51
|
-
* Sets/gets the base diffuse roughness texture
|
|
51
|
+
* Sets/gets the base diffuse roughness texture
|
|
52
52
|
*/
|
|
53
53
|
baseDiffuseRoughnessTexture: Nullable<BaseTexture>;
|
|
54
54
|
/**
|
|
55
|
-
* Sets/gets the base metalness
|
|
55
|
+
* Sets/gets the base metalness
|
|
56
56
|
*/
|
|
57
57
|
baseMetalness: number;
|
|
58
58
|
/**
|
|
59
|
-
* Sets/gets the base metalness texture
|
|
59
|
+
* Sets/gets the base metalness texture
|
|
60
60
|
*/
|
|
61
61
|
baseMetalnessTexture: Nullable<BaseTexture>;
|
|
62
62
|
/**
|
|
@@ -73,23 +73,23 @@ export interface IMaterialLoadingAdapter {
|
|
|
73
73
|
*/
|
|
74
74
|
enableSpecularEdgeColor(enableEdgeColor?: boolean): void;
|
|
75
75
|
/**
|
|
76
|
-
* Sets/gets the specular weight
|
|
76
|
+
* Sets/gets the specular weight
|
|
77
77
|
*/
|
|
78
78
|
specularWeight: number;
|
|
79
79
|
/**
|
|
80
|
-
* Sets/gets the specular weight texture
|
|
80
|
+
* Sets/gets the specular weight texture
|
|
81
81
|
*/
|
|
82
82
|
specularWeightTexture: Nullable<BaseTexture>;
|
|
83
83
|
/**
|
|
84
|
-
* Sets/gets the specular color
|
|
84
|
+
* Sets/gets the specular color
|
|
85
85
|
*/
|
|
86
86
|
specularColor: Color3;
|
|
87
87
|
/**
|
|
88
|
-
* Sets/gets the specular color texture
|
|
88
|
+
* Sets/gets the specular color texture
|
|
89
89
|
*/
|
|
90
90
|
specularColorTexture: Nullable<BaseTexture>;
|
|
91
91
|
/**
|
|
92
|
-
* Sets/gets the specular roughness
|
|
92
|
+
* Sets/gets the specular roughness
|
|
93
93
|
*/
|
|
94
94
|
specularRoughness: number;
|
|
95
95
|
/**
|
|
@@ -97,15 +97,15 @@ export interface IMaterialLoadingAdapter {
|
|
|
97
97
|
*/
|
|
98
98
|
specularRoughnessTexture: Nullable<BaseTexture>;
|
|
99
99
|
/**
|
|
100
|
-
* Sets/gets the specular IOR
|
|
100
|
+
* Sets/gets the specular IOR
|
|
101
101
|
*/
|
|
102
102
|
specularIor: number;
|
|
103
103
|
/**
|
|
104
|
-
* Sets/gets the emissive color
|
|
104
|
+
* Sets/gets the emissive color
|
|
105
105
|
*/
|
|
106
106
|
emissionColor: Color3;
|
|
107
107
|
/**
|
|
108
|
-
* Sets/gets the emissive luminance
|
|
108
|
+
* Sets/gets the emissive luminance
|
|
109
109
|
*/
|
|
110
110
|
emissionLuminance: number;
|
|
111
111
|
/**
|
|
@@ -113,7 +113,7 @@ export interface IMaterialLoadingAdapter {
|
|
|
113
113
|
*/
|
|
114
114
|
emissionColorTexture: Nullable<BaseTexture>;
|
|
115
115
|
/**
|
|
116
|
-
* Sets/gets the ambient occlusion texture
|
|
116
|
+
* Sets/gets the ambient occlusion texture
|
|
117
117
|
*/
|
|
118
118
|
ambientOcclusionTexture: Nullable<BaseTexture>;
|
|
119
119
|
/**
|
|
@@ -125,27 +125,27 @@ export interface IMaterialLoadingAdapter {
|
|
|
125
125
|
*/
|
|
126
126
|
configureCoat(): void;
|
|
127
127
|
/**
|
|
128
|
-
* Sets/gets the coat weight
|
|
128
|
+
* Sets/gets the coat weight
|
|
129
129
|
*/
|
|
130
130
|
coatWeight: number;
|
|
131
131
|
/**
|
|
132
|
-
* Sets/gets the coat weight texture
|
|
132
|
+
* Sets/gets the coat weight texture
|
|
133
133
|
*/
|
|
134
134
|
coatWeightTexture: Nullable<BaseTexture>;
|
|
135
135
|
/**
|
|
136
|
-
* Sets the coat color
|
|
136
|
+
* Sets the coat color
|
|
137
137
|
*/
|
|
138
138
|
coatColor: Color3;
|
|
139
139
|
/**
|
|
140
|
-
* Sets the coat color texture
|
|
140
|
+
* Sets the coat color texture
|
|
141
141
|
*/
|
|
142
142
|
coatColorTexture: Nullable<BaseTexture>;
|
|
143
143
|
/**
|
|
144
|
-
* Sets/gets the coat roughness
|
|
144
|
+
* Sets/gets the coat roughness
|
|
145
145
|
*/
|
|
146
146
|
coatRoughness: number;
|
|
147
147
|
/**
|
|
148
|
-
* Sets/gets the coat roughness texture
|
|
148
|
+
* Sets/gets the coat roughness texture
|
|
149
149
|
*/
|
|
150
150
|
coatRoughnessTexture: Nullable<BaseTexture>;
|
|
151
151
|
/**
|
|
@@ -153,39 +153,39 @@ export interface IMaterialLoadingAdapter {
|
|
|
153
153
|
*/
|
|
154
154
|
coatIor: number;
|
|
155
155
|
/**
|
|
156
|
-
* Sets the coat darkening
|
|
156
|
+
* Sets the coat darkening
|
|
157
157
|
*/
|
|
158
158
|
coatDarkening: number;
|
|
159
159
|
/**
|
|
160
|
-
* Sets the coat darkening texture
|
|
160
|
+
* Sets the coat darkening texture
|
|
161
161
|
*/
|
|
162
162
|
coatDarkeningTexture: Nullable<BaseTexture>;
|
|
163
163
|
/**
|
|
164
|
-
* Sets/gets the coat roughness anisotropy
|
|
164
|
+
* Sets/gets the coat roughness anisotropy
|
|
165
165
|
*/
|
|
166
166
|
coatRoughnessAnisotropy: number;
|
|
167
167
|
/**
|
|
168
|
-
* Sets the coat tangent angle for anisotropy
|
|
168
|
+
* Sets the coat tangent angle for anisotropy
|
|
169
169
|
*/
|
|
170
170
|
geometryCoatTangentAngle: number;
|
|
171
171
|
/**
|
|
172
|
-
* Sets the coat tangent texture for anisotropy
|
|
172
|
+
* Sets the coat tangent texture for anisotropy
|
|
173
173
|
*/
|
|
174
174
|
geometryCoatTangentTexture: Nullable<BaseTexture>;
|
|
175
175
|
/**
|
|
176
|
-
* Sets the transmission weight
|
|
176
|
+
* Sets the transmission weight
|
|
177
177
|
*/
|
|
178
178
|
transmissionWeight: number;
|
|
179
179
|
/**
|
|
180
|
-
* Sets the transmission weight texture
|
|
180
|
+
* Sets the transmission weight texture
|
|
181
181
|
*/
|
|
182
182
|
transmissionWeightTexture: Nullable<BaseTexture>;
|
|
183
183
|
/**
|
|
184
|
-
* Sets the attenuation distance
|
|
184
|
+
* Sets the attenuation distance
|
|
185
185
|
*/
|
|
186
186
|
transmissionDepth: number;
|
|
187
187
|
/**
|
|
188
|
-
* Sets the attenuation color
|
|
188
|
+
* Sets the attenuation color
|
|
189
189
|
*/
|
|
190
190
|
transmissionColor: Color3;
|
|
191
191
|
/**
|
|
@@ -197,11 +197,11 @@ export interface IMaterialLoadingAdapter {
|
|
|
197
197
|
*/
|
|
198
198
|
configureTransmission(): void;
|
|
199
199
|
/**
|
|
200
|
-
* Sets the thickness texture
|
|
200
|
+
* Sets the thickness texture
|
|
201
201
|
*/
|
|
202
202
|
volumeThicknessTexture: Nullable<BaseTexture>;
|
|
203
203
|
/**
|
|
204
|
-
* Sets the thickness factor
|
|
204
|
+
* Sets the thickness factor
|
|
205
205
|
*/
|
|
206
206
|
volumeThickness: number;
|
|
207
207
|
/**
|
|
@@ -217,11 +217,11 @@ export interface IMaterialLoadingAdapter {
|
|
|
217
217
|
*/
|
|
218
218
|
subsurfaceWeightTexture: Nullable<BaseTexture>;
|
|
219
219
|
/**
|
|
220
|
-
* Sets/gets the subsurface color
|
|
220
|
+
* Sets/gets the subsurface color
|
|
221
221
|
*/
|
|
222
222
|
subsurfaceColor: Color3;
|
|
223
223
|
/**
|
|
224
|
-
* Sets/gets the subsurface color texture
|
|
224
|
+
* Sets/gets the subsurface color texture
|
|
225
225
|
*/
|
|
226
226
|
subsurfaceColorTexture: Nullable<BaseTexture>;
|
|
227
227
|
/**
|
|
@@ -229,35 +229,39 @@ export interface IMaterialLoadingAdapter {
|
|
|
229
229
|
*/
|
|
230
230
|
configureFuzz(): void;
|
|
231
231
|
/**
|
|
232
|
-
* Sets the fuzz weight
|
|
232
|
+
* Sets the fuzz weight
|
|
233
233
|
*/
|
|
234
234
|
fuzzWeight: number;
|
|
235
235
|
/**
|
|
236
|
-
* Sets the fuzz
|
|
236
|
+
* Sets the fuzz weight texture
|
|
237
|
+
*/
|
|
238
|
+
fuzzWeightTexture: Nullable<BaseTexture>;
|
|
239
|
+
/**
|
|
240
|
+
* Sets the fuzz color
|
|
237
241
|
*/
|
|
238
242
|
fuzzColor: Color3;
|
|
239
243
|
/**
|
|
240
|
-
* Sets the fuzz color texture
|
|
244
|
+
* Sets the fuzz color texture
|
|
241
245
|
*/
|
|
242
246
|
fuzzColorTexture: Nullable<BaseTexture>;
|
|
243
247
|
/**
|
|
244
|
-
* Sets the fuzz roughness
|
|
248
|
+
* Sets the fuzz roughness
|
|
245
249
|
*/
|
|
246
250
|
fuzzRoughness: number;
|
|
247
251
|
/**
|
|
248
|
-
* Sets the fuzz roughness texture
|
|
252
|
+
* Sets the fuzz roughness texture
|
|
249
253
|
*/
|
|
250
254
|
fuzzRoughnessTexture: Nullable<BaseTexture>;
|
|
251
255
|
/**
|
|
252
|
-
* Sets/gets the specular roughness anisotropy
|
|
256
|
+
* Sets/gets the specular roughness anisotropy
|
|
253
257
|
*/
|
|
254
258
|
specularRoughnessAnisotropy: number;
|
|
255
259
|
/**
|
|
256
|
-
* Sets the anisotropy rotation
|
|
260
|
+
* Sets the anisotropy rotation
|
|
257
261
|
*/
|
|
258
262
|
geometryTangentAngle: number;
|
|
259
263
|
/**
|
|
260
|
-
* Sets/gets the anisotropy texture
|
|
264
|
+
* Sets/gets the anisotropy texture
|
|
261
265
|
*/
|
|
262
266
|
geometryTangentTexture: Nullable<BaseTexture>;
|
|
263
267
|
/**
|
|
@@ -290,15 +294,15 @@ export interface IMaterialLoadingAdapter {
|
|
|
290
294
|
*/
|
|
291
295
|
thinFilmThicknessTexture: Nullable<BaseTexture>;
|
|
292
296
|
/**
|
|
293
|
-
* Sets the unlit flag
|
|
297
|
+
* Sets the unlit flag
|
|
294
298
|
*/
|
|
295
299
|
unlit: boolean;
|
|
296
300
|
/**
|
|
297
|
-
* Sets/gets the geometry opacity
|
|
301
|
+
* Sets/gets the geometry opacity
|
|
298
302
|
*/
|
|
299
303
|
geometryOpacity: number;
|
|
300
304
|
/**
|
|
301
|
-
* Sets/gets the geometry normal texture
|
|
305
|
+
* Sets/gets the geometry normal texture
|
|
302
306
|
*/
|
|
303
307
|
geometryNormalTexture: Nullable<BaseTexture>;
|
|
304
308
|
/**
|
|
@@ -308,7 +312,7 @@ export interface IMaterialLoadingAdapter {
|
|
|
308
312
|
*/
|
|
309
313
|
setNormalMapInversions(invertX: boolean, invertY: boolean): void;
|
|
310
314
|
/**
|
|
311
|
-
* Sets/gets the coat normal texture
|
|
315
|
+
* Sets/gets the coat normal texture
|
|
312
316
|
*/
|
|
313
317
|
geometryCoatNormalTexture: Nullable<BaseTexture>;
|
|
314
318
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialLoadingAdapter.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/2.0/materialLoadingAdapter.ts"],"names":[],"mappings":"","sourcesContent":["import type { Material } from \"core/Materials/material\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Color3 } from \"core/Maths/math.color\";\r\n\r\n/**\r\n * Interface for material loading adapters that provides a unified OpenPBR-like interface\r\n * for both OpenPBR and PBR materials, eliminating conditional branches in extensions.\r\n */\r\nexport interface IMaterialLoadingAdapter {\r\n /**\r\n * Gets the underlying material\r\n */\r\n readonly material: Material;\r\n\r\n /**\r\n * Whether the material should be treated as unlit\r\n */\r\n isUnlit: boolean;\r\n\r\n // ========================================\r\n // CULLING PROPERTIES\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the back face culling\r\n */\r\n backFaceCulling: boolean;\r\n\r\n /**\r\n * Sets/gets the two sided lighting\r\n */\r\n twoSidedLighting: boolean;\r\n\r\n // ========================================\r\n // ALPHA PROPERTIES\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the alpha cutoff value (used for alpha test mode)\r\n */\r\n alphaCutOff: number;\r\n\r\n /**\r\n * Sets/gets whether to use alpha from albedo/base color texture\r\n */\r\n useAlphaFromBaseColorTexture: boolean;\r\n\r\n /**\r\n * Sets/Gets whether the transparency is treated as alpha coverage\r\n */\r\n transparencyAsAlphaCoverage: boolean;\r\n\r\n // ========================================\r\n // BASE PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the base color (OpenPBR: baseColor, PBR: albedoColor)\r\n */\r\n baseColor: Color3;\r\n\r\n /**\r\n * Sets/gets the base color texture (OpenPBR: baseColorTexture, PBR: albedoTexture)\r\n */\r\n baseColorTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the base diffuse roughness (OpenPBR: baseDiffuseRoughness, PBR: baseDiffuseRoughness)\r\n */\r\n baseDiffuseRoughness: number;\r\n\r\n /**\r\n * Sets/gets the base diffuse roughness texture (OpenPBR: baseDiffuseRoughnessTexture, PBR: baseDiffuseRoughnessTexture)\r\n */\r\n baseDiffuseRoughnessTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the base metalness (OpenPBR: baseMetalness, PBR: metallic)\r\n */\r\n baseMetalness: number;\r\n\r\n /**\r\n * Sets/gets the base metalness texture (OpenPBR: baseMetalnessTexture, PBR: metallicTexture)\r\n */\r\n baseMetalnessTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets whether to use roughness from metallic texture green channel\r\n */\r\n useRoughnessFromMetallicTextureGreen: boolean;\r\n\r\n /**\r\n * Sets whether to use metallic from metallic texture blue channel\r\n */\r\n useMetallicFromMetallicTextureBlue: boolean;\r\n\r\n // ========================================\r\n // SPECULAR PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Configures specular properties and enables OpenPBR BRDF model for edge color support\r\n * @param enableEdgeColor - Whether to enable edge color support\r\n */\r\n enableSpecularEdgeColor(enableEdgeColor?: boolean): void;\r\n\r\n /**\r\n * Sets/gets the specular weight (OpenPBR: specularWeight, PBR: metallicF0Factor)\r\n */\r\n specularWeight: number;\r\n\r\n /**\r\n * Sets/gets the specular weight texture (OpenPBR: specularWeightTexture, PBR: metallicReflectanceTexture)\r\n */\r\n specularWeightTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the specular color (OpenPBR: specularColor, PBR: reflectance)\r\n */\r\n specularColor: Color3;\r\n\r\n /**\r\n * Sets/gets the specular color texture (OpenPBR: specularColorTexture, PBR: reflectanceTexture)\r\n */\r\n specularColorTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the specular roughness (OpenPBR: specularRoughness, PBR: roughness)\r\n */\r\n specularRoughness: number;\r\n\r\n /**\r\n * Sets/gets the specular roughness texture\r\n */\r\n specularRoughnessTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the specular IOR (OpenPBR: specularIor, PBR: indexOfRefraction)\r\n */\r\n specularIor: number;\r\n\r\n // ========================================\r\n // EMISSION PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the emissive color (OpenPBR: emissionColor, PBR: emissiveColor)\r\n */\r\n emissionColor: Color3;\r\n\r\n /**\r\n * Sets/gets the emissive luminance (OpenPBR: emissionLuminance, PBR: emissiveIntensity)\r\n */\r\n emissionLuminance: number;\r\n\r\n /**\r\n * Sets/gets the emissive texture\r\n */\r\n emissionColorTexture: Nullable<BaseTexture>;\r\n\r\n // ========================================\r\n // AMBIENT OCCLUSION\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the ambient occlusion texture (OpenPBR: ambientOcclusionTexture, PBR: ambientTexture)\r\n */\r\n ambientOcclusionTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the ambient occlusion texture strength/level\r\n */\r\n ambientOcclusionTextureStrength: number;\r\n\r\n // ========================================\r\n // COAT PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Configures clear coat for PBR material\r\n */\r\n configureCoat(): void;\r\n\r\n /**\r\n * Sets/gets the coat weight (OpenPBR: coatWeight, PBR: clearCoat.intensity)\r\n */\r\n coatWeight: number;\r\n\r\n /**\r\n * Sets/gets the coat weight texture (OpenPBR: coatWeightTexture, PBR: clearCoat.texture)\r\n */\r\n coatWeightTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the coat color (OpenPBR: coatColor, no PBR equivalent)\r\n */\r\n coatColor: Color3;\r\n\r\n /**\r\n * Sets the coat color texture (OpenPBR: coatColorTexture, no PBR equivalent)\r\n */\r\n coatColorTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the coat roughness (OpenPBR: coatRoughness, PBR: clearCoat.roughness)\r\n */\r\n coatRoughness: number;\r\n\r\n /**\r\n * Sets/gets the coat roughness texture (OpenPBR: coatRoughnessTexture, PBR: clearCoat.textureRoughness)\r\n */\r\n coatRoughnessTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the coat index of refraction (IOR)\r\n */\r\n coatIor: number;\r\n\r\n /**\r\n * Sets the coat darkening (OpenPBR: coatDarkening, no PBR equivalent)\r\n */\r\n coatDarkening: number;\r\n\r\n /**\r\n * Sets the coat darkening texture (OpenPBR: coatDarkeningTexture, no PBR equivalent)\r\n */\r\n coatDarkeningTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the coat roughness anisotropy (OpenPBR: coatRoughnessAnisotropy, PBR: clearCoat.anisotropy.intensity)\r\n */\r\n coatRoughnessAnisotropy: number;\r\n\r\n /**\r\n * Sets the coat tangent angle for anisotropy (OpenPBR: geometryCoatTangentAngle, PBR: clearCoat.anisotropy.angle)\r\n */\r\n geometryCoatTangentAngle: number;\r\n\r\n /**\r\n * Sets the coat tangent texture for anisotropy (OpenPBR: geometryCoatTangentTexture, PBR: clearCoat.anisotropy.texture)\r\n */\r\n geometryCoatTangentTexture: Nullable<BaseTexture>;\r\n\r\n // ========================================\r\n // TRANSMISSION LAYER\r\n // ========================================\r\n\r\n /**\r\n * Sets the transmission weight (OpenPBR: transmissionWeight, PBR: subSurface.refractionIntensity)\r\n */\r\n transmissionWeight: number;\r\n\r\n /**\r\n * Sets the transmission weight texture (OpenPBR: transmissionWeightTexture, PBR: subSurface.refractionIntensityTexture)\r\n */\r\n transmissionWeightTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the attenuation distance (OpenPBR: attenuationDistance, PBR: subSurface.volumeIndexOfRefraction)\r\n */\r\n transmissionDepth: number;\r\n\r\n /**\r\n * Sets the attenuation color (OpenPBR: attenuationColor, PBR: subSurface.tintColor)\r\n */\r\n transmissionColor: Color3;\r\n\r\n /**\r\n * Sets the dispersion Abbe number\r\n */\r\n transmissionDispersionAbbeNumber: number;\r\n\r\n /**\r\n * Configures transmission for thin-surface transmission (KHR_materials_transmission)\r\n */\r\n configureTransmission(): void;\r\n\r\n // ========================================\r\n // VOLUME PROPERTIES\r\n // ========================================\r\n\r\n /**\r\n * Sets the thickness texture (OpenPBR: thicknessTexture, PBR: subSurface.thicknessTexture)\r\n */\r\n volumeThicknessTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the thickness factor (OpenPBR: thickness, PBR: subSurface.maximumThickness)\r\n */\r\n volumeThickness: number;\r\n\r\n // ========================================\r\n // SUBSURFACE PROPERTIES (Subsurface Scattering)\r\n // ========================================\r\n\r\n /**\r\n * Configures subsurface properties for PBR material\r\n */\r\n configureSubsurface(): void;\r\n\r\n /**\r\n * Sets/gets the subsurface weight\r\n */\r\n subsurfaceWeight: number;\r\n\r\n /**\r\n * Sets/gets the subsurface weight texture\r\n */\r\n subsurfaceWeightTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the subsurface color (OpenPBR: subsurfaceColor, PBR: subSurface.tintColor)\r\n */\r\n subsurfaceColor: Color3;\r\n\r\n /**\r\n * Sets/gets the subsurface color texture (OpenPBR: subsurfaceColorTexture, PBR: subSurface.tintColorTexture)\r\n */\r\n subsurfaceColorTexture: Nullable<BaseTexture>;\r\n\r\n // ========================================\r\n // FUZZ LAYER (Sheen)\r\n // ========================================\r\n\r\n /**\r\n * Configures initial settings for fuzz for material.\r\n */\r\n configureFuzz(): void;\r\n\r\n /**\r\n * Sets the fuzz weight (OpenPBR: fuzzWeight, PBR: fuzz.intensity)\r\n */\r\n fuzzWeight: number;\r\n\r\n /**\r\n * Sets the fuzz color (OpenPBR: fuzzColor, PBR: fuzz.color)\r\n */\r\n fuzzColor: Color3;\r\n\r\n /**\r\n * Sets the fuzz color texture (OpenPBR: fuzzColorTexture, PBR: fuzz.texture)\r\n */\r\n fuzzColorTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the fuzz roughness (OpenPBR: fuzzRoughness, PBR: fuzz.roughness)\r\n */\r\n fuzzRoughness: number;\r\n\r\n /**\r\n * Sets the fuzz roughness texture (OpenPBR: fuzzRoughnessTexture, PBR: fuzz.textureRoughness)\r\n */\r\n fuzzRoughnessTexture: Nullable<BaseTexture>;\r\n\r\n // ========================================\r\n // ANISOTROPY\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the specular roughness anisotropy (OpenPBR: specularRoughnessAnisotropy, PBR: anisotropy.intensity)\r\n */\r\n specularRoughnessAnisotropy: number;\r\n\r\n /**\r\n * Sets the anisotropy rotation (OpenPBR: anisotropyRotation, PBR: anisotropy.angle)\r\n */\r\n geometryTangentAngle: number;\r\n\r\n /**\r\n * Sets/gets the anisotropy texture (OpenPBR: geometryTangentTexture, PBR: anisotropy.texture)\r\n */\r\n geometryTangentTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Configures glTF-style anisotropy for OpenPBR materials\r\n * @param useGltfStyle - Whether to use glTF-style anisotropy (default: true)\r\n */\r\n configureGltfStyleAnisotropy(useGltfStyle?: boolean): void;\r\n\r\n // ========================================\r\n // THIN FILM IRIDESCENCE\r\n // ========================================\r\n\r\n /**\r\n * Sets the thin film weight\r\n */\r\n thinFilmWeight: number;\r\n\r\n /**\r\n * Sets the thin film IOR\r\n */\r\n thinFilmIor: number;\r\n\r\n /**\r\n * Sets the thin film thickness minimum\r\n */\r\n thinFilmThicknessMinimum: number;\r\n\r\n /**\r\n * Sets the thin film thickness maximum\r\n */\r\n thinFilmThicknessMaximum: number;\r\n\r\n /**\r\n * Sets the thin film iridescence texture\r\n */\r\n thinFilmWeightTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the thin film thickness texture\r\n */\r\n thinFilmThicknessTexture: Nullable<BaseTexture>;\r\n\r\n // ========================================\r\n // UNLIT MATERIALS\r\n // ========================================\r\n\r\n /**\r\n * Sets the unlit flag (OpenPBR: unlit, PBR: unlit)\r\n */\r\n unlit: boolean;\r\n\r\n // ========================================\r\n // GEOMETRY PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the geometry opacity (OpenPBR: geometryOpacity, PBR: alpha)\r\n */\r\n geometryOpacity: number;\r\n\r\n /**\r\n * Sets/gets the geometry normal texture (OpenPBR: geometryNormalTexture, PBR: bumpTexture)\r\n */\r\n geometryNormalTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the normal map inversions for PBR material only\r\n * @param invertX - Whether to invert the normal map on the X axis\r\n * @param invertY - Whether to invert the normal map on the Y axis\r\n */\r\n setNormalMapInversions(invertX: boolean, invertY: boolean): void;\r\n\r\n /**\r\n * Sets/gets the coat normal texture (OpenPBR: geometryCoatNormalTexture, PBR: clearCoat.bumpTexture)\r\n */\r\n geometryCoatNormalTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the coat normal texture scale\r\n */\r\n geometryCoatNormalTextureScale: number;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"materialLoadingAdapter.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/2.0/materialLoadingAdapter.ts"],"names":[],"mappings":"","sourcesContent":["import type { Material } from \"core/Materials/material\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Color3 } from \"core/Maths/math.color\";\r\n\r\n/**\r\n * Interface for material loading adapters that provides a unified OpenPBR-like interface\r\n * for both OpenPBR and PBR materials, eliminating conditional branches in extensions.\r\n */\r\nexport interface IMaterialLoadingAdapter {\r\n /**\r\n * Gets the underlying material\r\n */\r\n readonly material: Material;\r\n\r\n /**\r\n * Whether the material should be treated as unlit\r\n */\r\n isUnlit: boolean;\r\n\r\n // ========================================\r\n // CULLING PROPERTIES\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the back face culling\r\n */\r\n backFaceCulling: boolean;\r\n\r\n /**\r\n * Sets/gets the two sided lighting\r\n */\r\n twoSidedLighting: boolean;\r\n\r\n // ========================================\r\n // ALPHA PROPERTIES\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the alpha cutoff value (used for alpha test mode)\r\n */\r\n alphaCutOff: number;\r\n\r\n /**\r\n * Sets/gets whether to use alpha from albedo/base color texture\r\n */\r\n useAlphaFromBaseColorTexture: boolean;\r\n\r\n /**\r\n * Sets/Gets whether the transparency is treated as alpha coverage\r\n */\r\n transparencyAsAlphaCoverage: boolean;\r\n\r\n // ========================================\r\n // BASE PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the base color\r\n */\r\n baseColor: Color3;\r\n\r\n /**\r\n * Sets/gets the base color texture\r\n */\r\n baseColorTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the base diffuse roughness\r\n */\r\n baseDiffuseRoughness: number;\r\n\r\n /**\r\n * Sets/gets the base diffuse roughness texture\r\n */\r\n baseDiffuseRoughnessTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the base metalness\r\n */\r\n baseMetalness: number;\r\n\r\n /**\r\n * Sets/gets the base metalness texture\r\n */\r\n baseMetalnessTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets whether to use roughness from metallic texture green channel\r\n */\r\n useRoughnessFromMetallicTextureGreen: boolean;\r\n\r\n /**\r\n * Sets whether to use metallic from metallic texture blue channel\r\n */\r\n useMetallicFromMetallicTextureBlue: boolean;\r\n\r\n // ========================================\r\n // SPECULAR PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Configures specular properties and enables OpenPBR BRDF model for edge color support\r\n * @param enableEdgeColor - Whether to enable edge color support\r\n */\r\n enableSpecularEdgeColor(enableEdgeColor?: boolean): void;\r\n\r\n /**\r\n * Sets/gets the specular weight\r\n */\r\n specularWeight: number;\r\n\r\n /**\r\n * Sets/gets the specular weight texture\r\n */\r\n specularWeightTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the specular color\r\n */\r\n specularColor: Color3;\r\n\r\n /**\r\n * Sets/gets the specular color texture\r\n */\r\n specularColorTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the specular roughness\r\n */\r\n specularRoughness: number;\r\n\r\n /**\r\n * Sets/gets the specular roughness texture\r\n */\r\n specularRoughnessTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the specular IOR\r\n */\r\n specularIor: number;\r\n\r\n // ========================================\r\n // EMISSION PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the emissive color\r\n */\r\n emissionColor: Color3;\r\n\r\n /**\r\n * Sets/gets the emissive luminance\r\n */\r\n emissionLuminance: number;\r\n\r\n /**\r\n * Sets/gets the emissive texture\r\n */\r\n emissionColorTexture: Nullable<BaseTexture>;\r\n\r\n // ========================================\r\n // AMBIENT OCCLUSION\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the ambient occlusion texture\r\n */\r\n ambientOcclusionTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the ambient occlusion texture strength/level\r\n */\r\n ambientOcclusionTextureStrength: number;\r\n\r\n // ========================================\r\n // COAT PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Configures clear coat for PBR material\r\n */\r\n configureCoat(): void;\r\n\r\n /**\r\n * Sets/gets the coat weight\r\n */\r\n coatWeight: number;\r\n\r\n /**\r\n * Sets/gets the coat weight texture\r\n */\r\n coatWeightTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the coat color\r\n */\r\n coatColor: Color3;\r\n\r\n /**\r\n * Sets the coat color texture\r\n */\r\n coatColorTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the coat roughness\r\n */\r\n coatRoughness: number;\r\n\r\n /**\r\n * Sets/gets the coat roughness texture\r\n */\r\n coatRoughnessTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the coat index of refraction (IOR)\r\n */\r\n coatIor: number;\r\n\r\n /**\r\n * Sets the coat darkening\r\n */\r\n coatDarkening: number;\r\n\r\n /**\r\n * Sets the coat darkening texture\r\n */\r\n coatDarkeningTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the coat roughness anisotropy\r\n */\r\n coatRoughnessAnisotropy: number;\r\n\r\n /**\r\n * Sets the coat tangent angle for anisotropy\r\n */\r\n geometryCoatTangentAngle: number;\r\n\r\n /**\r\n * Sets the coat tangent texture for anisotropy\r\n */\r\n geometryCoatTangentTexture: Nullable<BaseTexture>;\r\n\r\n // ========================================\r\n // TRANSMISSION LAYER\r\n // ========================================\r\n\r\n /**\r\n * Sets the transmission weight\r\n */\r\n transmissionWeight: number;\r\n\r\n /**\r\n * Sets the transmission weight texture\r\n */\r\n transmissionWeightTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the attenuation distance\r\n */\r\n transmissionDepth: number;\r\n\r\n /**\r\n * Sets the attenuation color\r\n */\r\n transmissionColor: Color3;\r\n\r\n /**\r\n * Sets the dispersion Abbe number\r\n */\r\n transmissionDispersionAbbeNumber: number;\r\n\r\n /**\r\n * Configures transmission for thin-surface transmission (KHR_materials_transmission)\r\n */\r\n configureTransmission(): void;\r\n\r\n // ========================================\r\n // VOLUME PROPERTIES\r\n // ========================================\r\n\r\n /**\r\n * Sets the thickness texture\r\n */\r\n volumeThicknessTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the thickness factor\r\n */\r\n volumeThickness: number;\r\n\r\n // ========================================\r\n // SUBSURFACE PROPERTIES (Subsurface Scattering)\r\n // ========================================\r\n\r\n /**\r\n * Configures subsurface properties for PBR material\r\n */\r\n configureSubsurface(): void;\r\n\r\n /**\r\n * Sets/gets the subsurface weight\r\n */\r\n subsurfaceWeight: number;\r\n\r\n /**\r\n * Sets/gets the subsurface weight texture\r\n */\r\n subsurfaceWeightTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets/gets the subsurface color\r\n */\r\n subsurfaceColor: Color3;\r\n\r\n /**\r\n * Sets/gets the subsurface color texture\r\n */\r\n subsurfaceColorTexture: Nullable<BaseTexture>;\r\n\r\n // ========================================\r\n // FUZZ LAYER (Sheen)\r\n // ========================================\r\n\r\n /**\r\n * Configures initial settings for fuzz for material.\r\n */\r\n configureFuzz(): void;\r\n\r\n /**\r\n * Sets the fuzz weight\r\n */\r\n fuzzWeight: number;\r\n\r\n /**\r\n * Sets the fuzz weight texture\r\n */\r\n fuzzWeightTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the fuzz color\r\n */\r\n fuzzColor: Color3;\r\n\r\n /**\r\n * Sets the fuzz color texture\r\n */\r\n fuzzColorTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the fuzz roughness\r\n */\r\n fuzzRoughness: number;\r\n\r\n /**\r\n * Sets the fuzz roughness texture\r\n */\r\n fuzzRoughnessTexture: Nullable<BaseTexture>;\r\n\r\n // ========================================\r\n // ANISOTROPY\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the specular roughness anisotropy\r\n */\r\n specularRoughnessAnisotropy: number;\r\n\r\n /**\r\n * Sets the anisotropy rotation\r\n */\r\n geometryTangentAngle: number;\r\n\r\n /**\r\n * Sets/gets the anisotropy texture\r\n */\r\n geometryTangentTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Configures glTF-style anisotropy for OpenPBR materials\r\n * @param useGltfStyle - Whether to use glTF-style anisotropy (default: true)\r\n */\r\n configureGltfStyleAnisotropy(useGltfStyle?: boolean): void;\r\n\r\n // ========================================\r\n // THIN FILM IRIDESCENCE\r\n // ========================================\r\n\r\n /**\r\n * Sets the thin film weight\r\n */\r\n thinFilmWeight: number;\r\n\r\n /**\r\n * Sets the thin film IOR\r\n */\r\n thinFilmIor: number;\r\n\r\n /**\r\n * Sets the thin film thickness minimum\r\n */\r\n thinFilmThicknessMinimum: number;\r\n\r\n /**\r\n * Sets the thin film thickness maximum\r\n */\r\n thinFilmThicknessMaximum: number;\r\n\r\n /**\r\n * Sets the thin film iridescence texture\r\n */\r\n thinFilmWeightTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the thin film thickness texture\r\n */\r\n thinFilmThicknessTexture: Nullable<BaseTexture>;\r\n\r\n // ========================================\r\n // UNLIT MATERIALS\r\n // ========================================\r\n\r\n /**\r\n * Sets the unlit flag\r\n */\r\n unlit: boolean;\r\n\r\n // ========================================\r\n // GEOMETRY PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Sets/gets the geometry opacity\r\n */\r\n geometryOpacity: number;\r\n\r\n /**\r\n * Sets/gets the geometry normal texture\r\n */\r\n geometryNormalTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the normal map inversions for PBR material only\r\n * @param invertX - Whether to invert the normal map on the X axis\r\n * @param invertY - Whether to invert the normal map on the Y axis\r\n */\r\n setNormalMapInversions(invertX: boolean, invertY: boolean): void;\r\n\r\n /**\r\n * Sets/gets the coat normal texture\r\n */\r\n geometryCoatNormalTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Sets the coat normal texture scale\r\n */\r\n geometryCoatNormalTextureScale: number;\r\n}\r\n"]}
|
|
@@ -456,6 +456,11 @@ export declare class OpenPBRMaterialLoadingAdapter implements IMaterialLoadingAd
|
|
|
456
456
|
* @param value The fuzz weight value
|
|
457
457
|
*/
|
|
458
458
|
set fuzzWeight(value: number);
|
|
459
|
+
/**
|
|
460
|
+
* Sets the fuzz weight texture.
|
|
461
|
+
* @param value The fuzz weight texture or null
|
|
462
|
+
*/
|
|
463
|
+
set fuzzWeightTexture(value: Nullable<BaseTexture>);
|
|
459
464
|
/**
|
|
460
465
|
* Sets the fuzz color.
|
|
461
466
|
* @param value The fuzz color as a Color3
|
|
@@ -479,6 +479,9 @@ export class OpenPBRMaterialLoadingAdapter {
|
|
|
479
479
|
*/
|
|
480
480
|
set coatRoughnessTexture(value) {
|
|
481
481
|
this._material.coatRoughnessTexture = value;
|
|
482
|
+
if (value) {
|
|
483
|
+
this._material._useCoatRoughnessFromGreenChannel = true;
|
|
484
|
+
}
|
|
482
485
|
}
|
|
483
486
|
/**
|
|
484
487
|
* Gets the coat roughness texture of the OpenPBR material.
|
|
@@ -689,6 +692,13 @@ export class OpenPBRMaterialLoadingAdapter {
|
|
|
689
692
|
set fuzzWeight(value) {
|
|
690
693
|
this._material.fuzzWeight = value;
|
|
691
694
|
}
|
|
695
|
+
/**
|
|
696
|
+
* Sets the fuzz weight texture.
|
|
697
|
+
* @param value The fuzz weight texture or null
|
|
698
|
+
*/
|
|
699
|
+
set fuzzWeightTexture(value) {
|
|
700
|
+
this._material.fuzzWeightTexture = value;
|
|
701
|
+
}
|
|
692
702
|
/**
|
|
693
703
|
* Sets the fuzz color.
|
|
694
704
|
* @param value The fuzz color as a Color3
|
|
@@ -716,6 +726,7 @@ export class OpenPBRMaterialLoadingAdapter {
|
|
|
716
726
|
*/
|
|
717
727
|
set fuzzRoughnessTexture(value) {
|
|
718
728
|
this._material.fuzzRoughnessTexture = value;
|
|
729
|
+
this._material._useFuzzRoughnessFromTextureAlpha = true;
|
|
719
730
|
}
|
|
720
731
|
// ========================================
|
|
721
732
|
// ANISOTROPY
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openpbrMaterialLoadingAdapter.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/2.0/openpbrMaterialLoadingAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OpenPBRMaterial } from \"core/Materials/PBR/openpbrMaterial\";\r\nimport type { Material } from \"core/Materials/material\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Color3 } from \"core/Maths/math.color\";\r\nimport type { IMaterialLoadingAdapter } from \"./materialLoadingAdapter\";\r\n\r\n/**\r\n * Material Loading Adapter for OpenPBR materials that provides a unified OpenPBR-like interface.\r\n */\r\nexport class OpenPBRMaterialLoadingAdapter implements IMaterialLoadingAdapter {\r\n private _material: OpenPBRMaterial;\r\n\r\n /**\r\n * Creates a new instance of the OpenPBRMaterialLoadingAdapter.\r\n * @param material - The OpenPBR material to adapt.\r\n */\r\n constructor(material: Material) {\r\n this._material = material as OpenPBRMaterial;\r\n }\r\n\r\n /**\r\n * Gets the underlying material\r\n */\r\n public get material(): OpenPBRMaterial {\r\n return this._material;\r\n }\r\n\r\n /**\r\n * Whether the material should be treated as unlit\r\n */\r\n public get isUnlit(): boolean {\r\n return this._material.unlit;\r\n }\r\n\r\n /**\r\n * Sets whether the material should be treated as unlit\r\n */\r\n public set isUnlit(value: boolean) {\r\n this._material.unlit = value;\r\n }\r\n\r\n // ========================================\r\n // CULLING PROPERTIES\r\n // ========================================\r\n\r\n /**\r\n * Sets whether back face culling is enabled.\r\n * @param value True to enable back face culling\r\n */\r\n public set backFaceCulling(value: boolean) {\r\n this._material.backFaceCulling = value;\r\n }\r\n\r\n /**\r\n * Gets whether back face culling is enabled.\r\n * @returns True if back face culling is enabled\r\n */\r\n public get backFaceCulling(): boolean {\r\n return this._material.backFaceCulling;\r\n }\r\n\r\n /**\r\n * Sets whether two-sided lighting is enabled.\r\n * @param value True to enable two-sided lighting\r\n */\r\n public set twoSidedLighting(value: boolean) {\r\n this._material.twoSidedLighting = value;\r\n }\r\n\r\n /**\r\n * Gets whether two-sided lighting is enabled.\r\n * @returns True if two-sided lighting is enabled\r\n */\r\n public get twoSidedLighting(): boolean {\r\n return this._material.twoSidedLighting;\r\n }\r\n\r\n // ========================================\r\n // ALPHA PROPERTIES\r\n // ========================================\r\n\r\n /**\r\n * Sets the alpha cutoff value for alpha testing.\r\n * Note: OpenPBR doesn't have a direct equivalent, so this is a no-op.\r\n * @param value The alpha cutoff threshold (ignored for OpenPBR)\r\n */\r\n public set alphaCutOff(value: number) {\r\n // OpenPBR doesn't have a direct equivalent, but could be implemented if needed\r\n }\r\n\r\n /**\r\n * Gets the alpha cutoff value.\r\n * @returns Default value of 0.5 (OpenPBR doesn't support this directly)\r\n */\r\n public get alphaCutOff(): number {\r\n return 0.5; // Default value\r\n }\r\n\r\n /**\r\n * Sets whether to use alpha from the base color texture.\r\n * Note: OpenPBR handles this differently through the baseColorTexture alpha channel.\r\n * @param value True to use alpha from base color texture (handled automatically in OpenPBR)\r\n */\r\n public set useAlphaFromBaseColorTexture(value: boolean) {\r\n this._material._useAlphaFromBaseColorTexture = value;\r\n }\r\n\r\n /**\r\n * Gets whether alpha is used from the base color texture.\r\n * @returns Always false for OpenPBR as it's handled automatically\r\n */\r\n public get useAlphaFromBaseColorTexture(): boolean {\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets whether the transparency is treated as alpha coverage.\r\n */\r\n public get transparencyAsAlphaCoverage(): boolean {\r\n // OpenPBR doesn't support treating transparency as alpha coverage.\r\n return false;\r\n }\r\n\r\n /**\r\n * Sets/Gets whether the transparency is treated as alpha coverage\r\n */\r\n public set transparencyAsAlphaCoverage(value: boolean) {\r\n // OpenPBR doesn't support treating transparency as alpha coverage.\r\n }\r\n\r\n // ========================================\r\n // BASE PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Sets the base color of the OpenPBR material.\r\n * @param value The base color as a Color3\r\n */\r\n public set baseColor(value: Color3) {\r\n this._material.baseColor = value;\r\n }\r\n\r\n /**\r\n * Gets the base color of the OpenPBR material.\r\n * @returns The base color as a Color3\r\n */\r\n public get baseColor(): Color3 {\r\n return this._material.baseColor;\r\n }\r\n\r\n /**\r\n * Sets the base color texture of the OpenPBR material.\r\n * @param value The base color texture or null\r\n */\r\n public set baseColorTexture(value: Nullable<BaseTexture>) {\r\n this._material.baseColorTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the base color texture of the OpenPBR material.\r\n * @returns The base color texture or null\r\n */\r\n public get baseColorTexture(): Nullable<BaseTexture> {\r\n return this._material.baseColorTexture;\r\n }\r\n\r\n /**\r\n * Sets the base diffuse roughness of the OpenPBR material.\r\n * @param value The diffuse roughness value (0-1)\r\n */\r\n public set baseDiffuseRoughness(value: number) {\r\n this._material.baseDiffuseRoughness = value;\r\n }\r\n\r\n /**\r\n * Gets the base diffuse roughness of the OpenPBR material.\r\n * @returns The diffuse roughness value (0-1)\r\n */\r\n public get baseDiffuseRoughness(): number {\r\n return this._material.baseDiffuseRoughness;\r\n }\r\n\r\n /**\r\n * Sets the base diffuse roughness texture of the OpenPBR material.\r\n * @param value The diffuse roughness texture or null\r\n */\r\n public set baseDiffuseRoughnessTexture(value: Nullable<BaseTexture>) {\r\n this._material.baseDiffuseRoughnessTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the base diffuse roughness texture of the OpenPBR material.\r\n * @returns The diffuse roughness texture or null\r\n */\r\n public get baseDiffuseRoughnessTexture(): Nullable<BaseTexture> {\r\n return this._material.baseDiffuseRoughnessTexture;\r\n }\r\n\r\n /**\r\n * Sets the base metalness value of the OpenPBR material.\r\n * @param value The metalness value (0-1)\r\n */\r\n public set baseMetalness(value: number) {\r\n this._material.baseMetalness = value;\r\n }\r\n\r\n /**\r\n * Gets the base metalness value of the OpenPBR material.\r\n * @returns The metalness value (0-1)\r\n */\r\n public get baseMetalness(): number {\r\n return this._material.baseMetalness;\r\n }\r\n\r\n /**\r\n * Sets the base metalness texture of the OpenPBR material.\r\n * @param value The metalness texture or null\r\n */\r\n public set baseMetalnessTexture(value: Nullable<BaseTexture>) {\r\n this._material.baseMetalnessTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the base metalness texture of the OpenPBR material.\r\n * @returns The metalness texture or null\r\n */\r\n public get baseMetalnessTexture(): Nullable<BaseTexture> {\r\n return this._material.baseMetalnessTexture;\r\n }\r\n\r\n /**\r\n * Sets whether to use roughness from the metallic texture's green channel.\r\n * @param value True to use green channel for roughness\r\n */\r\n public set useRoughnessFromMetallicTextureGreen(value: boolean) {\r\n this._material._useRoughnessFromMetallicTextureGreen = value;\r\n }\r\n\r\n /**\r\n * Sets whether to use metalness from the metallic texture's blue channel.\r\n * @param value True to use blue channel for metalness\r\n */\r\n public set useMetallicFromMetallicTextureBlue(value: boolean) {\r\n this._material._useMetallicFromMetallicTextureBlue = value;\r\n }\r\n\r\n // ========================================\r\n // SPECULAR PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Configures specular properties for OpenPBR material.\r\n * @param _enableEdgeColor Whether to enable edge color support (ignored for OpenPBR)\r\n */\r\n public enableSpecularEdgeColor(_enableEdgeColor: boolean = false): void {\r\n // OpenPBR already supports edge color natively, no configuration needed\r\n }\r\n\r\n /**\r\n * Sets the specular weight of the OpenPBR material.\r\n * @param value The specular weight value (0-1)\r\n */\r\n public set specularWeight(value: number) {\r\n this._material.specularWeight = value;\r\n }\r\n\r\n /**\r\n * Gets the specular weight of the OpenPBR material.\r\n * @returns The specular weight value (0-1)\r\n */\r\n public get specularWeight(): number {\r\n return this._material.specularWeight;\r\n }\r\n\r\n /**\r\n * Sets the specular weight texture of the OpenPBR material.\r\n * If the same texture is used for specular color, optimizes by using alpha channel for weight.\r\n * @param value The specular weight texture or null\r\n */\r\n public set specularWeightTexture(value: Nullable<BaseTexture>) {\r\n if (this._material.specularColorTexture === value) {\r\n this._material.specularWeightTexture = null;\r\n this._material._useSpecularWeightFromSpecularColorTexture = true;\r\n this._material._useSpecularWeightFromAlpha = true;\r\n } else {\r\n this._material.specularWeightTexture = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the specular weight texture of the OpenPBR material.\r\n * @returns The specular weight texture or null\r\n */\r\n public get specularWeightTexture(): Nullable<BaseTexture> {\r\n return this._material.specularWeightTexture;\r\n }\r\n\r\n /**\r\n * Sets the specular color of the OpenPBR material.\r\n * @param value The specular color as a Color3\r\n */\r\n public set specularColor(value: Color3) {\r\n this._material.specularColor = value;\r\n }\r\n\r\n /**\r\n * Gets the specular color of the OpenPBR material.\r\n * @returns The specular color as a Color3\r\n */\r\n public get specularColor(): Color3 {\r\n return this._material.specularColor;\r\n }\r\n\r\n /**\r\n * Sets the specular color texture of the OpenPBR material.\r\n * If the same texture is used for specular weight, optimizes by using alpha channel for weight.\r\n * @param value The specular color texture or null\r\n */\r\n public set specularColorTexture(value: Nullable<BaseTexture>) {\r\n this._material.specularColorTexture = value;\r\n if (this._material.specularWeightTexture === this._material.specularColorTexture) {\r\n this._material.specularWeightTexture = null;\r\n this._material._useSpecularWeightFromSpecularColorTexture = true;\r\n this._material._useSpecularWeightFromAlpha = true;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the specular color texture of the OpenPBR material.\r\n * @returns The specular color texture or null\r\n */\r\n public get specularColorTexture(): Nullable<BaseTexture> {\r\n return this._material.specularColorTexture;\r\n }\r\n\r\n /**\r\n * Sets the specular roughness of the OpenPBR material.\r\n * @param value The roughness value (0-1)\r\n */\r\n public set specularRoughness(value: number) {\r\n this._material.specularRoughness = value;\r\n }\r\n\r\n /**\r\n * Gets the specular roughness of the OpenPBR material.\r\n * @returns The roughness value (0-1)\r\n */\r\n public get specularRoughness(): number {\r\n return this._material.specularRoughness;\r\n }\r\n\r\n /**\r\n * Sets the specular roughness texture of the OpenPBR material.\r\n * @param value The roughness texture or null\r\n */\r\n public set specularRoughnessTexture(value: Nullable<BaseTexture>) {\r\n this._material.specularRoughnessTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the specular roughness texture of the OpenPBR material.\r\n * @returns The roughness texture or null\r\n */\r\n public get specularRoughnessTexture(): Nullable<BaseTexture> {\r\n return this._material.specularRoughnessTexture;\r\n }\r\n\r\n /**\r\n * Sets the specular index of refraction (IOR) of the OpenPBR material.\r\n * @param value The IOR value\r\n */\r\n public set specularIor(value: number) {\r\n this._material.specularIor = value;\r\n }\r\n\r\n /**\r\n * Gets the specular index of refraction (IOR) of the OpenPBR material.\r\n * @returns The IOR value\r\n */\r\n public get specularIor(): number {\r\n return this._material.specularIor;\r\n }\r\n\r\n // ========================================\r\n // EMISSION PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Sets the emission color of the OpenPBR material.\r\n * @param value The emission color as a Color3\r\n */\r\n public set emissionColor(value: Color3) {\r\n this._material.emissionColor = value;\r\n }\r\n\r\n /**\r\n * Gets the emission color of the OpenPBR material.\r\n * @returns The emission color as a Color3\r\n */\r\n public get emissionColor(): Color3 {\r\n return this._material.emissionColor;\r\n }\r\n\r\n /**\r\n * Sets the emission luminance of the OpenPBR material.\r\n * @param value The emission luminance value\r\n */\r\n public set emissionLuminance(value: number) {\r\n this._material.emissionLuminance = value;\r\n }\r\n\r\n /**\r\n * Gets the emission luminance of the OpenPBR material.\r\n * @returns The emission luminance value\r\n */\r\n public get emissionLuminance(): number {\r\n return this._material.emissionLuminance;\r\n }\r\n\r\n /**\r\n * Sets the emission color texture of the OpenPBR material.\r\n * @param value The emission texture or null\r\n */\r\n public set emissionColorTexture(value: Nullable<BaseTexture>) {\r\n this._material.emissionColorTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the emission color texture of the OpenPBR material.\r\n * @returns The emission texture or null\r\n */\r\n public get emissionColorTexture(): Nullable<BaseTexture> {\r\n return this._material.emissionColorTexture;\r\n }\r\n\r\n // ========================================\r\n // AMBIENT OCCLUSION\r\n // ========================================\r\n\r\n /**\r\n * Sets the ambient occlusion texture of the OpenPBR material.\r\n * @param value The ambient occlusion texture or null\r\n */\r\n public set ambientOcclusionTexture(value: Nullable<BaseTexture>) {\r\n this._material.ambientOcclusionTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the ambient occlusion texture of the OpenPBR material.\r\n * @returns The ambient occlusion texture or null\r\n */\r\n public get ambientOcclusionTexture(): Nullable<BaseTexture> {\r\n return this._material.ambientOcclusionTexture;\r\n }\r\n\r\n /**\r\n * Sets the ambient occlusion texture strength by modifying the texture's level.\r\n * @param value The strength value (typically 0-1)\r\n */\r\n public set ambientOcclusionTextureStrength(value: number) {\r\n const texture = this._material.ambientOcclusionTexture;\r\n if (texture) {\r\n texture.level = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the ambient occlusion texture strength from the texture's level property.\r\n * @returns The strength value, defaults to 1.0 if no texture or level is set\r\n */\r\n public get ambientOcclusionTextureStrength(): number {\r\n const texture = this._material.ambientOcclusionTexture;\r\n return texture?.level ?? 1.0;\r\n }\r\n\r\n // ========================================\r\n // COAT PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Configures coat parameters for OpenPBR material.\r\n * OpenPBR coat is already built-in, so no configuration is needed.\r\n */\r\n public configureCoat(): void {\r\n // OpenPBR coat is already built-in, no configuration needed\r\n }\r\n\r\n /**\r\n * Sets the coat weight of the OpenPBR material.\r\n * @param value The coat weight value (0-1)\r\n */\r\n public set coatWeight(value: number) {\r\n this._material.coatWeight = value;\r\n }\r\n\r\n /**\r\n * Gets the coat weight of the OpenPBR material.\r\n * @returns The coat weight value (0-1)\r\n */\r\n public get coatWeight(): number {\r\n return this._material.coatWeight;\r\n }\r\n\r\n /**\r\n * Sets the coat weight texture of the OpenPBR material.\r\n * @param value The coat weight texture or null\r\n */\r\n public set coatWeightTexture(value: Nullable<BaseTexture>) {\r\n this._material.coatWeightTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the coat weight texture of the OpenPBR material.\r\n * @returns The coat weight texture or null\r\n */\r\n public get coatWeightTexture(): Nullable<BaseTexture> {\r\n return this._material.coatWeightTexture;\r\n }\r\n\r\n /**\r\n * Sets the coat color of the OpenPBR material.\r\n * @param value The coat color as a Color3\r\n */\r\n public set coatColor(value: Color3) {\r\n this._material.coatColor = value;\r\n }\r\n\r\n /**\r\n * Sets the coat color texture of the OpenPBR material.\r\n * @param value The coat color texture or null\r\n */\r\n public set coatColorTexture(value: Nullable<BaseTexture>) {\r\n this._material.coatColorTexture = value;\r\n }\r\n\r\n /**\r\n * Sets the coat roughness of the OpenPBR material.\r\n * @param value The coat roughness value (0-1)\r\n */\r\n public set coatRoughness(value: number) {\r\n this._material.coatRoughness = value;\r\n }\r\n\r\n /**\r\n * Gets the coat roughness of the OpenPBR material.\r\n * @returns The coat roughness value (0-1)\r\n */\r\n public get coatRoughness(): number {\r\n return this._material.coatRoughness;\r\n }\r\n\r\n /**\r\n * Sets the coat roughness texture of the OpenPBR material.\r\n * @param value The coat roughness texture or null\r\n */\r\n public set coatRoughnessTexture(value: Nullable<BaseTexture>) {\r\n this._material.coatRoughnessTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the coat roughness texture of the OpenPBR material.\r\n * @returns The coat roughness texture or null\r\n */\r\n public get coatRoughnessTexture(): Nullable<BaseTexture> {\r\n return this._material.coatRoughnessTexture;\r\n }\r\n\r\n /**\r\n * Sets the coat index of refraction (IOR) of the OpenPBR material.\r\n */\r\n public set coatIor(value: number) {\r\n this._material.coatIor = value;\r\n }\r\n\r\n /**\r\n * Sets the coat darkening value of the OpenPBR material.\r\n * @param value The coat darkening value\r\n */\r\n public set coatDarkening(value: number) {\r\n this._material.coatDarkening = value;\r\n }\r\n\r\n /**\r\n * Sets the coat darkening texture (OpenPBR: coatDarkeningTexture, no PBR equivalent)\r\n */\r\n public set coatDarkeningTexture(value: Nullable<BaseTexture>) {\r\n this._material.coatDarkeningTexture = value;\r\n }\r\n\r\n /**\r\n * Sets the coat roughness anisotropy.\r\n * TODO: Implementation pending OpenPBR coat anisotropy feature availability.\r\n * @param value The coat anisotropy intensity value\r\n */\r\n public set coatRoughnessAnisotropy(value: number) {\r\n this._material.coatRoughnessAnisotropy = value;\r\n }\r\n\r\n /**\r\n * Gets the coat roughness anisotropy.\r\n * TODO: Implementation pending OpenPBR coat anisotropy feature availability.\r\n * @returns Currently returns 0 as coat anisotropy is not yet available\r\n */\r\n public get coatRoughnessAnisotropy(): number {\r\n return this._material.coatRoughnessAnisotropy;\r\n }\r\n\r\n /**\r\n * Sets the coat tangent angle for anisotropy.\r\n * TODO: Implementation pending OpenPBR coat anisotropy feature availability.\r\n * @param value The coat anisotropy rotation angle in radians\r\n */\r\n public set geometryCoatTangentAngle(value: number) {\r\n this._material.geometryCoatTangentAngle = value;\r\n }\r\n\r\n /**\r\n * Sets the coat tangent texture for anisotropy.\r\n * TODO: Implementation pending OpenPBR coat anisotropy feature availability.\r\n * @param value The coat anisotropy texture or null\r\n */\r\n public set geometryCoatTangentTexture(value: Nullable<BaseTexture>) {\r\n this._material.geometryCoatTangentTexture = value;\r\n if (value) {\r\n this._material._useCoatRoughnessAnisotropyFromTangentTexture = true;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the coat tangent texture for anisotropy.\r\n * TODO: Implementation pending OpenPBR coat anisotropy feature availability.\r\n * @returns Currently returns null as coat anisotropy is not yet available\r\n */\r\n public get geometryCoatTangentTexture(): Nullable<BaseTexture> {\r\n return this._material.geometryCoatTangentTexture;\r\n }\r\n\r\n // ========================================\r\n // TRANSMISSION LAYER\r\n // ========================================\r\n\r\n /**\r\n * Sets the transmission weight.\r\n * TODO: Implementation pending OpenPBR transmission feature availability.\r\n * @param value The transmission weight value (0-1)\r\n */\r\n public set transmissionWeight(value: number) {\r\n // TODO: Implement when OpenPBR transmission is available\r\n // this._material.transmissionWeight = value;\r\n }\r\n\r\n /**\r\n * Sets the transmission weight texture.\r\n * TODO: Implementation pending OpenPBR transmission feature availability.\r\n * @param value The transmission weight texture or null\r\n */\r\n public set transmissionWeightTexture(value: Nullable<BaseTexture>) {\r\n // TODO: Implement when OpenPBR transmission is available\r\n // this._material.transmissionWeightTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the transmission weight.\r\n * TODO: Implementation pending OpenPBR transmission feature availability.\r\n * @returns Currently returns 0 as transmission is not yet available\r\n */\r\n public get transmissionWeight(): number {\r\n // TODO: Implement when OpenPBR transmission is available\r\n // return this._material.transmissionWeight;\r\n return 0;\r\n }\r\n\r\n /**\r\n * Gets the transmission dispersion Abbe number.\r\n * @param value The Abbe number value\r\n */\r\n public set transmissionDispersionAbbeNumber(value: number) {\r\n // TODO: Implement when OpenPBR transmission dispersion is available\r\n }\r\n\r\n /**\r\n * Configures transmission for OpenPBR material.\r\n * TODO: Implementation pending OpenPBR transmission feature availability.\r\n */\r\n public configureTransmission(): void {\r\n // OpenPBR transmission will be configured differently when available\r\n }\r\n\r\n // ========================================\r\n // VOLUME PROPERTIES (Subsurface Scattering)\r\n // ========================================\r\n\r\n /**\r\n * Sets the attenuation distance for volume scattering.\r\n * TODO: Implementation pending OpenPBR volume feature availability.\r\n * @param value The attenuation distance value\r\n */\r\n public set transmissionDepth(value: number) {\r\n // TODO: Implement when OpenPBR volume properties are available\r\n // this._material.attenuationDistance = value;\r\n }\r\n\r\n /**\r\n * Sets the attenuation color for volume scattering.\r\n * TODO: Implementation pending OpenPBR volume feature availability.\r\n * @param value The attenuation color as a Color3\r\n */\r\n public set transmissionColor(value: Color3) {\r\n // TODO: Implement when OpenPBR volume properties are available\r\n // this._material.attenuationColor = value;\r\n }\r\n\r\n /**\r\n * Sets the thickness texture for volume scattering.\r\n * TODO: Implementation pending OpenPBR volume feature availability.\r\n * @param value The thickness texture or null\r\n */\r\n public set volumeThicknessTexture(value: Nullable<BaseTexture>) {\r\n // TODO: Implement when OpenPBR volume properties are available\r\n // this._material.thicknessTexture = value;\r\n }\r\n\r\n /**\r\n * Sets the thickness factor for volume scattering.\r\n * TODO: Implementation pending OpenPBR volume feature availability.\r\n * @param value The thickness value\r\n */\r\n public set volumeThickness(value: number) {\r\n // TODO: Implement when OpenPBR volume properties are available\r\n // this._material.thickness = value;\r\n }\r\n\r\n // ========================================\r\n // SUBSURFACE PROPERTIES (Subsurface Scattering)\r\n // ========================================\r\n\r\n /**\r\n * Configures subsurface properties for PBR material\r\n */\r\n public configureSubsurface(): void {\r\n // TODO\r\n }\r\n\r\n /**\r\n * Sets the subsurface weight\r\n */\r\n public set subsurfaceWeight(value: number) {\r\n // TODO\r\n }\r\n\r\n public get subsurfaceWeight(): number {\r\n // TODO\r\n return 0;\r\n }\r\n\r\n /**\r\n * Sets the subsurface weight texture\r\n */\r\n public set subsurfaceWeightTexture(value: Nullable<BaseTexture>) {\r\n // TODO\r\n }\r\n\r\n /**\r\n * Sets the subsurface color.\r\n * @param value The subsurface tint color as a Color3\r\n */\r\n public set subsurfaceColor(value: Color3) {\r\n // TODO\r\n }\r\n\r\n /**\r\n * Sets the subsurface color texture.\r\n * @param value The subsurface tint texture or null\r\n */\r\n public set subsurfaceColorTexture(value: Nullable<BaseTexture>) {\r\n // TODO\r\n }\r\n\r\n // ========================================\r\n // FUZZ LAYER (Sheen)\r\n // ========================================\r\n\r\n /**\r\n * Configures fuzz for OpenPBR.\r\n * Enables fuzz and sets up proper configuration.\r\n */\r\n public configureFuzz(): void {\r\n // Currently no setup to do for OpenPBR\r\n }\r\n\r\n /**\r\n * Sets the fuzz weight.\r\n * @param value The fuzz weight value\r\n */\r\n public set fuzzWeight(value: number) {\r\n this._material.fuzzWeight = value;\r\n }\r\n\r\n /**\r\n * Sets the fuzz color.\r\n * @param value The fuzz color as a Color3\r\n */\r\n public set fuzzColor(value: Color3) {\r\n this._material.fuzzColor = value;\r\n }\r\n\r\n /**\r\n * Sets the fuzz color texture.\r\n * @param value The fuzz color texture or null\r\n */\r\n public set fuzzColorTexture(value: Nullable<BaseTexture>) {\r\n this._material.fuzzColorTexture = value;\r\n }\r\n\r\n /**\r\n * Sets the fuzz roughness.\r\n * @param value The fuzz roughness value (0-1)\r\n */\r\n public set fuzzRoughness(value: number) {\r\n this._material.fuzzRoughness = value;\r\n }\r\n\r\n /**\r\n * Sets the fuzz roughness texture.\r\n * @param value The fuzz roughness texture or null\r\n */\r\n public set fuzzRoughnessTexture(value: Nullable<BaseTexture>) {\r\n this._material.fuzzRoughnessTexture = value;\r\n }\r\n\r\n // ========================================\r\n // ANISOTROPY\r\n // ========================================\r\n\r\n /**\r\n * Sets the specular roughness anisotropy of the OpenPBR material.\r\n * @param value The anisotropy intensity value\r\n */\r\n public set specularRoughnessAnisotropy(value: number) {\r\n this._material.specularRoughnessAnisotropy = value;\r\n }\r\n\r\n /**\r\n * Gets the specular roughness anisotropy of the OpenPBR material.\r\n * @returns The anisotropy intensity value\r\n */\r\n public get specularRoughnessAnisotropy(): number {\r\n return this._material.specularRoughnessAnisotropy;\r\n }\r\n\r\n /**\r\n * Sets the anisotropy rotation angle.\r\n * @param value The anisotropy rotation angle in radians\r\n */\r\n public set geometryTangentAngle(value: number) {\r\n this._material.geometryTangentAngle = value;\r\n }\r\n\r\n /**\r\n * Sets the geometry tangent texture for anisotropy.\r\n * Automatically enables using anisotropy from the tangent texture.\r\n * @param value The anisotropy texture or null\r\n */\r\n public set geometryTangentTexture(value: Nullable<BaseTexture>) {\r\n this._material.geometryTangentTexture = value;\r\n this._material._useSpecularRoughnessAnisotropyFromTangentTexture = true;\r\n }\r\n\r\n /**\r\n * Gets the geometry tangent texture for anisotropy.\r\n * @returns The anisotropy texture or null\r\n */\r\n public get geometryTangentTexture(): Nullable<BaseTexture> {\r\n return this._material.geometryTangentTexture;\r\n }\r\n\r\n /**\r\n * Configures glTF-style anisotropy for the OpenPBR material.\r\n * @param useGltfStyle Whether to use glTF-style anisotropy\r\n */\r\n public configureGltfStyleAnisotropy(useGltfStyle: boolean = true): void {\r\n this._material._useGltfStyleAnisotropy = useGltfStyle;\r\n }\r\n\r\n // ========================================\r\n // THIN FILM IRIDESCENCE\r\n // ========================================\r\n\r\n /**\r\n * Sets the thin film weight.\r\n * @param value The thin film weight value\r\n */\r\n public set thinFilmWeight(value: number) {\r\n this._material.thinFilmWeight = value;\r\n }\r\n\r\n /**\r\n * Sets the thin film IOR.\r\n * @param value The thin film IOR value\r\n */\r\n public set thinFilmIor(value: number) {\r\n this._material.thinFilmIor = value;\r\n }\r\n\r\n /**\r\n * Sets the thin film thickness minimum.\r\n * @param value The minimum thickness value in nanometers\r\n */\r\n public set thinFilmThicknessMinimum(value: number) {\r\n this._material.thinFilmThicknessMin = value / 1000.0; // Convert to micrometers for OpenPBR\r\n }\r\n\r\n /**\r\n * Sets the thin film thickness maximum.\r\n * @param value The maximum thickness value in nanometers\r\n */\r\n public set thinFilmThicknessMaximum(value: number) {\r\n this._material.thinFilmThickness = value / 1000.0; // Convert to micrometers for OpenPBR\r\n }\r\n\r\n /**\r\n * Sets the thin film weight texture.\r\n * @param value The thin film weight texture or null\r\n */\r\n public set thinFilmWeightTexture(value: Nullable<BaseTexture>) {\r\n this._material.thinFilmWeightTexture = value;\r\n }\r\n\r\n /**\r\n * Sets the thin film thickness texture.\r\n * @param value The thin film thickness texture or null\r\n */\r\n public set thinFilmThicknessTexture(value: Nullable<BaseTexture>) {\r\n this._material.thinFilmThicknessTexture = value;\r\n this._material._useThinFilmThicknessFromTextureGreen = true;\r\n }\r\n\r\n // ========================================\r\n // UNLIT MATERIALS\r\n // ========================================\r\n\r\n /**\r\n * Sets whether the OpenPBR material is unlit.\r\n * @param value True to make the material unlit\r\n */\r\n public set unlit(value: boolean) {\r\n this._material.unlit = value;\r\n }\r\n\r\n // ========================================\r\n // GEOMETRY PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Sets the geometry opacity of the OpenPBR material.\r\n * @param value The opacity value (0-1)\r\n */\r\n public set geometryOpacity(value: number) {\r\n this._material.geometryOpacity = value;\r\n }\r\n\r\n /**\r\n * Gets the geometry opacity of the OpenPBR material.\r\n * @returns The opacity value (0-1)\r\n */\r\n public get geometryOpacity(): number {\r\n return this._material.geometryOpacity;\r\n }\r\n\r\n /**\r\n * Sets the geometry normal texture of the OpenPBR material.\r\n * @param value The normal texture or null\r\n */\r\n public set geometryNormalTexture(value: Nullable<BaseTexture>) {\r\n this._material.geometryNormalTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the geometry normal texture of the OpenPBR material.\r\n * @returns The normal texture or null\r\n */\r\n public get geometryNormalTexture(): Nullable<BaseTexture> {\r\n return this._material.geometryNormalTexture;\r\n }\r\n\r\n /**\r\n * Sets the normal map inversions for the OpenPBR material.\r\n * Note: OpenPBR may handle normal map inversions differently or may not need them.\r\n * @param invertX Whether to invert the normal map on the X axis (may be ignored)\r\n * @param invertY Whether to invert the normal map on the Y axis (may be ignored)\r\n */\r\n public setNormalMapInversions(invertX: boolean, invertY: boolean): void {\r\n // OpenPBR handles normal map inversions differently or may not need them\r\n }\r\n\r\n /**\r\n * Sets the geometry coat normal texture of the OpenPBR material.\r\n * @param value The coat normal texture or null\r\n */\r\n public set geometryCoatNormalTexture(value: Nullable<BaseTexture>) {\r\n this._material.geometryCoatNormalTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the geometry coat normal texture of the OpenPBR material.\r\n * @returns The coat normal texture or null\r\n */\r\n public get geometryCoatNormalTexture(): Nullable<BaseTexture> {\r\n return this._material.geometryCoatNormalTexture;\r\n }\r\n\r\n /**\r\n * Sets the geometry coat normal texture scale.\r\n * @param value The scale value for the coat normal texture\r\n */\r\n public set geometryCoatNormalTextureScale(value: number) {\r\n if (this._material.geometryCoatNormalTexture) {\r\n this._material.geometryCoatNormalTexture.level = value;\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"openpbrMaterialLoadingAdapter.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/2.0/openpbrMaterialLoadingAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OpenPBRMaterial } from \"core/Materials/PBR/openpbrMaterial\";\r\nimport type { Material } from \"core/Materials/material\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Color3 } from \"core/Maths/math.color\";\r\nimport type { IMaterialLoadingAdapter } from \"./materialLoadingAdapter\";\r\n\r\n/**\r\n * Material Loading Adapter for OpenPBR materials that provides a unified OpenPBR-like interface.\r\n */\r\nexport class OpenPBRMaterialLoadingAdapter implements IMaterialLoadingAdapter {\r\n private _material: OpenPBRMaterial;\r\n\r\n /**\r\n * Creates a new instance of the OpenPBRMaterialLoadingAdapter.\r\n * @param material - The OpenPBR material to adapt.\r\n */\r\n constructor(material: Material) {\r\n this._material = material as OpenPBRMaterial;\r\n }\r\n\r\n /**\r\n * Gets the underlying material\r\n */\r\n public get material(): OpenPBRMaterial {\r\n return this._material;\r\n }\r\n\r\n /**\r\n * Whether the material should be treated as unlit\r\n */\r\n public get isUnlit(): boolean {\r\n return this._material.unlit;\r\n }\r\n\r\n /**\r\n * Sets whether the material should be treated as unlit\r\n */\r\n public set isUnlit(value: boolean) {\r\n this._material.unlit = value;\r\n }\r\n\r\n // ========================================\r\n // CULLING PROPERTIES\r\n // ========================================\r\n\r\n /**\r\n * Sets whether back face culling is enabled.\r\n * @param value True to enable back face culling\r\n */\r\n public set backFaceCulling(value: boolean) {\r\n this._material.backFaceCulling = value;\r\n }\r\n\r\n /**\r\n * Gets whether back face culling is enabled.\r\n * @returns True if back face culling is enabled\r\n */\r\n public get backFaceCulling(): boolean {\r\n return this._material.backFaceCulling;\r\n }\r\n\r\n /**\r\n * Sets whether two-sided lighting is enabled.\r\n * @param value True to enable two-sided lighting\r\n */\r\n public set twoSidedLighting(value: boolean) {\r\n this._material.twoSidedLighting = value;\r\n }\r\n\r\n /**\r\n * Gets whether two-sided lighting is enabled.\r\n * @returns True if two-sided lighting is enabled\r\n */\r\n public get twoSidedLighting(): boolean {\r\n return this._material.twoSidedLighting;\r\n }\r\n\r\n // ========================================\r\n // ALPHA PROPERTIES\r\n // ========================================\r\n\r\n /**\r\n * Sets the alpha cutoff value for alpha testing.\r\n * Note: OpenPBR doesn't have a direct equivalent, so this is a no-op.\r\n * @param value The alpha cutoff threshold (ignored for OpenPBR)\r\n */\r\n public set alphaCutOff(value: number) {\r\n // OpenPBR doesn't have a direct equivalent, but could be implemented if needed\r\n }\r\n\r\n /**\r\n * Gets the alpha cutoff value.\r\n * @returns Default value of 0.5 (OpenPBR doesn't support this directly)\r\n */\r\n public get alphaCutOff(): number {\r\n return 0.5; // Default value\r\n }\r\n\r\n /**\r\n * Sets whether to use alpha from the base color texture.\r\n * Note: OpenPBR handles this differently through the baseColorTexture alpha channel.\r\n * @param value True to use alpha from base color texture (handled automatically in OpenPBR)\r\n */\r\n public set useAlphaFromBaseColorTexture(value: boolean) {\r\n this._material._useAlphaFromBaseColorTexture = value;\r\n }\r\n\r\n /**\r\n * Gets whether alpha is used from the base color texture.\r\n * @returns Always false for OpenPBR as it's handled automatically\r\n */\r\n public get useAlphaFromBaseColorTexture(): boolean {\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets whether the transparency is treated as alpha coverage.\r\n */\r\n public get transparencyAsAlphaCoverage(): boolean {\r\n // OpenPBR doesn't support treating transparency as alpha coverage.\r\n return false;\r\n }\r\n\r\n /**\r\n * Sets/Gets whether the transparency is treated as alpha coverage\r\n */\r\n public set transparencyAsAlphaCoverage(value: boolean) {\r\n // OpenPBR doesn't support treating transparency as alpha coverage.\r\n }\r\n\r\n // ========================================\r\n // BASE PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Sets the base color of the OpenPBR material.\r\n * @param value The base color as a Color3\r\n */\r\n public set baseColor(value: Color3) {\r\n this._material.baseColor = value;\r\n }\r\n\r\n /**\r\n * Gets the base color of the OpenPBR material.\r\n * @returns The base color as a Color3\r\n */\r\n public get baseColor(): Color3 {\r\n return this._material.baseColor;\r\n }\r\n\r\n /**\r\n * Sets the base color texture of the OpenPBR material.\r\n * @param value The base color texture or null\r\n */\r\n public set baseColorTexture(value: Nullable<BaseTexture>) {\r\n this._material.baseColorTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the base color texture of the OpenPBR material.\r\n * @returns The base color texture or null\r\n */\r\n public get baseColorTexture(): Nullable<BaseTexture> {\r\n return this._material.baseColorTexture;\r\n }\r\n\r\n /**\r\n * Sets the base diffuse roughness of the OpenPBR material.\r\n * @param value The diffuse roughness value (0-1)\r\n */\r\n public set baseDiffuseRoughness(value: number) {\r\n this._material.baseDiffuseRoughness = value;\r\n }\r\n\r\n /**\r\n * Gets the base diffuse roughness of the OpenPBR material.\r\n * @returns The diffuse roughness value (0-1)\r\n */\r\n public get baseDiffuseRoughness(): number {\r\n return this._material.baseDiffuseRoughness;\r\n }\r\n\r\n /**\r\n * Sets the base diffuse roughness texture of the OpenPBR material.\r\n * @param value The diffuse roughness texture or null\r\n */\r\n public set baseDiffuseRoughnessTexture(value: Nullable<BaseTexture>) {\r\n this._material.baseDiffuseRoughnessTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the base diffuse roughness texture of the OpenPBR material.\r\n * @returns The diffuse roughness texture or null\r\n */\r\n public get baseDiffuseRoughnessTexture(): Nullable<BaseTexture> {\r\n return this._material.baseDiffuseRoughnessTexture;\r\n }\r\n\r\n /**\r\n * Sets the base metalness value of the OpenPBR material.\r\n * @param value The metalness value (0-1)\r\n */\r\n public set baseMetalness(value: number) {\r\n this._material.baseMetalness = value;\r\n }\r\n\r\n /**\r\n * Gets the base metalness value of the OpenPBR material.\r\n * @returns The metalness value (0-1)\r\n */\r\n public get baseMetalness(): number {\r\n return this._material.baseMetalness;\r\n }\r\n\r\n /**\r\n * Sets the base metalness texture of the OpenPBR material.\r\n * @param value The metalness texture or null\r\n */\r\n public set baseMetalnessTexture(value: Nullable<BaseTexture>) {\r\n this._material.baseMetalnessTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the base metalness texture of the OpenPBR material.\r\n * @returns The metalness texture or null\r\n */\r\n public get baseMetalnessTexture(): Nullable<BaseTexture> {\r\n return this._material.baseMetalnessTexture;\r\n }\r\n\r\n /**\r\n * Sets whether to use roughness from the metallic texture's green channel.\r\n * @param value True to use green channel for roughness\r\n */\r\n public set useRoughnessFromMetallicTextureGreen(value: boolean) {\r\n this._material._useRoughnessFromMetallicTextureGreen = value;\r\n }\r\n\r\n /**\r\n * Sets whether to use metalness from the metallic texture's blue channel.\r\n * @param value True to use blue channel for metalness\r\n */\r\n public set useMetallicFromMetallicTextureBlue(value: boolean) {\r\n this._material._useMetallicFromMetallicTextureBlue = value;\r\n }\r\n\r\n // ========================================\r\n // SPECULAR PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Configures specular properties for OpenPBR material.\r\n * @param _enableEdgeColor Whether to enable edge color support (ignored for OpenPBR)\r\n */\r\n public enableSpecularEdgeColor(_enableEdgeColor: boolean = false): void {\r\n // OpenPBR already supports edge color natively, no configuration needed\r\n }\r\n\r\n /**\r\n * Sets the specular weight of the OpenPBR material.\r\n * @param value The specular weight value (0-1)\r\n */\r\n public set specularWeight(value: number) {\r\n this._material.specularWeight = value;\r\n }\r\n\r\n /**\r\n * Gets the specular weight of the OpenPBR material.\r\n * @returns The specular weight value (0-1)\r\n */\r\n public get specularWeight(): number {\r\n return this._material.specularWeight;\r\n }\r\n\r\n /**\r\n * Sets the specular weight texture of the OpenPBR material.\r\n * If the same texture is used for specular color, optimizes by using alpha channel for weight.\r\n * @param value The specular weight texture or null\r\n */\r\n public set specularWeightTexture(value: Nullable<BaseTexture>) {\r\n if (this._material.specularColorTexture === value) {\r\n this._material.specularWeightTexture = null;\r\n this._material._useSpecularWeightFromSpecularColorTexture = true;\r\n this._material._useSpecularWeightFromAlpha = true;\r\n } else {\r\n this._material.specularWeightTexture = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the specular weight texture of the OpenPBR material.\r\n * @returns The specular weight texture or null\r\n */\r\n public get specularWeightTexture(): Nullable<BaseTexture> {\r\n return this._material.specularWeightTexture;\r\n }\r\n\r\n /**\r\n * Sets the specular color of the OpenPBR material.\r\n * @param value The specular color as a Color3\r\n */\r\n public set specularColor(value: Color3) {\r\n this._material.specularColor = value;\r\n }\r\n\r\n /**\r\n * Gets the specular color of the OpenPBR material.\r\n * @returns The specular color as a Color3\r\n */\r\n public get specularColor(): Color3 {\r\n return this._material.specularColor;\r\n }\r\n\r\n /**\r\n * Sets the specular color texture of the OpenPBR material.\r\n * If the same texture is used for specular weight, optimizes by using alpha channel for weight.\r\n * @param value The specular color texture or null\r\n */\r\n public set specularColorTexture(value: Nullable<BaseTexture>) {\r\n this._material.specularColorTexture = value;\r\n if (this._material.specularWeightTexture === this._material.specularColorTexture) {\r\n this._material.specularWeightTexture = null;\r\n this._material._useSpecularWeightFromSpecularColorTexture = true;\r\n this._material._useSpecularWeightFromAlpha = true;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the specular color texture of the OpenPBR material.\r\n * @returns The specular color texture or null\r\n */\r\n public get specularColorTexture(): Nullable<BaseTexture> {\r\n return this._material.specularColorTexture;\r\n }\r\n\r\n /**\r\n * Sets the specular roughness of the OpenPBR material.\r\n * @param value The roughness value (0-1)\r\n */\r\n public set specularRoughness(value: number) {\r\n this._material.specularRoughness = value;\r\n }\r\n\r\n /**\r\n * Gets the specular roughness of the OpenPBR material.\r\n * @returns The roughness value (0-1)\r\n */\r\n public get specularRoughness(): number {\r\n return this._material.specularRoughness;\r\n }\r\n\r\n /**\r\n * Sets the specular roughness texture of the OpenPBR material.\r\n * @param value The roughness texture or null\r\n */\r\n public set specularRoughnessTexture(value: Nullable<BaseTexture>) {\r\n this._material.specularRoughnessTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the specular roughness texture of the OpenPBR material.\r\n * @returns The roughness texture or null\r\n */\r\n public get specularRoughnessTexture(): Nullable<BaseTexture> {\r\n return this._material.specularRoughnessTexture;\r\n }\r\n\r\n /**\r\n * Sets the specular index of refraction (IOR) of the OpenPBR material.\r\n * @param value The IOR value\r\n */\r\n public set specularIor(value: number) {\r\n this._material.specularIor = value;\r\n }\r\n\r\n /**\r\n * Gets the specular index of refraction (IOR) of the OpenPBR material.\r\n * @returns The IOR value\r\n */\r\n public get specularIor(): number {\r\n return this._material.specularIor;\r\n }\r\n\r\n // ========================================\r\n // EMISSION PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Sets the emission color of the OpenPBR material.\r\n * @param value The emission color as a Color3\r\n */\r\n public set emissionColor(value: Color3) {\r\n this._material.emissionColor = value;\r\n }\r\n\r\n /**\r\n * Gets the emission color of the OpenPBR material.\r\n * @returns The emission color as a Color3\r\n */\r\n public get emissionColor(): Color3 {\r\n return this._material.emissionColor;\r\n }\r\n\r\n /**\r\n * Sets the emission luminance of the OpenPBR material.\r\n * @param value The emission luminance value\r\n */\r\n public set emissionLuminance(value: number) {\r\n this._material.emissionLuminance = value;\r\n }\r\n\r\n /**\r\n * Gets the emission luminance of the OpenPBR material.\r\n * @returns The emission luminance value\r\n */\r\n public get emissionLuminance(): number {\r\n return this._material.emissionLuminance;\r\n }\r\n\r\n /**\r\n * Sets the emission color texture of the OpenPBR material.\r\n * @param value The emission texture or null\r\n */\r\n public set emissionColorTexture(value: Nullable<BaseTexture>) {\r\n this._material.emissionColorTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the emission color texture of the OpenPBR material.\r\n * @returns The emission texture or null\r\n */\r\n public get emissionColorTexture(): Nullable<BaseTexture> {\r\n return this._material.emissionColorTexture;\r\n }\r\n\r\n // ========================================\r\n // AMBIENT OCCLUSION\r\n // ========================================\r\n\r\n /**\r\n * Sets the ambient occlusion texture of the OpenPBR material.\r\n * @param value The ambient occlusion texture or null\r\n */\r\n public set ambientOcclusionTexture(value: Nullable<BaseTexture>) {\r\n this._material.ambientOcclusionTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the ambient occlusion texture of the OpenPBR material.\r\n * @returns The ambient occlusion texture or null\r\n */\r\n public get ambientOcclusionTexture(): Nullable<BaseTexture> {\r\n return this._material.ambientOcclusionTexture;\r\n }\r\n\r\n /**\r\n * Sets the ambient occlusion texture strength by modifying the texture's level.\r\n * @param value The strength value (typically 0-1)\r\n */\r\n public set ambientOcclusionTextureStrength(value: number) {\r\n const texture = this._material.ambientOcclusionTexture;\r\n if (texture) {\r\n texture.level = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the ambient occlusion texture strength from the texture's level property.\r\n * @returns The strength value, defaults to 1.0 if no texture or level is set\r\n */\r\n public get ambientOcclusionTextureStrength(): number {\r\n const texture = this._material.ambientOcclusionTexture;\r\n return texture?.level ?? 1.0;\r\n }\r\n\r\n // ========================================\r\n // COAT PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Configures coat parameters for OpenPBR material.\r\n * OpenPBR coat is already built-in, so no configuration is needed.\r\n */\r\n public configureCoat(): void {\r\n // OpenPBR coat is already built-in, no configuration needed\r\n }\r\n\r\n /**\r\n * Sets the coat weight of the OpenPBR material.\r\n * @param value The coat weight value (0-1)\r\n */\r\n public set coatWeight(value: number) {\r\n this._material.coatWeight = value;\r\n }\r\n\r\n /**\r\n * Gets the coat weight of the OpenPBR material.\r\n * @returns The coat weight value (0-1)\r\n */\r\n public get coatWeight(): number {\r\n return this._material.coatWeight;\r\n }\r\n\r\n /**\r\n * Sets the coat weight texture of the OpenPBR material.\r\n * @param value The coat weight texture or null\r\n */\r\n public set coatWeightTexture(value: Nullable<BaseTexture>) {\r\n this._material.coatWeightTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the coat weight texture of the OpenPBR material.\r\n * @returns The coat weight texture or null\r\n */\r\n public get coatWeightTexture(): Nullable<BaseTexture> {\r\n return this._material.coatWeightTexture;\r\n }\r\n\r\n /**\r\n * Sets the coat color of the OpenPBR material.\r\n * @param value The coat color as a Color3\r\n */\r\n public set coatColor(value: Color3) {\r\n this._material.coatColor = value;\r\n }\r\n\r\n /**\r\n * Sets the coat color texture of the OpenPBR material.\r\n * @param value The coat color texture or null\r\n */\r\n public set coatColorTexture(value: Nullable<BaseTexture>) {\r\n this._material.coatColorTexture = value;\r\n }\r\n\r\n /**\r\n * Sets the coat roughness of the OpenPBR material.\r\n * @param value The coat roughness value (0-1)\r\n */\r\n public set coatRoughness(value: number) {\r\n this._material.coatRoughness = value;\r\n }\r\n\r\n /**\r\n * Gets the coat roughness of the OpenPBR material.\r\n * @returns The coat roughness value (0-1)\r\n */\r\n public get coatRoughness(): number {\r\n return this._material.coatRoughness;\r\n }\r\n\r\n /**\r\n * Sets the coat roughness texture of the OpenPBR material.\r\n * @param value The coat roughness texture or null\r\n */\r\n public set coatRoughnessTexture(value: Nullable<BaseTexture>) {\r\n this._material.coatRoughnessTexture = value;\r\n if (value) {\r\n this._material._useCoatRoughnessFromGreenChannel = true;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the coat roughness texture of the OpenPBR material.\r\n * @returns The coat roughness texture or null\r\n */\r\n public get coatRoughnessTexture(): Nullable<BaseTexture> {\r\n return this._material.coatRoughnessTexture;\r\n }\r\n\r\n /**\r\n * Sets the coat index of refraction (IOR) of the OpenPBR material.\r\n */\r\n public set coatIor(value: number) {\r\n this._material.coatIor = value;\r\n }\r\n\r\n /**\r\n * Sets the coat darkening value of the OpenPBR material.\r\n * @param value The coat darkening value\r\n */\r\n public set coatDarkening(value: number) {\r\n this._material.coatDarkening = value;\r\n }\r\n\r\n /**\r\n * Sets the coat darkening texture (OpenPBR: coatDarkeningTexture, no PBR equivalent)\r\n */\r\n public set coatDarkeningTexture(value: Nullable<BaseTexture>) {\r\n this._material.coatDarkeningTexture = value;\r\n }\r\n\r\n /**\r\n * Sets the coat roughness anisotropy.\r\n * TODO: Implementation pending OpenPBR coat anisotropy feature availability.\r\n * @param value The coat anisotropy intensity value\r\n */\r\n public set coatRoughnessAnisotropy(value: number) {\r\n this._material.coatRoughnessAnisotropy = value;\r\n }\r\n\r\n /**\r\n * Gets the coat roughness anisotropy.\r\n * TODO: Implementation pending OpenPBR coat anisotropy feature availability.\r\n * @returns Currently returns 0 as coat anisotropy is not yet available\r\n */\r\n public get coatRoughnessAnisotropy(): number {\r\n return this._material.coatRoughnessAnisotropy;\r\n }\r\n\r\n /**\r\n * Sets the coat tangent angle for anisotropy.\r\n * TODO: Implementation pending OpenPBR coat anisotropy feature availability.\r\n * @param value The coat anisotropy rotation angle in radians\r\n */\r\n public set geometryCoatTangentAngle(value: number) {\r\n this._material.geometryCoatTangentAngle = value;\r\n }\r\n\r\n /**\r\n * Sets the coat tangent texture for anisotropy.\r\n * TODO: Implementation pending OpenPBR coat anisotropy feature availability.\r\n * @param value The coat anisotropy texture or null\r\n */\r\n public set geometryCoatTangentTexture(value: Nullable<BaseTexture>) {\r\n this._material.geometryCoatTangentTexture = value;\r\n if (value) {\r\n this._material._useCoatRoughnessAnisotropyFromTangentTexture = true;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the coat tangent texture for anisotropy.\r\n * TODO: Implementation pending OpenPBR coat anisotropy feature availability.\r\n * @returns Currently returns null as coat anisotropy is not yet available\r\n */\r\n public get geometryCoatTangentTexture(): Nullable<BaseTexture> {\r\n return this._material.geometryCoatTangentTexture;\r\n }\r\n\r\n // ========================================\r\n // TRANSMISSION LAYER\r\n // ========================================\r\n\r\n /**\r\n * Sets the transmission weight.\r\n * TODO: Implementation pending OpenPBR transmission feature availability.\r\n * @param value The transmission weight value (0-1)\r\n */\r\n public set transmissionWeight(value: number) {\r\n // TODO: Implement when OpenPBR transmission is available\r\n // this._material.transmissionWeight = value;\r\n }\r\n\r\n /**\r\n * Sets the transmission weight texture.\r\n * TODO: Implementation pending OpenPBR transmission feature availability.\r\n * @param value The transmission weight texture or null\r\n */\r\n public set transmissionWeightTexture(value: Nullable<BaseTexture>) {\r\n // TODO: Implement when OpenPBR transmission is available\r\n // this._material.transmissionWeightTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the transmission weight.\r\n * TODO: Implementation pending OpenPBR transmission feature availability.\r\n * @returns Currently returns 0 as transmission is not yet available\r\n */\r\n public get transmissionWeight(): number {\r\n // TODO: Implement when OpenPBR transmission is available\r\n // return this._material.transmissionWeight;\r\n return 0;\r\n }\r\n\r\n /**\r\n * Gets the transmission dispersion Abbe number.\r\n * @param value The Abbe number value\r\n */\r\n public set transmissionDispersionAbbeNumber(value: number) {\r\n // TODO: Implement when OpenPBR transmission dispersion is available\r\n }\r\n\r\n /**\r\n * Configures transmission for OpenPBR material.\r\n * TODO: Implementation pending OpenPBR transmission feature availability.\r\n */\r\n public configureTransmission(): void {\r\n // OpenPBR transmission will be configured differently when available\r\n }\r\n\r\n // ========================================\r\n // VOLUME PROPERTIES (Subsurface Scattering)\r\n // ========================================\r\n\r\n /**\r\n * Sets the attenuation distance for volume scattering.\r\n * TODO: Implementation pending OpenPBR volume feature availability.\r\n * @param value The attenuation distance value\r\n */\r\n public set transmissionDepth(value: number) {\r\n // TODO: Implement when OpenPBR volume properties are available\r\n // this._material.attenuationDistance = value;\r\n }\r\n\r\n /**\r\n * Sets the attenuation color for volume scattering.\r\n * TODO: Implementation pending OpenPBR volume feature availability.\r\n * @param value The attenuation color as a Color3\r\n */\r\n public set transmissionColor(value: Color3) {\r\n // TODO: Implement when OpenPBR volume properties are available\r\n // this._material.attenuationColor = value;\r\n }\r\n\r\n /**\r\n * Sets the thickness texture for volume scattering.\r\n * TODO: Implementation pending OpenPBR volume feature availability.\r\n * @param value The thickness texture or null\r\n */\r\n public set volumeThicknessTexture(value: Nullable<BaseTexture>) {\r\n // TODO: Implement when OpenPBR volume properties are available\r\n // this._material.thicknessTexture = value;\r\n }\r\n\r\n /**\r\n * Sets the thickness factor for volume scattering.\r\n * TODO: Implementation pending OpenPBR volume feature availability.\r\n * @param value The thickness value\r\n */\r\n public set volumeThickness(value: number) {\r\n // TODO: Implement when OpenPBR volume properties are available\r\n // this._material.thickness = value;\r\n }\r\n\r\n // ========================================\r\n // SUBSURFACE PROPERTIES (Subsurface Scattering)\r\n // ========================================\r\n\r\n /**\r\n * Configures subsurface properties for PBR material\r\n */\r\n public configureSubsurface(): void {\r\n // TODO\r\n }\r\n\r\n /**\r\n * Sets the subsurface weight\r\n */\r\n public set subsurfaceWeight(value: number) {\r\n // TODO\r\n }\r\n\r\n public get subsurfaceWeight(): number {\r\n // TODO\r\n return 0;\r\n }\r\n\r\n /**\r\n * Sets the subsurface weight texture\r\n */\r\n public set subsurfaceWeightTexture(value: Nullable<BaseTexture>) {\r\n // TODO\r\n }\r\n\r\n /**\r\n * Sets the subsurface color.\r\n * @param value The subsurface tint color as a Color3\r\n */\r\n public set subsurfaceColor(value: Color3) {\r\n // TODO\r\n }\r\n\r\n /**\r\n * Sets the subsurface color texture.\r\n * @param value The subsurface tint texture or null\r\n */\r\n public set subsurfaceColorTexture(value: Nullable<BaseTexture>) {\r\n // TODO\r\n }\r\n\r\n // ========================================\r\n // FUZZ LAYER (Sheen)\r\n // ========================================\r\n\r\n /**\r\n * Configures fuzz for OpenPBR.\r\n * Enables fuzz and sets up proper configuration.\r\n */\r\n public configureFuzz(): void {\r\n // Currently no setup to do for OpenPBR\r\n }\r\n\r\n /**\r\n * Sets the fuzz weight.\r\n * @param value The fuzz weight value\r\n */\r\n public set fuzzWeight(value: number) {\r\n this._material.fuzzWeight = value;\r\n }\r\n\r\n /**\r\n * Sets the fuzz weight texture.\r\n * @param value The fuzz weight texture or null\r\n */\r\n public set fuzzWeightTexture(value: Nullable<BaseTexture>) {\r\n this._material.fuzzWeightTexture = value;\r\n }\r\n\r\n /**\r\n * Sets the fuzz color.\r\n * @param value The fuzz color as a Color3\r\n */\r\n public set fuzzColor(value: Color3) {\r\n this._material.fuzzColor = value;\r\n }\r\n\r\n /**\r\n * Sets the fuzz color texture.\r\n * @param value The fuzz color texture or null\r\n */\r\n public set fuzzColorTexture(value: Nullable<BaseTexture>) {\r\n this._material.fuzzColorTexture = value;\r\n }\r\n\r\n /**\r\n * Sets the fuzz roughness.\r\n * @param value The fuzz roughness value (0-1)\r\n */\r\n public set fuzzRoughness(value: number) {\r\n this._material.fuzzRoughness = value;\r\n }\r\n\r\n /**\r\n * Sets the fuzz roughness texture.\r\n * @param value The fuzz roughness texture or null\r\n */\r\n public set fuzzRoughnessTexture(value: Nullable<BaseTexture>) {\r\n this._material.fuzzRoughnessTexture = value;\r\n this._material._useFuzzRoughnessFromTextureAlpha = true;\r\n }\r\n\r\n // ========================================\r\n // ANISOTROPY\r\n // ========================================\r\n\r\n /**\r\n * Sets the specular roughness anisotropy of the OpenPBR material.\r\n * @param value The anisotropy intensity value\r\n */\r\n public set specularRoughnessAnisotropy(value: number) {\r\n this._material.specularRoughnessAnisotropy = value;\r\n }\r\n\r\n /**\r\n * Gets the specular roughness anisotropy of the OpenPBR material.\r\n * @returns The anisotropy intensity value\r\n */\r\n public get specularRoughnessAnisotropy(): number {\r\n return this._material.specularRoughnessAnisotropy;\r\n }\r\n\r\n /**\r\n * Sets the anisotropy rotation angle.\r\n * @param value The anisotropy rotation angle in radians\r\n */\r\n public set geometryTangentAngle(value: number) {\r\n this._material.geometryTangentAngle = value;\r\n }\r\n\r\n /**\r\n * Sets the geometry tangent texture for anisotropy.\r\n * Automatically enables using anisotropy from the tangent texture.\r\n * @param value The anisotropy texture or null\r\n */\r\n public set geometryTangentTexture(value: Nullable<BaseTexture>) {\r\n this._material.geometryTangentTexture = value;\r\n this._material._useSpecularRoughnessAnisotropyFromTangentTexture = true;\r\n }\r\n\r\n /**\r\n * Gets the geometry tangent texture for anisotropy.\r\n * @returns The anisotropy texture or null\r\n */\r\n public get geometryTangentTexture(): Nullable<BaseTexture> {\r\n return this._material.geometryTangentTexture;\r\n }\r\n\r\n /**\r\n * Configures glTF-style anisotropy for the OpenPBR material.\r\n * @param useGltfStyle Whether to use glTF-style anisotropy\r\n */\r\n public configureGltfStyleAnisotropy(useGltfStyle: boolean = true): void {\r\n this._material._useGltfStyleAnisotropy = useGltfStyle;\r\n }\r\n\r\n // ========================================\r\n // THIN FILM IRIDESCENCE\r\n // ========================================\r\n\r\n /**\r\n * Sets the thin film weight.\r\n * @param value The thin film weight value\r\n */\r\n public set thinFilmWeight(value: number) {\r\n this._material.thinFilmWeight = value;\r\n }\r\n\r\n /**\r\n * Sets the thin film IOR.\r\n * @param value The thin film IOR value\r\n */\r\n public set thinFilmIor(value: number) {\r\n this._material.thinFilmIor = value;\r\n }\r\n\r\n /**\r\n * Sets the thin film thickness minimum.\r\n * @param value The minimum thickness value in nanometers\r\n */\r\n public set thinFilmThicknessMinimum(value: number) {\r\n this._material.thinFilmThicknessMin = value / 1000.0; // Convert to micrometers for OpenPBR\r\n }\r\n\r\n /**\r\n * Sets the thin film thickness maximum.\r\n * @param value The maximum thickness value in nanometers\r\n */\r\n public set thinFilmThicknessMaximum(value: number) {\r\n this._material.thinFilmThickness = value / 1000.0; // Convert to micrometers for OpenPBR\r\n }\r\n\r\n /**\r\n * Sets the thin film weight texture.\r\n * @param value The thin film weight texture or null\r\n */\r\n public set thinFilmWeightTexture(value: Nullable<BaseTexture>) {\r\n this._material.thinFilmWeightTexture = value;\r\n }\r\n\r\n /**\r\n * Sets the thin film thickness texture.\r\n * @param value The thin film thickness texture or null\r\n */\r\n public set thinFilmThicknessTexture(value: Nullable<BaseTexture>) {\r\n this._material.thinFilmThicknessTexture = value;\r\n this._material._useThinFilmThicknessFromTextureGreen = true;\r\n }\r\n\r\n // ========================================\r\n // UNLIT MATERIALS\r\n // ========================================\r\n\r\n /**\r\n * Sets whether the OpenPBR material is unlit.\r\n * @param value True to make the material unlit\r\n */\r\n public set unlit(value: boolean) {\r\n this._material.unlit = value;\r\n }\r\n\r\n // ========================================\r\n // GEOMETRY PARAMETERS\r\n // ========================================\r\n\r\n /**\r\n * Sets the geometry opacity of the OpenPBR material.\r\n * @param value The opacity value (0-1)\r\n */\r\n public set geometryOpacity(value: number) {\r\n this._material.geometryOpacity = value;\r\n }\r\n\r\n /**\r\n * Gets the geometry opacity of the OpenPBR material.\r\n * @returns The opacity value (0-1)\r\n */\r\n public get geometryOpacity(): number {\r\n return this._material.geometryOpacity;\r\n }\r\n\r\n /**\r\n * Sets the geometry normal texture of the OpenPBR material.\r\n * @param value The normal texture or null\r\n */\r\n public set geometryNormalTexture(value: Nullable<BaseTexture>) {\r\n this._material.geometryNormalTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the geometry normal texture of the OpenPBR material.\r\n * @returns The normal texture or null\r\n */\r\n public get geometryNormalTexture(): Nullable<BaseTexture> {\r\n return this._material.geometryNormalTexture;\r\n }\r\n\r\n /**\r\n * Sets the normal map inversions for the OpenPBR material.\r\n * Note: OpenPBR may handle normal map inversions differently or may not need them.\r\n * @param invertX Whether to invert the normal map on the X axis (may be ignored)\r\n * @param invertY Whether to invert the normal map on the Y axis (may be ignored)\r\n */\r\n public setNormalMapInversions(invertX: boolean, invertY: boolean): void {\r\n // OpenPBR handles normal map inversions differently or may not need them\r\n }\r\n\r\n /**\r\n * Sets the geometry coat normal texture of the OpenPBR material.\r\n * @param value The coat normal texture or null\r\n */\r\n public set geometryCoatNormalTexture(value: Nullable<BaseTexture>) {\r\n this._material.geometryCoatNormalTexture = value;\r\n }\r\n\r\n /**\r\n * Gets the geometry coat normal texture of the OpenPBR material.\r\n * @returns The coat normal texture or null\r\n */\r\n public get geometryCoatNormalTexture(): Nullable<BaseTexture> {\r\n return this._material.geometryCoatNormalTexture;\r\n }\r\n\r\n /**\r\n * Sets the geometry coat normal texture scale.\r\n * @param value The scale value for the coat normal texture\r\n */\r\n public set geometryCoatNormalTextureScale(value: number) {\r\n if (this._material.geometryCoatNormalTexture) {\r\n this._material.geometryCoatNormalTexture.level = value;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -465,6 +465,11 @@ export declare class PBRMaterialLoadingAdapter implements IMaterialLoadingAdapte
|
|
|
465
465
|
* @param value The sheen weight value
|
|
466
466
|
*/
|
|
467
467
|
set fuzzWeight(value: number);
|
|
468
|
+
/**
|
|
469
|
+
* Sets the fuzz weight texture.
|
|
470
|
+
* @param value The fuzz weight texture or null
|
|
471
|
+
*/
|
|
472
|
+
set fuzzWeightTexture(value: Nullable<BaseTexture>);
|
|
468
473
|
/**
|
|
469
474
|
* Sets the sheen color (mapped to PBR sheen.color).
|
|
470
475
|
* Automatically enables sheen.
|