@cesium/engine 9.1.0 → 9.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Build/ThirdParty/Workers/pako_deflate.min.js +108 -210
- package/Build/ThirdParty/Workers/pako_inflate.min.js +466 -568
- package/Build/ThirdParty/Workers/z-worker-pako.js +54 -104
- package/Build/Workers/{chunk-7LPEGKOF.js → chunk-26NE4LRW.js} +7 -7
- package/Build/Workers/{chunk-PK7TEP3J.js → chunk-26XJDV3D.js} +15 -15
- package/Build/Workers/{chunk-G7CJQKKD.js → chunk-2TRB253J.js} +7 -7
- package/Build/Workers/{chunk-FOZQIHZK.js → chunk-3PV5HQ2R.js} +6 -6
- package/Build/Workers/{chunk-MWYZ64MH.js → chunk-3VDHTBY5.js} +10 -10
- package/Build/Workers/{chunk-XHLDDE65.js → chunk-4RG6WOXH.js} +10 -10
- package/Build/Workers/{chunk-WWP3I7R5.js → chunk-5OK5JFDP.js} +5 -5
- package/Build/Workers/{chunk-34DGOKCO.js → chunk-7HLZRYGD.js} +7 -7
- package/Build/Workers/{chunk-NI2R52QD.js → chunk-7PFZ4Z7C.js} +7 -7
- package/Build/Workers/{chunk-XWML5Y7N.js → chunk-A5CSB5ZE.js} +9 -9
- package/Build/Workers/{chunk-IBXGK4WV.js → chunk-AROLUUGS.js} +2 -2
- package/Build/Workers/{chunk-POLFRINT.js → chunk-BBBTT36L.js} +14 -14
- package/Build/Workers/{chunk-3RZK5NNV.js → chunk-BNT2SNWU.js} +4 -4
- package/Build/Workers/{chunk-CE6GTZ4I.js → chunk-CFBGPZU6.js} +9 -9
- package/Build/Workers/{chunk-YLZTCEBJ.js → chunk-CVCVMOQA.js} +1 -1
- package/Build/Workers/{chunk-U4IMCOF5.js → chunk-DIVFF6DK.js} +2 -2
- package/Build/Workers/{chunk-UAJEGIWA.js → chunk-EJZVBTX4.js} +6 -6
- package/Build/Workers/{chunk-UCPPWV64.js → chunk-EODIOQ35.js} +1 -1
- package/Build/Workers/{chunk-4PHPQRSH.js → chunk-ETC45PHH.js} +5 -6
- package/Build/Workers/{chunk-PS6AEMBR.js → chunk-G7IAO7CW.js} +7 -7
- package/Build/Workers/{chunk-LW7WGHEU.js → chunk-GOQEANLM.js} +13 -13
- package/Build/Workers/{chunk-I5TDPPC4.js → chunk-GUFV24F4.js} +7 -7
- package/Build/Workers/{chunk-4AJGCQFX.js → chunk-GX2BWBN2.js} +13 -13
- package/Build/Workers/{chunk-C5CE4OG6.js → chunk-GX5LMUGZ.js} +5 -5
- package/Build/Workers/{chunk-QKF7XXEQ.js → chunk-I6CW7ZE5.js} +7 -7
- package/Build/Workers/{chunk-BDUJXBVF.js → chunk-IF2OX6R4.js} +3 -5
- package/Build/Workers/{chunk-ZDP32RQI.js → chunk-IXYFH7DV.js} +95 -155
- package/Build/Workers/{chunk-2CSEEWHN.js → chunk-K5F23SZO.js} +6 -6
- package/Build/Workers/{chunk-7VZNXIKG.js → chunk-KTZK2UDR.js} +7 -7
- package/Build/Workers/{chunk-66E3H2KU.js → chunk-LZFFO4KB.js} +12 -12
- package/Build/Workers/{chunk-JI2445T5.js → chunk-OYP23VAL.js} +11 -11
- package/Build/Workers/{chunk-ZWPIM77Q.js → chunk-PHT53MCH.js} +11 -11
- package/Build/Workers/{chunk-6HCAQOVK.js → chunk-PUQR43HZ.js} +6 -6
- package/Build/Workers/{chunk-GIFJ77E4.js → chunk-QZIWFSRM.js} +4 -4
- package/Build/Workers/{chunk-LVJCR7DH.js → chunk-RDR4KVPA.js} +17 -17
- package/Build/Workers/{chunk-4KIUON73.js → chunk-RRUO4QEK.js} +4 -4
- package/Build/Workers/{chunk-ZC4AGBZK.js → chunk-RTIT7UDN.js} +2 -2
- package/Build/Workers/{chunk-AOFMPKUB.js → chunk-SC3TBKST.js} +4 -4
- package/Build/Workers/{chunk-S4XDCPKD.js → chunk-TDIGL45B.js} +1 -1
- package/Build/Workers/{chunk-RL73GOEF.js → chunk-TP4FFUAH.js} +2 -2
- package/Build/Workers/{chunk-WFICTTOE.js → chunk-U2LSTOMA.js} +2 -2
- package/Build/Workers/{chunk-RR7EOKGZ.js → chunk-U6MTSO6A.js} +47 -84
- package/Build/Workers/{chunk-PEABJLCK.js → chunk-UICVDDCQ.js} +1 -1
- package/Build/Workers/{chunk-WEGCQ5DY.js → chunk-UKJCFXVV.js} +6 -6
- package/Build/Workers/{chunk-V7JB576Q.js → chunk-UYKG3UFK.js} +5 -5
- package/Build/Workers/{chunk-3S2MFY4B.js → chunk-W4OS542B.js} +13 -13
- package/Build/Workers/{chunk-CYAJYEKW.js → chunk-WHDEZSAL.js} +6 -6
- package/Build/Workers/{chunk-TMMOULW3.js → chunk-WOYQB5HM.js} +5 -5
- package/Build/Workers/{chunk-PWF3YJJ5.js → chunk-WP3LCUOE.js} +13 -13
- package/Build/Workers/{chunk-AOIKO5Y7.js → chunk-YGNQJ4YI.js} +5 -5
- package/Build/Workers/{chunk-A6NCZSL3.js → chunk-YGTWKLFY.js} +17 -17
- package/Build/Workers/{chunk-KPY4F4BW.js → chunk-ZHJDE6JN.js} +6 -6
- package/Build/Workers/combineGeometry.js +22 -22
- package/Build/Workers/createBoxGeometry.js +16 -16
- package/Build/Workers/createBoxOutlineGeometry.js +14 -14
- package/Build/Workers/createCircleGeometry.js +24 -24
- package/Build/Workers/createCircleOutlineGeometry.js +17 -17
- package/Build/Workers/createCoplanarPolygonGeometry.js +31 -31
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +29 -29
- package/Build/Workers/createCorridorGeometry.js +27 -27
- package/Build/Workers/createCorridorOutlineGeometry.js +26 -26
- package/Build/Workers/createCylinderGeometry.js +18 -18
- package/Build/Workers/createCylinderOutlineGeometry.js +16 -16
- package/Build/Workers/createEllipseGeometry.js +24 -24
- package/Build/Workers/createEllipseOutlineGeometry.js +17 -17
- package/Build/Workers/createEllipsoidGeometry.js +17 -17
- package/Build/Workers/createEllipsoidOutlineGeometry.js +16 -16
- package/Build/Workers/createFrustumGeometry.js +16 -16
- package/Build/Workers/createFrustumOutlineGeometry.js +16 -16
- package/Build/Workers/createGeometry.js +22 -22
- package/Build/Workers/createGroundPolylineGeometry.js +20 -20
- package/Build/Workers/createPlaneGeometry.js +14 -14
- package/Build/Workers/createPlaneOutlineGeometry.js +13 -13
- package/Build/Workers/createPolygonGeometry.js +30 -30
- package/Build/Workers/createPolygonOutlineGeometry.js +28 -28
- package/Build/Workers/createPolylineGeometry.js +23 -23
- package/Build/Workers/createPolylineVolumeGeometry.js +29 -29
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +25 -25
- package/Build/Workers/createRectangleGeometry.js +25 -25
- package/Build/Workers/createRectangleOutlineGeometry.js +18 -18
- package/Build/Workers/createSimplePolylineGeometry.js +21 -21
- package/Build/Workers/createSphereGeometry.js +17 -17
- package/Build/Workers/createSphereOutlineGeometry.js +16 -16
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +13 -13
- package/Build/Workers/createVectorTileGeometries.js +22 -22
- package/Build/Workers/createVectorTilePoints.js +12 -12
- package/Build/Workers/createVectorTilePolygons.js +20 -20
- package/Build/Workers/createVectorTilePolylines.js +13 -13
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +20 -20
- package/Build/Workers/createVerticesFromHeightmap.js +20 -20
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +17 -17
- package/Build/Workers/createWallGeometry.js +22 -22
- package/Build/Workers/createWallOutlineGeometry.js +21 -21
- package/Build/Workers/decodeDraco.js +11 -11
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +12 -19
- package/Build/Workers/decodeI3S.js +10 -10
- package/Build/Workers/transcodeKTX2.js +43 -79
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +20 -20
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/Math.js +0 -5
- package/Source/Core/TaskProcessor.js +19 -3
- package/Source/Core/sampleTerrain.js +3 -3
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/Billboard.js +2 -2
- package/Source/Scene/GltfLoader.js +458 -435
- package/Source/Scene/GltfLoaderUtil.js +3 -12
- package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +23 -7
- package/Source/Scene/GltfStructuralMetadataLoader.js +11 -9
- package/Source/Scene/Label.js +1 -1
- package/Source/Scene/Model/AlphaPipelineStage.js +1 -1
- package/Source/Scene/Model/GeometryPipelineStage.js +15 -43
- package/Source/Scene/Model/ImageBasedLightingPipelineStage.js +7 -0
- package/Source/Scene/Model/LightingPipelineStage.js +2 -4
- package/Source/Scene/Model/MaterialPipelineStage.js +346 -29
- package/Source/Scene/Model/Model.js +8 -3
- package/Source/Scene/Model/ModelUtility.js +3 -0
- package/Source/Scene/Model/VerticalExaggerationPipelineStage.js +4 -6
- package/Source/Scene/ModelComponents.js +169 -1
- package/Source/Scene/PickDepth.js +23 -15
- package/Source/Scene/ResourceCache.js +41 -50
- package/Source/Scene/ResourceCacheKey.js +41 -53
- package/Source/Shaders/Builtin/CzmBuiltins.js +2 -8
- package/Source/Shaders/Builtin/Functions/maximumComponent.glsl +21 -0
- package/Source/Shaders/Builtin/Functions/maximumComponent.js +23 -0
- package/Source/Shaders/Builtin/Functions/pbrLighting.glsl +108 -44
- package/Source/Shaders/Builtin/Functions/pbrLighting.js +108 -44
- package/Source/Shaders/Builtin/Structs/modelMaterial.glsl +14 -0
- package/Source/Shaders/Builtin/Structs/modelMaterial.js +14 -0
- package/Source/Shaders/GlobeFS.glsl +1 -1
- package/Source/Shaders/GlobeFS.js +1 -1
- package/Source/Shaders/Model/ImageBasedLightingStageFS.glsl +211 -133
- package/Source/Shaders/Model/ImageBasedLightingStageFS.js +212 -133
- package/Source/Shaders/Model/LightingStageFS.glsl +113 -48
- package/Source/Shaders/Model/LightingStageFS.js +113 -48
- package/Source/Shaders/Model/MaterialStageFS.glsl +399 -137
- package/Source/Shaders/Model/MaterialStageFS.js +399 -137
- package/index.d.ts +3 -3
- package/index.js +203 -206
- package/package.json +1 -1
- package/Source/Shaders/Builtin/Functions/defaultPbrMaterial.glsl +0 -16
- package/Source/Shaders/Builtin/Functions/defaultPbrMaterial.js +0 -18
- package/Source/Shaders/Builtin/Functions/pbrMetallicRoughnessMaterial.glsl +0 -37
- package/Source/Shaders/Builtin/Functions/pbrMetallicRoughnessMaterial.js +0 -39
- package/Source/Shaders/Builtin/Functions/pbrSpecularGlossinessMaterial.glsl +0 -30
- package/Source/Shaders/Builtin/Functions/pbrSpecularGlossinessMaterial.js +0 -32
- package/Source/Shaders/Builtin/Structs/pbrParameters.glsl +0 -16
- package/Source/Shaders/Builtin/Structs/pbrParameters.js +0 -18
|
@@ -12,15 +12,20 @@ import VertexAttributeSemantic from "../VertexAttributeSemantic.js";
|
|
|
12
12
|
import LightingModel from "./LightingModel.js";
|
|
13
13
|
import ModelUtility from "./ModelUtility.js";
|
|
14
14
|
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
const {
|
|
16
|
+
Material,
|
|
17
|
+
MetallicRoughness,
|
|
18
|
+
SpecularGlossiness,
|
|
19
|
+
Specular,
|
|
20
|
+
Clearcoat,
|
|
21
|
+
} = ModelComponents;
|
|
18
22
|
|
|
19
23
|
/**
|
|
20
24
|
* The material pipeline stage processes textures and other uniforms needed
|
|
21
25
|
* to render a primitive. This handles the following material types:
|
|
22
26
|
* <ul>
|
|
23
27
|
* <li>Basic glTF materials (PBR metallic roughness model)</li>
|
|
28
|
+
* <li>The `KHR_materials_specular` glTF extension</li>
|
|
24
29
|
* <li>The `KHR_materials_pbrSpecularGlossiness` glTF extension</li>
|
|
25
30
|
* <li>The `KHR_materials_unlit` glTF extension</li>
|
|
26
31
|
* </ul>
|
|
@@ -59,20 +64,19 @@ MaterialPipelineStage.process = function (
|
|
|
59
64
|
// gltf-pipeline automatically creates a default material so this will always
|
|
60
65
|
// be defined.
|
|
61
66
|
const material = primitive.material;
|
|
62
|
-
const model = renderResources
|
|
67
|
+
const { model, uniformMap, shaderBuilder } = renderResources;
|
|
63
68
|
|
|
64
69
|
// Classification models only use position and feature ID attributes,
|
|
65
70
|
// so textures should be disabled to avoid compile errors.
|
|
66
71
|
const hasClassification = defined(model.classificationType);
|
|
67
72
|
const disableTextures = hasClassification;
|
|
68
73
|
|
|
69
|
-
const uniformMap = renderResources.uniformMap;
|
|
70
|
-
const shaderBuilder = renderResources.shaderBuilder;
|
|
71
|
-
|
|
72
74
|
// When textures are loaded incrementally, fall back to a default 1x1 texture
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
const {
|
|
76
|
+
defaultTexture,
|
|
77
|
+
defaultNormalTexture,
|
|
78
|
+
defaultEmissiveTexture,
|
|
79
|
+
} = frameState.context;
|
|
76
80
|
|
|
77
81
|
processMaterialUniforms(
|
|
78
82
|
material,
|
|
@@ -86,15 +90,51 @@ MaterialPipelineStage.process = function (
|
|
|
86
90
|
|
|
87
91
|
if (defined(material.specularGlossiness)) {
|
|
88
92
|
processSpecularGlossinessUniforms(
|
|
89
|
-
material,
|
|
93
|
+
material.specularGlossiness,
|
|
90
94
|
uniformMap,
|
|
91
95
|
shaderBuilder,
|
|
92
96
|
defaultTexture,
|
|
93
97
|
disableTextures
|
|
94
98
|
);
|
|
95
99
|
} else {
|
|
100
|
+
if (
|
|
101
|
+
defined(material.specular) &&
|
|
102
|
+
ModelUtility.supportedExtensions.KHR_materials_specular
|
|
103
|
+
) {
|
|
104
|
+
processSpecularUniforms(
|
|
105
|
+
material.specular,
|
|
106
|
+
uniformMap,
|
|
107
|
+
shaderBuilder,
|
|
108
|
+
defaultTexture,
|
|
109
|
+
disableTextures
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
if (
|
|
113
|
+
defined(material.anisotropy) &&
|
|
114
|
+
ModelUtility.supportedExtensions.KHR_materials_anisotropy
|
|
115
|
+
) {
|
|
116
|
+
processAnisotropyUniforms(
|
|
117
|
+
material.anisotropy,
|
|
118
|
+
uniformMap,
|
|
119
|
+
shaderBuilder,
|
|
120
|
+
defaultTexture,
|
|
121
|
+
disableTextures
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
if (
|
|
125
|
+
defined(material.clearcoat) &&
|
|
126
|
+
ModelUtility.supportedExtensions.KHR_materials_clearcoat
|
|
127
|
+
) {
|
|
128
|
+
processClearcoatUniforms(
|
|
129
|
+
material.clearcoat,
|
|
130
|
+
uniformMap,
|
|
131
|
+
shaderBuilder,
|
|
132
|
+
defaultTexture,
|
|
133
|
+
disableTextures
|
|
134
|
+
);
|
|
135
|
+
}
|
|
96
136
|
processMetallicRoughnessUniforms(
|
|
97
|
-
material,
|
|
137
|
+
material.metallicRoughness,
|
|
98
138
|
uniformMap,
|
|
99
139
|
shaderBuilder,
|
|
100
140
|
defaultTexture,
|
|
@@ -245,7 +285,13 @@ function processMaterialUniforms(
|
|
|
245
285
|
defaultEmissiveTexture,
|
|
246
286
|
disableTextures
|
|
247
287
|
) {
|
|
248
|
-
const
|
|
288
|
+
const {
|
|
289
|
+
emissiveFactor,
|
|
290
|
+
emissiveTexture,
|
|
291
|
+
normalTexture,
|
|
292
|
+
occlusionTexture,
|
|
293
|
+
} = material;
|
|
294
|
+
|
|
249
295
|
if (
|
|
250
296
|
defined(emissiveFactor) &&
|
|
251
297
|
!Cartesian3.equals(emissiveFactor, Material.DEFAULT_EMISSIVE_FACTOR)
|
|
@@ -264,7 +310,6 @@ function processMaterialUniforms(
|
|
|
264
310
|
ShaderDestination.FRAGMENT
|
|
265
311
|
);
|
|
266
312
|
|
|
267
|
-
const emissiveTexture = material.emissiveTexture;
|
|
268
313
|
if (defined(emissiveTexture) && !disableTextures) {
|
|
269
314
|
processTexture(
|
|
270
315
|
shaderBuilder,
|
|
@@ -277,7 +322,6 @@ function processMaterialUniforms(
|
|
|
277
322
|
}
|
|
278
323
|
}
|
|
279
324
|
|
|
280
|
-
const normalTexture = material.normalTexture;
|
|
281
325
|
if (defined(normalTexture) && !disableTextures) {
|
|
282
326
|
processTexture(
|
|
283
327
|
shaderBuilder,
|
|
@@ -289,7 +333,6 @@ function processMaterialUniforms(
|
|
|
289
333
|
);
|
|
290
334
|
}
|
|
291
335
|
|
|
292
|
-
const occlusionTexture = material.occlusionTexture;
|
|
293
336
|
if (defined(occlusionTexture) && !disableTextures) {
|
|
294
337
|
processTexture(
|
|
295
338
|
shaderBuilder,
|
|
@@ -302,21 +345,37 @@ function processMaterialUniforms(
|
|
|
302
345
|
}
|
|
303
346
|
}
|
|
304
347
|
|
|
348
|
+
/**
|
|
349
|
+
* Add uniforms and defines for the KHR_materials_pbrSpecularGlossiness extension
|
|
350
|
+
*
|
|
351
|
+
* @param {ModelComponents.SpecularGlossiness} specularGlossiness
|
|
352
|
+
* @param {Object<string, Function>} uniformMap The uniform map to modify.
|
|
353
|
+
* @param {ShaderBuilder} shaderBuilder
|
|
354
|
+
* @param {Texture} defaultTexture
|
|
355
|
+
* @param {boolean} disableTextures
|
|
356
|
+
* @private
|
|
357
|
+
*/
|
|
305
358
|
function processSpecularGlossinessUniforms(
|
|
306
|
-
|
|
359
|
+
specularGlossiness,
|
|
307
360
|
uniformMap,
|
|
308
361
|
shaderBuilder,
|
|
309
362
|
defaultTexture,
|
|
310
363
|
disableTextures
|
|
311
364
|
) {
|
|
312
|
-
const
|
|
365
|
+
const {
|
|
366
|
+
diffuseTexture,
|
|
367
|
+
diffuseFactor,
|
|
368
|
+
specularGlossinessTexture,
|
|
369
|
+
specularFactor,
|
|
370
|
+
glossinessFactor,
|
|
371
|
+
} = specularGlossiness;
|
|
372
|
+
|
|
313
373
|
shaderBuilder.addDefine(
|
|
314
374
|
"USE_SPECULAR_GLOSSINESS",
|
|
315
375
|
undefined,
|
|
316
376
|
ShaderDestination.FRAGMENT
|
|
317
377
|
);
|
|
318
378
|
|
|
319
|
-
const diffuseTexture = specularGlossiness.diffuseTexture;
|
|
320
379
|
if (defined(diffuseTexture) && !disableTextures) {
|
|
321
380
|
processTexture(
|
|
322
381
|
shaderBuilder,
|
|
@@ -328,7 +387,6 @@ function processSpecularGlossinessUniforms(
|
|
|
328
387
|
);
|
|
329
388
|
}
|
|
330
389
|
|
|
331
|
-
const diffuseFactor = specularGlossiness.diffuseFactor;
|
|
332
390
|
if (
|
|
333
391
|
defined(diffuseFactor) &&
|
|
334
392
|
!Cartesian4.equals(diffuseFactor, SpecularGlossiness.DEFAULT_DIFFUSE_FACTOR)
|
|
@@ -348,8 +406,6 @@ function processSpecularGlossinessUniforms(
|
|
|
348
406
|
);
|
|
349
407
|
}
|
|
350
408
|
|
|
351
|
-
const specularGlossinessTexture =
|
|
352
|
-
specularGlossiness.specularGlossinessTexture;
|
|
353
409
|
if (defined(specularGlossinessTexture) && !disableTextures) {
|
|
354
410
|
processTexture(
|
|
355
411
|
shaderBuilder,
|
|
@@ -361,7 +417,6 @@ function processSpecularGlossinessUniforms(
|
|
|
361
417
|
);
|
|
362
418
|
}
|
|
363
419
|
|
|
364
|
-
const specularFactor = specularGlossiness.specularFactor;
|
|
365
420
|
if (
|
|
366
421
|
defined(specularFactor) &&
|
|
367
422
|
!Cartesian3.equals(
|
|
@@ -371,20 +426,19 @@ function processSpecularGlossinessUniforms(
|
|
|
371
426
|
) {
|
|
372
427
|
shaderBuilder.addUniform(
|
|
373
428
|
"vec3",
|
|
374
|
-
"
|
|
429
|
+
"u_legacySpecularFactor",
|
|
375
430
|
ShaderDestination.FRAGMENT
|
|
376
431
|
);
|
|
377
|
-
uniformMap.
|
|
432
|
+
uniformMap.u_legacySpecularFactor = function () {
|
|
378
433
|
return specularGlossiness.specularFactor;
|
|
379
434
|
};
|
|
380
435
|
shaderBuilder.addDefine(
|
|
381
|
-
"
|
|
436
|
+
"HAS_LEGACY_SPECULAR_FACTOR",
|
|
382
437
|
undefined,
|
|
383
438
|
ShaderDestination.FRAGMENT
|
|
384
439
|
);
|
|
385
440
|
}
|
|
386
441
|
|
|
387
|
-
const glossinessFactor = specularGlossiness.glossinessFactor;
|
|
388
442
|
if (
|
|
389
443
|
defined(glossinessFactor) &&
|
|
390
444
|
glossinessFactor !== SpecularGlossiness.DEFAULT_GLOSSINESS_FACTOR
|
|
@@ -405,14 +459,277 @@ function processSpecularGlossinessUniforms(
|
|
|
405
459
|
}
|
|
406
460
|
}
|
|
407
461
|
|
|
462
|
+
/**
|
|
463
|
+
* Add uniforms and defines for the KHR_materials_specular extension
|
|
464
|
+
*
|
|
465
|
+
* @param {ModelComponents.Specular} specular
|
|
466
|
+
* @param {Object<string, Function>} uniformMap The uniform map to modify.
|
|
467
|
+
* @param {ShaderBuilder} shaderBuilder
|
|
468
|
+
* @param {Texture} defaultTexture
|
|
469
|
+
* @param {boolean} disableTextures
|
|
470
|
+
* @private
|
|
471
|
+
*/
|
|
472
|
+
function processSpecularUniforms(
|
|
473
|
+
specular,
|
|
474
|
+
uniformMap,
|
|
475
|
+
shaderBuilder,
|
|
476
|
+
defaultTexture,
|
|
477
|
+
disableTextures
|
|
478
|
+
) {
|
|
479
|
+
const {
|
|
480
|
+
specularTexture,
|
|
481
|
+
specularFactor,
|
|
482
|
+
specularColorTexture,
|
|
483
|
+
specularColorFactor,
|
|
484
|
+
} = specular;
|
|
485
|
+
|
|
486
|
+
shaderBuilder.addDefine(
|
|
487
|
+
"USE_SPECULAR",
|
|
488
|
+
undefined,
|
|
489
|
+
ShaderDestination.FRAGMENT
|
|
490
|
+
);
|
|
491
|
+
|
|
492
|
+
if (defined(specularTexture) && !disableTextures) {
|
|
493
|
+
processTexture(
|
|
494
|
+
shaderBuilder,
|
|
495
|
+
uniformMap,
|
|
496
|
+
specularTexture,
|
|
497
|
+
"u_specularTexture",
|
|
498
|
+
"SPECULAR",
|
|
499
|
+
defaultTexture
|
|
500
|
+
);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
if (
|
|
504
|
+
defined(specularFactor) &&
|
|
505
|
+
specularFactor !== Specular.DEFAULT_SPECULAR_FACTOR
|
|
506
|
+
) {
|
|
507
|
+
shaderBuilder.addUniform(
|
|
508
|
+
"float",
|
|
509
|
+
"u_specularFactor",
|
|
510
|
+
ShaderDestination.FRAGMENT
|
|
511
|
+
);
|
|
512
|
+
uniformMap.u_specularFactor = function () {
|
|
513
|
+
return specular.specularFactor;
|
|
514
|
+
};
|
|
515
|
+
shaderBuilder.addDefine(
|
|
516
|
+
"HAS_SPECULAR_FACTOR",
|
|
517
|
+
undefined,
|
|
518
|
+
ShaderDestination.FRAGMENT
|
|
519
|
+
);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
if (defined(specularColorTexture) && !disableTextures) {
|
|
523
|
+
processTexture(
|
|
524
|
+
shaderBuilder,
|
|
525
|
+
uniformMap,
|
|
526
|
+
specularColorTexture,
|
|
527
|
+
"u_specularColorTexture",
|
|
528
|
+
"SPECULAR_COLOR",
|
|
529
|
+
defaultTexture
|
|
530
|
+
);
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
if (
|
|
534
|
+
defined(specularColorFactor) &&
|
|
535
|
+
!Cartesian3.equals(
|
|
536
|
+
specularColorFactor,
|
|
537
|
+
Specular.DEFAULT_SPECULAR_COLOR_FACTOR
|
|
538
|
+
)
|
|
539
|
+
) {
|
|
540
|
+
shaderBuilder.addUniform(
|
|
541
|
+
"vec3",
|
|
542
|
+
"u_specularColorFactor",
|
|
543
|
+
ShaderDestination.FRAGMENT
|
|
544
|
+
);
|
|
545
|
+
uniformMap.u_specularColorFactor = function () {
|
|
546
|
+
return specular.specularColorFactor;
|
|
547
|
+
};
|
|
548
|
+
shaderBuilder.addDefine(
|
|
549
|
+
"HAS_SPECULAR_COLOR_FACTOR",
|
|
550
|
+
undefined,
|
|
551
|
+
ShaderDestination.FRAGMENT
|
|
552
|
+
);
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
const scratchAnisotropy = new Cartesian3();
|
|
557
|
+
|
|
558
|
+
/**
|
|
559
|
+
* Add uniforms and defines for the KHR_materials_anisotropy extension
|
|
560
|
+
*
|
|
561
|
+
* @param {ModelComponents.Anisotropy} anisotropy
|
|
562
|
+
* @param {Object<string, Function>} uniformMap The uniform map to modify.
|
|
563
|
+
* @param {ShaderBuilder} shaderBuilder
|
|
564
|
+
* @param {Texture} defaultTexture
|
|
565
|
+
* @param {boolean} disableTextures
|
|
566
|
+
* @private
|
|
567
|
+
*/
|
|
568
|
+
function processAnisotropyUniforms(
|
|
569
|
+
anisotropy,
|
|
570
|
+
uniformMap,
|
|
571
|
+
shaderBuilder,
|
|
572
|
+
defaultTexture,
|
|
573
|
+
disableTextures
|
|
574
|
+
) {
|
|
575
|
+
const {
|
|
576
|
+
anisotropyStrength,
|
|
577
|
+
anisotropyRotation,
|
|
578
|
+
anisotropyTexture,
|
|
579
|
+
} = anisotropy;
|
|
580
|
+
|
|
581
|
+
shaderBuilder.addDefine(
|
|
582
|
+
"USE_ANISOTROPY",
|
|
583
|
+
undefined,
|
|
584
|
+
ShaderDestination.FRAGMENT
|
|
585
|
+
);
|
|
586
|
+
|
|
587
|
+
if (defined(anisotropyTexture) && !disableTextures) {
|
|
588
|
+
processTexture(
|
|
589
|
+
shaderBuilder,
|
|
590
|
+
uniformMap,
|
|
591
|
+
anisotropyTexture,
|
|
592
|
+
"u_anisotropyTexture",
|
|
593
|
+
"ANISOTROPY",
|
|
594
|
+
defaultTexture
|
|
595
|
+
);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
// Pre-compute cos and sin of rotation, since they are the same for all fragments.
|
|
599
|
+
// Combine with strength as one vec3 uniform.
|
|
600
|
+
const cosRotation = Math.cos(anisotropyRotation);
|
|
601
|
+
const sinRotation = Math.sin(anisotropyRotation);
|
|
602
|
+
shaderBuilder.addUniform("vec3", "u_anisotropy", ShaderDestination.FRAGMENT);
|
|
603
|
+
uniformMap.u_anisotropy = function () {
|
|
604
|
+
return Cartesian3.fromElements(
|
|
605
|
+
cosRotation,
|
|
606
|
+
sinRotation,
|
|
607
|
+
anisotropyStrength,
|
|
608
|
+
scratchAnisotropy
|
|
609
|
+
);
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
/**
|
|
614
|
+
* Add uniforms and defines for the KHR_materials_clearcoat extension
|
|
615
|
+
*
|
|
616
|
+
* @param {ModelComponents.Clearcoat} clearcoat
|
|
617
|
+
* @param {Object<string, Function>} uniformMap The uniform map to modify.
|
|
618
|
+
* @param {ShaderBuilder} shaderBuilder
|
|
619
|
+
* @param {Texture} defaultTexture
|
|
620
|
+
* @param {boolean} disableTextures
|
|
621
|
+
* @private
|
|
622
|
+
*/
|
|
623
|
+
function processClearcoatUniforms(
|
|
624
|
+
clearcoat,
|
|
625
|
+
uniformMap,
|
|
626
|
+
shaderBuilder,
|
|
627
|
+
defaultTexture,
|
|
628
|
+
disableTextures
|
|
629
|
+
) {
|
|
630
|
+
const {
|
|
631
|
+
clearcoatFactor,
|
|
632
|
+
clearcoatTexture,
|
|
633
|
+
clearcoatRoughnessFactor,
|
|
634
|
+
clearcoatRoughnessTexture,
|
|
635
|
+
clearcoatNormalTexture,
|
|
636
|
+
} = clearcoat;
|
|
637
|
+
|
|
638
|
+
shaderBuilder.addDefine(
|
|
639
|
+
"USE_CLEARCOAT",
|
|
640
|
+
undefined,
|
|
641
|
+
ShaderDestination.FRAGMENT
|
|
642
|
+
);
|
|
643
|
+
|
|
644
|
+
if (
|
|
645
|
+
defined(clearcoatFactor) &&
|
|
646
|
+
clearcoatFactor !== Clearcoat.DEFAULT_CLEARCOAT_FACTOR
|
|
647
|
+
) {
|
|
648
|
+
shaderBuilder.addUniform(
|
|
649
|
+
"float",
|
|
650
|
+
"u_clearcoatFactor",
|
|
651
|
+
ShaderDestination.FRAGMENT
|
|
652
|
+
);
|
|
653
|
+
uniformMap.u_clearcoatFactor = function () {
|
|
654
|
+
return clearcoat.clearcoatFactor;
|
|
655
|
+
};
|
|
656
|
+
shaderBuilder.addDefine(
|
|
657
|
+
"HAS_CLEARCOAT_FACTOR",
|
|
658
|
+
undefined,
|
|
659
|
+
ShaderDestination.FRAGMENT
|
|
660
|
+
);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
if (defined(clearcoatTexture) && !disableTextures) {
|
|
664
|
+
processTexture(
|
|
665
|
+
shaderBuilder,
|
|
666
|
+
uniformMap,
|
|
667
|
+
clearcoatTexture,
|
|
668
|
+
"u_clearcoatTexture",
|
|
669
|
+
"CLEARCOAT",
|
|
670
|
+
defaultTexture
|
|
671
|
+
);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
if (
|
|
675
|
+
defined(clearcoatRoughnessFactor) &&
|
|
676
|
+
clearcoatFactor !== Clearcoat.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR
|
|
677
|
+
) {
|
|
678
|
+
shaderBuilder.addUniform(
|
|
679
|
+
"float",
|
|
680
|
+
"u_clearcoatRoughnessFactor",
|
|
681
|
+
ShaderDestination.FRAGMENT
|
|
682
|
+
);
|
|
683
|
+
uniformMap.u_clearcoatRoughnessFactor = function () {
|
|
684
|
+
return clearcoat.clearcoatRoughnessFactor;
|
|
685
|
+
};
|
|
686
|
+
shaderBuilder.addDefine(
|
|
687
|
+
"HAS_CLEARCOAT_ROUGHNESS_FACTOR",
|
|
688
|
+
undefined,
|
|
689
|
+
ShaderDestination.FRAGMENT
|
|
690
|
+
);
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
if (defined(clearcoatRoughnessTexture) && !disableTextures) {
|
|
694
|
+
processTexture(
|
|
695
|
+
shaderBuilder,
|
|
696
|
+
uniformMap,
|
|
697
|
+
clearcoatRoughnessTexture,
|
|
698
|
+
"u_clearcoatRoughnessTexture",
|
|
699
|
+
"CLEARCOAT_ROUGHNESS",
|
|
700
|
+
defaultTexture
|
|
701
|
+
);
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
if (defined(clearcoatNormalTexture) && !disableTextures) {
|
|
705
|
+
processTexture(
|
|
706
|
+
shaderBuilder,
|
|
707
|
+
uniformMap,
|
|
708
|
+
clearcoatNormalTexture,
|
|
709
|
+
"u_clearcoatNormalTexture",
|
|
710
|
+
"CLEARCOAT_NORMAL",
|
|
711
|
+
defaultTexture
|
|
712
|
+
);
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
/**
|
|
717
|
+
* Add uniforms and defines for the PBR metallic roughness model
|
|
718
|
+
*
|
|
719
|
+
* @param {ModelComponents.MetallicRoughness} metallicRoughness
|
|
720
|
+
* @param {Object<string, Function>} uniformMap The uniform map to modify.
|
|
721
|
+
* @param {ShaderBuilder} shaderBuilder
|
|
722
|
+
* @param {Texture} defaultTexture
|
|
723
|
+
* @param {boolean} disableTextures
|
|
724
|
+
* @private
|
|
725
|
+
*/
|
|
408
726
|
function processMetallicRoughnessUniforms(
|
|
409
|
-
|
|
727
|
+
metallicRoughness,
|
|
410
728
|
uniformMap,
|
|
411
729
|
shaderBuilder,
|
|
412
730
|
defaultTexture,
|
|
413
731
|
disableTextures
|
|
414
732
|
) {
|
|
415
|
-
const metallicRoughness = material.metallicRoughness;
|
|
416
733
|
shaderBuilder.addDefine(
|
|
417
734
|
"USE_METALLIC_ROUGHNESS",
|
|
418
735
|
undefined,
|
|
@@ -2250,6 +2250,10 @@ function updatePickIds(model) {
|
|
|
2250
2250
|
}
|
|
2251
2251
|
}
|
|
2252
2252
|
|
|
2253
|
+
// Matrix3 is a row-major constructor.
|
|
2254
|
+
// The same constructor in GLSL will produce the transpose of this.
|
|
2255
|
+
const yUpToZUp = new Matrix3(-1, 0, 0, 0, 0, 1, 0, -1, 0);
|
|
2256
|
+
|
|
2253
2257
|
function updateReferenceMatrices(model, frameState) {
|
|
2254
2258
|
const modelMatrix = defined(model._clampedModelMatrix)
|
|
2255
2259
|
? model._clampedModelMatrix
|
|
@@ -2267,15 +2271,16 @@ function updateReferenceMatrices(model, frameState) {
|
|
|
2267
2271
|
referenceMatrix,
|
|
2268
2272
|
iblReferenceFrameMatrix4
|
|
2269
2273
|
);
|
|
2270
|
-
iblReferenceFrameMatrix3 = Matrix4.
|
|
2274
|
+
iblReferenceFrameMatrix3 = Matrix4.getRotation(
|
|
2271
2275
|
iblReferenceFrameMatrix4,
|
|
2272
2276
|
iblReferenceFrameMatrix3
|
|
2273
2277
|
);
|
|
2274
|
-
iblReferenceFrameMatrix3 = Matrix3.
|
|
2278
|
+
iblReferenceFrameMatrix3 = Matrix3.transpose(
|
|
2275
2279
|
iblReferenceFrameMatrix3,
|
|
2276
2280
|
iblReferenceFrameMatrix3
|
|
2277
2281
|
);
|
|
2278
|
-
model._iblReferenceFrameMatrix = Matrix3.
|
|
2282
|
+
model._iblReferenceFrameMatrix = Matrix3.multiply(
|
|
2283
|
+
yUpToZUp,
|
|
2279
2284
|
iblReferenceFrameMatrix3,
|
|
2280
2285
|
model._iblReferenceFrameMatrix
|
|
2281
2286
|
);
|
|
@@ -357,6 +357,9 @@ ModelUtility.supportedExtensions = {
|
|
|
357
357
|
KHR_techniques_webgl: true,
|
|
358
358
|
KHR_materials_common: true,
|
|
359
359
|
KHR_materials_pbrSpecularGlossiness: true,
|
|
360
|
+
KHR_materials_specular: true,
|
|
361
|
+
KHR_materials_anisotropy: true,
|
|
362
|
+
KHR_materials_clearcoat: true,
|
|
360
363
|
KHR_materials_unlit: true,
|
|
361
364
|
KHR_mesh_quantization: true,
|
|
362
365
|
KHR_texture_basisu: true,
|
|
@@ -3,11 +3,9 @@ import ShaderDestination from "../../Renderer/ShaderDestination.js";
|
|
|
3
3
|
import VerticalExaggerationStageVS from "../../Shaders/Model/VerticalExaggerationStageVS.js";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* The
|
|
7
|
-
*
|
|
8
|
-
* {@link
|
|
9
|
-
* properties that depend on the attributes of the primitive. This shader code
|
|
10
|
-
* is automatically generated by this stage.
|
|
6
|
+
* The vertical exaggeration pipeline stage transforms the vertex
|
|
7
|
+
* positions based on the values of {@link Scene#verticalExaggeration} and
|
|
8
|
+
* {@link Scene#verticalExaggerationRelativeHeight}
|
|
11
9
|
*
|
|
12
10
|
* @namespace VerticalExaggerationPipelineStage
|
|
13
11
|
*
|
|
@@ -20,7 +18,7 @@ const VerticalExaggerationPipelineStage = {
|
|
|
20
18
|
const scratchExaggerationUniform = new Cartesian2();
|
|
21
19
|
|
|
22
20
|
/**
|
|
23
|
-
* Add vertical exaggeration
|
|
21
|
+
* Add defines and uniforms for vertical exaggeration calculations in the vertex shader
|
|
24
22
|
*
|
|
25
23
|
* @param {PrimitiveRenderResources} renderResources The render resources for the primitive
|
|
26
24
|
* @param {ModelComponents.Primitive} primitive The primitive to be rendered
|