@cesium/engine 9.1.0 → 10.0.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-TMMOULW3.js → chunk-2J3JKXCP.js} +5 -5
- package/Build/Workers/{chunk-ZDP32RQI.js → chunk-3WUV74WM.js} +95 -155
- package/Build/Workers/{chunk-FOZQIHZK.js → chunk-4BAE4PWO.js} +6 -6
- package/Build/Workers/{chunk-CYAJYEKW.js → chunk-4MSUJ4I7.js} +8 -8
- package/Build/Workers/{chunk-KPY4F4BW.js → chunk-4YSNMHZ4.js} +6 -6
- package/Build/Workers/{chunk-66E3H2KU.js → chunk-5S7OLEPK.js} +12 -12
- package/Build/Workers/{chunk-4AJGCQFX.js → chunk-7XGC6YB2.js} +14 -14
- package/Build/Workers/{chunk-BDUJXBVF.js → chunk-AA4GZKOT.js} +3 -5
- package/Build/Workers/{chunk-7LPEGKOF.js → chunk-AD5HBJ2F.js} +11 -8
- package/Build/Workers/{chunk-XHLDDE65.js → chunk-AVI4IUWC.js} +11 -11
- package/Build/Workers/{chunk-MWYZ64MH.js → chunk-BCL4PHHT.js} +10 -10
- package/Build/Workers/{chunk-PWF3YJJ5.js → chunk-BDFNKFOE.js} +13 -13
- package/Build/Workers/{chunk-7VZNXIKG.js → chunk-BJF5LOWE.js} +7 -7
- package/Build/Workers/{chunk-3S2MFY4B.js → chunk-C2CGMAIU.js} +13 -13
- package/Build/Workers/{chunk-UAJEGIWA.js → chunk-COYFZ5VA.js} +6 -6
- package/Build/Workers/{chunk-ZWPIM77Q.js → chunk-DGS5QNIO.js} +13 -13
- package/Build/Workers/{chunk-V7JB576Q.js → chunk-DKVHRNFY.js} +5 -5
- package/Build/Workers/{chunk-NI2R52QD.js → chunk-DOXCPOG4.js} +11 -9
- package/Build/Workers/{chunk-XWML5Y7N.js → chunk-FXIHSF7O.js} +9 -9
- package/Build/Workers/{chunk-LW7WGHEU.js → chunk-G3YR53LY.js} +13 -13
- package/Build/Workers/{chunk-34DGOKCO.js → chunk-GR3CDLCP.js} +7 -7
- package/Build/Workers/{chunk-AOIKO5Y7.js → chunk-GRAT5GE7.js} +5 -5
- package/Build/Workers/{chunk-AOFMPKUB.js → chunk-I2RC4XVN.js} +4 -4
- package/Build/Workers/{chunk-PK7TEP3J.js → chunk-JYAHOGGL.js} +15 -15
- package/Build/Workers/{chunk-4KIUON73.js → chunk-KUN2ZA5X.js} +4 -4
- package/Build/Workers/{chunk-POLFRINT.js → chunk-L6RTJ3RE.js} +14 -14
- package/Build/Workers/{chunk-LVJCR7DH.js → chunk-LCLJJ2MZ.js} +18 -18
- package/Build/Workers/{chunk-3RZK5NNV.js → chunk-LEABCTLP.js} +4 -4
- package/Build/Workers/{chunk-QKF7XXEQ.js → chunk-MDHQR3ZS.js} +10 -8
- package/Build/Workers/{chunk-4PHPQRSH.js → chunk-MSKXMXJI.js} +5 -6
- package/Build/Workers/{chunk-GIFJ77E4.js → chunk-NTXTUNEF.js} +4 -4
- package/Build/Workers/{chunk-I5TDPPC4.js → chunk-O3JCMSS3.js} +17 -17
- package/Build/Workers/{chunk-PEABJLCK.js → chunk-OOK53QUQ.js} +1 -1
- package/Build/Workers/{chunk-PS6AEMBR.js → chunk-OORVMGDU.js} +7 -7
- package/Build/Workers/{chunk-JI2445T5.js → chunk-PCP4YQST.js} +11 -11
- package/Build/Workers/{chunk-C5CE4OG6.js → chunk-PYHLO636.js} +42 -13
- package/Build/Workers/{chunk-S4XDCPKD.js → chunk-Q55ECN3Y.js} +1 -1
- package/Build/Workers/{chunk-WWP3I7R5.js → chunk-QD4KM3GO.js} +5 -5
- package/Build/Workers/{chunk-YLZTCEBJ.js → chunk-QMLTCCYG.js} +1 -1
- package/Build/Workers/{chunk-IBXGK4WV.js → chunk-QX5XS4LC.js} +2 -2
- package/Build/Workers/{chunk-RL73GOEF.js → chunk-R6B7UCQB.js} +2 -2
- package/Build/Workers/{chunk-RR7EOKGZ.js → chunk-RJYML24O.js} +48 -85
- package/Build/Workers/{chunk-U4IMCOF5.js → chunk-S3PI2KFM.js} +2 -2
- package/Build/Workers/{chunk-6HCAQOVK.js → chunk-STBBMQGG.js} +6 -6
- package/Build/Workers/{chunk-CE6GTZ4I.js → chunk-SYCPRK3D.js} +10 -10
- package/Build/Workers/{chunk-WFICTTOE.js → chunk-T77JILCU.js} +2 -2
- package/Build/Workers/{chunk-ZC4AGBZK.js → chunk-TO2PVHKI.js} +2 -2
- package/Build/Workers/{chunk-UCPPWV64.js → chunk-VE7BFUIX.js} +1 -1
- package/Build/Workers/{chunk-2CSEEWHN.js → chunk-VFBNELXB.js} +7 -7
- package/Build/Workers/{chunk-A6NCZSL3.js → chunk-VO3ACQB2.js} +19 -19
- package/Build/Workers/{chunk-WEGCQ5DY.js → chunk-X23FRWHJ.js} +6 -6
- package/Build/Workers/{chunk-G7CJQKKD.js → chunk-XD445VDH.js} +7 -7
- 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 +29 -25
- package/Build/Workers/createCircleOutlineGeometry.js +17 -17
- package/Build/Workers/createCoplanarPolygonGeometry.js +32 -32
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +29 -29
- package/Build/Workers/createCorridorGeometry.js +29 -29
- package/Build/Workers/createCorridorOutlineGeometry.js +27 -27
- 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 +24 -24
- package/Build/Workers/createPlaneGeometry.js +14 -14
- package/Build/Workers/createPlaneOutlineGeometry.js +13 -13
- package/Build/Workers/createPolygonGeometry.js +32 -32
- package/Build/Workers/createPolygonOutlineGeometry.js +29 -29
- package/Build/Workers/createPolylineGeometry.js +24 -24
- package/Build/Workers/createPolylineVolumeGeometry.js +30 -30
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +26 -26
- package/Build/Workers/createRectangleGeometry.js +27 -27
- package/Build/Workers/createRectangleOutlineGeometry.js +19 -19
- package/Build/Workers/createSimplePolylineGeometry.js +22 -22
- 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 +21 -21
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +17 -17
- package/Build/Workers/createWallGeometry.js +23 -23
- package/Build/Workers/createWallOutlineGeometry.js +22 -22
- 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/ApproximateTerrainHeights.js +4 -4
- package/Source/Core/ArcGISTiledElevationTerrainProvider.js +12 -8
- package/Source/Core/BoundingRectangle.js +2 -0
- package/Source/Core/BoundingSphere.js +4 -2
- package/Source/Core/Cartesian3.js +13 -10
- package/Source/Core/Cartographic.js +11 -8
- package/Source/Core/CesiumTerrainProvider.js +3 -2
- package/Source/Core/CircleGeometry.js +6 -2
- package/Source/Core/CircleOutlineGeometry.js +1 -1
- package/Source/Core/CoplanarPolygonGeometry.js +3 -3
- package/Source/Core/CorridorGeometry.js +4 -4
- package/Source/Core/CorridorOutlineGeometry.js +2 -2
- package/Source/Core/Credit.js +3 -2
- package/Source/Core/CustomHeightmapTerrainProvider.js +17 -3
- package/Source/Core/EllipseGeometry.js +4 -4
- package/Source/Core/EllipseOutlineGeometry.js +2 -2
- package/Source/Core/Ellipsoid.js +34 -0
- package/Source/Core/EllipsoidGeodesic.js +2 -2
- package/Source/Core/EllipsoidRhumbLine.js +4 -4
- package/Source/Core/EllipsoidTangentPlane.js +3 -3
- package/Source/Core/EllipsoidTerrainProvider.js +3 -3
- package/Source/Core/GeographicProjection.js +4 -3
- package/Source/Core/GeographicTilingScheme.js +3 -3
- package/Source/Core/GeometryPipeline.js +2 -2
- package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +1 -1
- package/Source/Core/GoogleMaps.js +1 -1
- package/Source/Core/GroundPolylineGeometry.js +1 -1
- package/Source/Core/HeightmapTessellator.js +2 -2
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/Math.js +0 -5
- package/Source/Core/Occluder.js +3 -3
- package/Source/Core/OrientedBoundingBox.js +2 -2
- package/Source/Core/PolygonGeometry.js +4 -4
- package/Source/Core/PolygonGeometryLibrary.js +1 -1
- package/Source/Core/PolygonOutlineGeometry.js +3 -3
- package/Source/Core/PolygonPipeline.js +2 -2
- package/Source/Core/PolylineGeometry.js +2 -2
- package/Source/Core/PolylinePipeline.js +6 -6
- package/Source/Core/PolylineVolumeGeometry.js +2 -2
- package/Source/Core/PolylineVolumeOutlineGeometry.js +2 -2
- package/Source/Core/Rectangle.js +6 -6
- package/Source/Core/RectangleGeometry.js +6 -6
- package/Source/Core/RectangleGeometryLibrary.js +3 -0
- package/Source/Core/RectangleOutlineGeometry.js +2 -2
- package/Source/Core/Simon1994PlanetaryPositions.js +3 -2
- package/Source/Core/SimplePolylineGeometry.js +2 -2
- package/Source/Core/Stereographic.js +2 -2
- package/Source/Core/TaskProcessor.js +19 -3
- package/Source/Core/Transforms.js +17 -17
- package/Source/Core/VRTheWorldTerrainProvider.js +2 -2
- package/Source/Core/WallGeometry.js +3 -3
- package/Source/Core/WallOutlineGeometry.js +3 -3
- package/Source/Core/WebMercatorTilingScheme.js +3 -3
- package/Source/Core/createWorldTerrainAsync.js +2 -0
- package/Source/Core/sampleTerrain.js +3 -3
- package/Source/DataSources/BoxGeometryUpdater.js +2 -2
- package/Source/DataSources/CylinderGeometryUpdater.js +2 -2
- package/Source/DataSources/CzmlDataSource.js +8 -8
- package/Source/DataSources/EllipsoidGeometryUpdater.js +3 -3
- package/Source/DataSources/EntityCluster.js +1 -1
- package/Source/DataSources/EntityView.js +2 -2
- package/Source/DataSources/KmlDataSource.js +4 -4
- package/Source/DataSources/ModelVisualizer.js +1 -2
- package/Source/DataSources/PolygonGeometryUpdater.js +1 -1
- package/Source/DataSources/PolylineGeometryUpdater.js +3 -2
- package/Source/DataSources/RectangleGeometryUpdater.js +1 -1
- package/Source/DataSources/ScaledPositionProperty.js +2 -2
- package/Source/DataSources/TerrainOffsetProperty.js +3 -7
- package/Source/DataSources/VelocityOrientationProperty.js +2 -2
- package/Source/DataSources/exportKml.js +2 -2
- package/Source/Renderer/UniformState.js +1 -1
- package/Source/Scene/ArcGisMapServerImageryProvider.js +2 -2
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/Billboard.js +8 -6
- package/Source/Scene/BingMapsImageryProvider.js +1 -1
- package/Source/Scene/Camera.js +16 -10
- package/Source/Scene/Cesium3DTileset.js +1 -1
- package/Source/Scene/ClippingPolygon.js +2 -2
- package/Source/Scene/ClippingPolygonCollection.js +1 -1
- package/Source/Scene/CreditDisplay.js +94 -104
- package/Source/Scene/Globe.js +16 -13
- package/Source/Scene/GltfLoader.js +458 -435
- package/Source/Scene/GltfLoaderUtil.js +5 -16
- package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +23 -7
- package/Source/Scene/GltfStructuralMetadataLoader.js +11 -9
- package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +1 -1
- package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +1 -1
- package/Source/Scene/GridImageryProvider.js +2 -2
- package/Source/Scene/ImageryLayerCollection.js +2 -2
- package/Source/Scene/Label.js +1 -1
- package/Source/Scene/MapboxImageryProvider.js +1 -1
- package/Source/Scene/MapboxStyleImageryProvider.js +1 -1
- package/Source/Scene/MetadataSemantic.js +4 -4
- 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/InstancingPipelineStage.js +3 -3
- package/Source/Scene/Model/LightingPipelineStage.js +2 -4
- package/Source/Scene/Model/MaterialPipelineStage.js +395 -29
- package/Source/Scene/Model/Model.js +15 -7
- package/Source/Scene/Model/ModelSceneGraph.js +1 -1
- package/Source/Scene/Model/ModelUtility.js +3 -0
- package/Source/Scene/Model/SceneMode2DPipelineStage.js +3 -3
- package/Source/Scene/Model/VerticalExaggerationPipelineStage.js +4 -6
- package/Source/Scene/Model/pickModel.js +2 -2
- package/Source/Scene/ModelComponents.js +178 -1
- package/Source/Scene/PickDepth.js +23 -15
- package/Source/Scene/Picking.js +4 -13
- package/Source/Scene/PointPrimitive.js +5 -2
- package/Source/Scene/ResourceCache.js +41 -50
- package/Source/Scene/ResourceCacheKey.js +41 -53
- package/Source/Scene/Scene.js +39 -31
- package/Source/Scene/SceneTransforms.js +78 -20
- package/Source/Scene/SceneTransitioner.js +2 -2
- package/Source/Scene/ScreenSpaceCameraController.js +29 -19
- package/Source/Scene/SkyBox.js +26 -0
- package/Source/Scene/Sun.js +1 -1
- package/Source/Shaders/Builtin/CzmBuiltins.js +4 -10
- package/Source/Shaders/Builtin/Functions/ellipsoidTextureCoordinates.glsl +10 -0
- package/Source/Shaders/Builtin/Functions/{ellipsoidWgs84TextureCoordinates.js → ellipsoidTextureCoordinates.js} +3 -3
- 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/materialInput.glsl +1 -1
- package/Source/Shaders/Builtin/Structs/materialInput.js +1 -1
- package/Source/Shaders/Builtin/Structs/modelMaterial.glsl +16 -0
- package/Source/Shaders/Builtin/Structs/modelMaterial.js +16 -0
- package/Source/Shaders/EllipsoidFS.glsl +1 -1
- package/Source/Shaders/EllipsoidFS.js +1 -1
- package/Source/Shaders/GlobeFS.glsl +3 -3
- package/Source/Shaders/GlobeFS.js +3 -3
- 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 +407 -136
- package/Source/Shaders/Model/MaterialStageFS.js +407 -136
- package/Source/Widget/CesiumWidget.css +0 -5
- package/Source/Widget/CesiumWidget.js +29 -28
- package/index.d.ts +184 -116
- package/index.js +92 -95
- package/package.json +2 -2
- package/Source/Shaders/Builtin/Functions/defaultPbrMaterial.glsl +0 -16
- package/Source/Shaders/Builtin/Functions/defaultPbrMaterial.js +0 -18
- package/Source/Shaders/Builtin/Functions/ellipsoidWgs84TextureCoordinates.glsl +0 -10
- 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,
|
|
@@ -176,6 +216,44 @@ function processTextureTransform(
|
|
|
176
216
|
};
|
|
177
217
|
}
|
|
178
218
|
|
|
219
|
+
/**
|
|
220
|
+
* Process a single texture scale and add it to the shader and uniform map.
|
|
221
|
+
*
|
|
222
|
+
* @param {ShaderBuilder} shaderBuilder The shader builder to modify
|
|
223
|
+
* @param {Object<string, Function>} uniformMap The uniform map to modify.
|
|
224
|
+
* @param {ModelComponents.TextureReader} textureReader The texture to add to the shader
|
|
225
|
+
* @param {string} uniformName The name of the sampler uniform such as <code>u_baseColorTexture</code>
|
|
226
|
+
* @param {string} defineName The name of the texture for use in the defines, minus any prefix or suffix. For example, "BASE_COLOR" or "EMISSIVE"
|
|
227
|
+
*
|
|
228
|
+
* @private
|
|
229
|
+
*/
|
|
230
|
+
function processTextureScale(
|
|
231
|
+
shaderBuilder,
|
|
232
|
+
uniformMap,
|
|
233
|
+
textureReader,
|
|
234
|
+
uniformName,
|
|
235
|
+
defineName
|
|
236
|
+
) {
|
|
237
|
+
// Add a define to enable the texture transformation code in the shader.
|
|
238
|
+
const transformDefine = `HAS_${defineName}_TEXTURE_SCALE`;
|
|
239
|
+
shaderBuilder.addDefine(
|
|
240
|
+
transformDefine,
|
|
241
|
+
undefined,
|
|
242
|
+
ShaderDestination.FRAGMENT
|
|
243
|
+
);
|
|
244
|
+
|
|
245
|
+
// Add a uniform for the transformation matrix
|
|
246
|
+
const scaleUniformName = `${uniformName}Scale`;
|
|
247
|
+
shaderBuilder.addUniform(
|
|
248
|
+
"float",
|
|
249
|
+
scaleUniformName,
|
|
250
|
+
ShaderDestination.FRAGMENT
|
|
251
|
+
);
|
|
252
|
+
uniformMap[scaleUniformName] = function () {
|
|
253
|
+
return textureReader.scale;
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
|
|
179
257
|
/**
|
|
180
258
|
* Process a single texture and add it to the shader and uniform map.
|
|
181
259
|
*
|
|
@@ -234,6 +312,17 @@ function processTexture(
|
|
|
234
312
|
defineName
|
|
235
313
|
);
|
|
236
314
|
}
|
|
315
|
+
|
|
316
|
+
const { scale } = textureReader;
|
|
317
|
+
if (defined(scale) && scale !== 1.0) {
|
|
318
|
+
processTextureScale(
|
|
319
|
+
shaderBuilder,
|
|
320
|
+
uniformMap,
|
|
321
|
+
textureReader,
|
|
322
|
+
uniformName,
|
|
323
|
+
defineName
|
|
324
|
+
);
|
|
325
|
+
}
|
|
237
326
|
}
|
|
238
327
|
|
|
239
328
|
function processMaterialUniforms(
|
|
@@ -245,7 +334,13 @@ function processMaterialUniforms(
|
|
|
245
334
|
defaultEmissiveTexture,
|
|
246
335
|
disableTextures
|
|
247
336
|
) {
|
|
248
|
-
const
|
|
337
|
+
const {
|
|
338
|
+
emissiveFactor,
|
|
339
|
+
emissiveTexture,
|
|
340
|
+
normalTexture,
|
|
341
|
+
occlusionTexture,
|
|
342
|
+
} = material;
|
|
343
|
+
|
|
249
344
|
if (
|
|
250
345
|
defined(emissiveFactor) &&
|
|
251
346
|
!Cartesian3.equals(emissiveFactor, Material.DEFAULT_EMISSIVE_FACTOR)
|
|
@@ -264,7 +359,6 @@ function processMaterialUniforms(
|
|
|
264
359
|
ShaderDestination.FRAGMENT
|
|
265
360
|
);
|
|
266
361
|
|
|
267
|
-
const emissiveTexture = material.emissiveTexture;
|
|
268
362
|
if (defined(emissiveTexture) && !disableTextures) {
|
|
269
363
|
processTexture(
|
|
270
364
|
shaderBuilder,
|
|
@@ -277,7 +371,6 @@ function processMaterialUniforms(
|
|
|
277
371
|
}
|
|
278
372
|
}
|
|
279
373
|
|
|
280
|
-
const normalTexture = material.normalTexture;
|
|
281
374
|
if (defined(normalTexture) && !disableTextures) {
|
|
282
375
|
processTexture(
|
|
283
376
|
shaderBuilder,
|
|
@@ -289,7 +382,6 @@ function processMaterialUniforms(
|
|
|
289
382
|
);
|
|
290
383
|
}
|
|
291
384
|
|
|
292
|
-
const occlusionTexture = material.occlusionTexture;
|
|
293
385
|
if (defined(occlusionTexture) && !disableTextures) {
|
|
294
386
|
processTexture(
|
|
295
387
|
shaderBuilder,
|
|
@@ -302,21 +394,37 @@ function processMaterialUniforms(
|
|
|
302
394
|
}
|
|
303
395
|
}
|
|
304
396
|
|
|
397
|
+
/**
|
|
398
|
+
* Add uniforms and defines for the KHR_materials_pbrSpecularGlossiness extension
|
|
399
|
+
*
|
|
400
|
+
* @param {ModelComponents.SpecularGlossiness} specularGlossiness
|
|
401
|
+
* @param {Object<string, Function>} uniformMap The uniform map to modify.
|
|
402
|
+
* @param {ShaderBuilder} shaderBuilder
|
|
403
|
+
* @param {Texture} defaultTexture
|
|
404
|
+
* @param {boolean} disableTextures
|
|
405
|
+
* @private
|
|
406
|
+
*/
|
|
305
407
|
function processSpecularGlossinessUniforms(
|
|
306
|
-
|
|
408
|
+
specularGlossiness,
|
|
307
409
|
uniformMap,
|
|
308
410
|
shaderBuilder,
|
|
309
411
|
defaultTexture,
|
|
310
412
|
disableTextures
|
|
311
413
|
) {
|
|
312
|
-
const
|
|
414
|
+
const {
|
|
415
|
+
diffuseTexture,
|
|
416
|
+
diffuseFactor,
|
|
417
|
+
specularGlossinessTexture,
|
|
418
|
+
specularFactor,
|
|
419
|
+
glossinessFactor,
|
|
420
|
+
} = specularGlossiness;
|
|
421
|
+
|
|
313
422
|
shaderBuilder.addDefine(
|
|
314
423
|
"USE_SPECULAR_GLOSSINESS",
|
|
315
424
|
undefined,
|
|
316
425
|
ShaderDestination.FRAGMENT
|
|
317
426
|
);
|
|
318
427
|
|
|
319
|
-
const diffuseTexture = specularGlossiness.diffuseTexture;
|
|
320
428
|
if (defined(diffuseTexture) && !disableTextures) {
|
|
321
429
|
processTexture(
|
|
322
430
|
shaderBuilder,
|
|
@@ -328,7 +436,6 @@ function processSpecularGlossinessUniforms(
|
|
|
328
436
|
);
|
|
329
437
|
}
|
|
330
438
|
|
|
331
|
-
const diffuseFactor = specularGlossiness.diffuseFactor;
|
|
332
439
|
if (
|
|
333
440
|
defined(diffuseFactor) &&
|
|
334
441
|
!Cartesian4.equals(diffuseFactor, SpecularGlossiness.DEFAULT_DIFFUSE_FACTOR)
|
|
@@ -348,8 +455,6 @@ function processSpecularGlossinessUniforms(
|
|
|
348
455
|
);
|
|
349
456
|
}
|
|
350
457
|
|
|
351
|
-
const specularGlossinessTexture =
|
|
352
|
-
specularGlossiness.specularGlossinessTexture;
|
|
353
458
|
if (defined(specularGlossinessTexture) && !disableTextures) {
|
|
354
459
|
processTexture(
|
|
355
460
|
shaderBuilder,
|
|
@@ -361,7 +466,6 @@ function processSpecularGlossinessUniforms(
|
|
|
361
466
|
);
|
|
362
467
|
}
|
|
363
468
|
|
|
364
|
-
const specularFactor = specularGlossiness.specularFactor;
|
|
365
469
|
if (
|
|
366
470
|
defined(specularFactor) &&
|
|
367
471
|
!Cartesian3.equals(
|
|
@@ -371,20 +475,19 @@ function processSpecularGlossinessUniforms(
|
|
|
371
475
|
) {
|
|
372
476
|
shaderBuilder.addUniform(
|
|
373
477
|
"vec3",
|
|
374
|
-
"
|
|
478
|
+
"u_legacySpecularFactor",
|
|
375
479
|
ShaderDestination.FRAGMENT
|
|
376
480
|
);
|
|
377
|
-
uniformMap.
|
|
481
|
+
uniformMap.u_legacySpecularFactor = function () {
|
|
378
482
|
return specularGlossiness.specularFactor;
|
|
379
483
|
};
|
|
380
484
|
shaderBuilder.addDefine(
|
|
381
|
-
"
|
|
485
|
+
"HAS_LEGACY_SPECULAR_FACTOR",
|
|
382
486
|
undefined,
|
|
383
487
|
ShaderDestination.FRAGMENT
|
|
384
488
|
);
|
|
385
489
|
}
|
|
386
490
|
|
|
387
|
-
const glossinessFactor = specularGlossiness.glossinessFactor;
|
|
388
491
|
if (
|
|
389
492
|
defined(glossinessFactor) &&
|
|
390
493
|
glossinessFactor !== SpecularGlossiness.DEFAULT_GLOSSINESS_FACTOR
|
|
@@ -405,14 +508,277 @@ function processSpecularGlossinessUniforms(
|
|
|
405
508
|
}
|
|
406
509
|
}
|
|
407
510
|
|
|
511
|
+
/**
|
|
512
|
+
* Add uniforms and defines for the KHR_materials_specular extension
|
|
513
|
+
*
|
|
514
|
+
* @param {ModelComponents.Specular} specular
|
|
515
|
+
* @param {Object<string, Function>} uniformMap The uniform map to modify.
|
|
516
|
+
* @param {ShaderBuilder} shaderBuilder
|
|
517
|
+
* @param {Texture} defaultTexture
|
|
518
|
+
* @param {boolean} disableTextures
|
|
519
|
+
* @private
|
|
520
|
+
*/
|
|
521
|
+
function processSpecularUniforms(
|
|
522
|
+
specular,
|
|
523
|
+
uniformMap,
|
|
524
|
+
shaderBuilder,
|
|
525
|
+
defaultTexture,
|
|
526
|
+
disableTextures
|
|
527
|
+
) {
|
|
528
|
+
const {
|
|
529
|
+
specularTexture,
|
|
530
|
+
specularFactor,
|
|
531
|
+
specularColorTexture,
|
|
532
|
+
specularColorFactor,
|
|
533
|
+
} = specular;
|
|
534
|
+
|
|
535
|
+
shaderBuilder.addDefine(
|
|
536
|
+
"USE_SPECULAR",
|
|
537
|
+
undefined,
|
|
538
|
+
ShaderDestination.FRAGMENT
|
|
539
|
+
);
|
|
540
|
+
|
|
541
|
+
if (defined(specularTexture) && !disableTextures) {
|
|
542
|
+
processTexture(
|
|
543
|
+
shaderBuilder,
|
|
544
|
+
uniformMap,
|
|
545
|
+
specularTexture,
|
|
546
|
+
"u_specularTexture",
|
|
547
|
+
"SPECULAR",
|
|
548
|
+
defaultTexture
|
|
549
|
+
);
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
if (
|
|
553
|
+
defined(specularFactor) &&
|
|
554
|
+
specularFactor !== Specular.DEFAULT_SPECULAR_FACTOR
|
|
555
|
+
) {
|
|
556
|
+
shaderBuilder.addUniform(
|
|
557
|
+
"float",
|
|
558
|
+
"u_specularFactor",
|
|
559
|
+
ShaderDestination.FRAGMENT
|
|
560
|
+
);
|
|
561
|
+
uniformMap.u_specularFactor = function () {
|
|
562
|
+
return specular.specularFactor;
|
|
563
|
+
};
|
|
564
|
+
shaderBuilder.addDefine(
|
|
565
|
+
"HAS_SPECULAR_FACTOR",
|
|
566
|
+
undefined,
|
|
567
|
+
ShaderDestination.FRAGMENT
|
|
568
|
+
);
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
if (defined(specularColorTexture) && !disableTextures) {
|
|
572
|
+
processTexture(
|
|
573
|
+
shaderBuilder,
|
|
574
|
+
uniformMap,
|
|
575
|
+
specularColorTexture,
|
|
576
|
+
"u_specularColorTexture",
|
|
577
|
+
"SPECULAR_COLOR",
|
|
578
|
+
defaultTexture
|
|
579
|
+
);
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
if (
|
|
583
|
+
defined(specularColorFactor) &&
|
|
584
|
+
!Cartesian3.equals(
|
|
585
|
+
specularColorFactor,
|
|
586
|
+
Specular.DEFAULT_SPECULAR_COLOR_FACTOR
|
|
587
|
+
)
|
|
588
|
+
) {
|
|
589
|
+
shaderBuilder.addUniform(
|
|
590
|
+
"vec3",
|
|
591
|
+
"u_specularColorFactor",
|
|
592
|
+
ShaderDestination.FRAGMENT
|
|
593
|
+
);
|
|
594
|
+
uniformMap.u_specularColorFactor = function () {
|
|
595
|
+
return specular.specularColorFactor;
|
|
596
|
+
};
|
|
597
|
+
shaderBuilder.addDefine(
|
|
598
|
+
"HAS_SPECULAR_COLOR_FACTOR",
|
|
599
|
+
undefined,
|
|
600
|
+
ShaderDestination.FRAGMENT
|
|
601
|
+
);
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
const scratchAnisotropy = new Cartesian3();
|
|
606
|
+
|
|
607
|
+
/**
|
|
608
|
+
* Add uniforms and defines for the KHR_materials_anisotropy extension
|
|
609
|
+
*
|
|
610
|
+
* @param {ModelComponents.Anisotropy} anisotropy
|
|
611
|
+
* @param {Object<string, Function>} uniformMap The uniform map to modify.
|
|
612
|
+
* @param {ShaderBuilder} shaderBuilder
|
|
613
|
+
* @param {Texture} defaultTexture
|
|
614
|
+
* @param {boolean} disableTextures
|
|
615
|
+
* @private
|
|
616
|
+
*/
|
|
617
|
+
function processAnisotropyUniforms(
|
|
618
|
+
anisotropy,
|
|
619
|
+
uniformMap,
|
|
620
|
+
shaderBuilder,
|
|
621
|
+
defaultTexture,
|
|
622
|
+
disableTextures
|
|
623
|
+
) {
|
|
624
|
+
const {
|
|
625
|
+
anisotropyStrength,
|
|
626
|
+
anisotropyRotation,
|
|
627
|
+
anisotropyTexture,
|
|
628
|
+
} = anisotropy;
|
|
629
|
+
|
|
630
|
+
shaderBuilder.addDefine(
|
|
631
|
+
"USE_ANISOTROPY",
|
|
632
|
+
undefined,
|
|
633
|
+
ShaderDestination.FRAGMENT
|
|
634
|
+
);
|
|
635
|
+
|
|
636
|
+
if (defined(anisotropyTexture) && !disableTextures) {
|
|
637
|
+
processTexture(
|
|
638
|
+
shaderBuilder,
|
|
639
|
+
uniformMap,
|
|
640
|
+
anisotropyTexture,
|
|
641
|
+
"u_anisotropyTexture",
|
|
642
|
+
"ANISOTROPY",
|
|
643
|
+
defaultTexture
|
|
644
|
+
);
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
// Pre-compute cos and sin of rotation, since they are the same for all fragments.
|
|
648
|
+
// Combine with strength as one vec3 uniform.
|
|
649
|
+
const cosRotation = Math.cos(anisotropyRotation);
|
|
650
|
+
const sinRotation = Math.sin(anisotropyRotation);
|
|
651
|
+
shaderBuilder.addUniform("vec3", "u_anisotropy", ShaderDestination.FRAGMENT);
|
|
652
|
+
uniformMap.u_anisotropy = function () {
|
|
653
|
+
return Cartesian3.fromElements(
|
|
654
|
+
cosRotation,
|
|
655
|
+
sinRotation,
|
|
656
|
+
anisotropyStrength,
|
|
657
|
+
scratchAnisotropy
|
|
658
|
+
);
|
|
659
|
+
};
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
/**
|
|
663
|
+
* Add uniforms and defines for the KHR_materials_clearcoat extension
|
|
664
|
+
*
|
|
665
|
+
* @param {ModelComponents.Clearcoat} clearcoat
|
|
666
|
+
* @param {Object<string, Function>} uniformMap The uniform map to modify.
|
|
667
|
+
* @param {ShaderBuilder} shaderBuilder
|
|
668
|
+
* @param {Texture} defaultTexture
|
|
669
|
+
* @param {boolean} disableTextures
|
|
670
|
+
* @private
|
|
671
|
+
*/
|
|
672
|
+
function processClearcoatUniforms(
|
|
673
|
+
clearcoat,
|
|
674
|
+
uniformMap,
|
|
675
|
+
shaderBuilder,
|
|
676
|
+
defaultTexture,
|
|
677
|
+
disableTextures
|
|
678
|
+
) {
|
|
679
|
+
const {
|
|
680
|
+
clearcoatFactor,
|
|
681
|
+
clearcoatTexture,
|
|
682
|
+
clearcoatRoughnessFactor,
|
|
683
|
+
clearcoatRoughnessTexture,
|
|
684
|
+
clearcoatNormalTexture,
|
|
685
|
+
} = clearcoat;
|
|
686
|
+
|
|
687
|
+
shaderBuilder.addDefine(
|
|
688
|
+
"USE_CLEARCOAT",
|
|
689
|
+
undefined,
|
|
690
|
+
ShaderDestination.FRAGMENT
|
|
691
|
+
);
|
|
692
|
+
|
|
693
|
+
if (
|
|
694
|
+
defined(clearcoatFactor) &&
|
|
695
|
+
clearcoatFactor !== Clearcoat.DEFAULT_CLEARCOAT_FACTOR
|
|
696
|
+
) {
|
|
697
|
+
shaderBuilder.addUniform(
|
|
698
|
+
"float",
|
|
699
|
+
"u_clearcoatFactor",
|
|
700
|
+
ShaderDestination.FRAGMENT
|
|
701
|
+
);
|
|
702
|
+
uniformMap.u_clearcoatFactor = function () {
|
|
703
|
+
return clearcoat.clearcoatFactor;
|
|
704
|
+
};
|
|
705
|
+
shaderBuilder.addDefine(
|
|
706
|
+
"HAS_CLEARCOAT_FACTOR",
|
|
707
|
+
undefined,
|
|
708
|
+
ShaderDestination.FRAGMENT
|
|
709
|
+
);
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
if (defined(clearcoatTexture) && !disableTextures) {
|
|
713
|
+
processTexture(
|
|
714
|
+
shaderBuilder,
|
|
715
|
+
uniformMap,
|
|
716
|
+
clearcoatTexture,
|
|
717
|
+
"u_clearcoatTexture",
|
|
718
|
+
"CLEARCOAT",
|
|
719
|
+
defaultTexture
|
|
720
|
+
);
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
if (
|
|
724
|
+
defined(clearcoatRoughnessFactor) &&
|
|
725
|
+
clearcoatFactor !== Clearcoat.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR
|
|
726
|
+
) {
|
|
727
|
+
shaderBuilder.addUniform(
|
|
728
|
+
"float",
|
|
729
|
+
"u_clearcoatRoughnessFactor",
|
|
730
|
+
ShaderDestination.FRAGMENT
|
|
731
|
+
);
|
|
732
|
+
uniformMap.u_clearcoatRoughnessFactor = function () {
|
|
733
|
+
return clearcoat.clearcoatRoughnessFactor;
|
|
734
|
+
};
|
|
735
|
+
shaderBuilder.addDefine(
|
|
736
|
+
"HAS_CLEARCOAT_ROUGHNESS_FACTOR",
|
|
737
|
+
undefined,
|
|
738
|
+
ShaderDestination.FRAGMENT
|
|
739
|
+
);
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
if (defined(clearcoatRoughnessTexture) && !disableTextures) {
|
|
743
|
+
processTexture(
|
|
744
|
+
shaderBuilder,
|
|
745
|
+
uniformMap,
|
|
746
|
+
clearcoatRoughnessTexture,
|
|
747
|
+
"u_clearcoatRoughnessTexture",
|
|
748
|
+
"CLEARCOAT_ROUGHNESS",
|
|
749
|
+
defaultTexture
|
|
750
|
+
);
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
if (defined(clearcoatNormalTexture) && !disableTextures) {
|
|
754
|
+
processTexture(
|
|
755
|
+
shaderBuilder,
|
|
756
|
+
uniformMap,
|
|
757
|
+
clearcoatNormalTexture,
|
|
758
|
+
"u_clearcoatNormalTexture",
|
|
759
|
+
"CLEARCOAT_NORMAL",
|
|
760
|
+
defaultTexture
|
|
761
|
+
);
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
/**
|
|
766
|
+
* Add uniforms and defines for the PBR metallic roughness model
|
|
767
|
+
*
|
|
768
|
+
* @param {ModelComponents.MetallicRoughness} metallicRoughness
|
|
769
|
+
* @param {Object<string, Function>} uniformMap The uniform map to modify.
|
|
770
|
+
* @param {ShaderBuilder} shaderBuilder
|
|
771
|
+
* @param {Texture} defaultTexture
|
|
772
|
+
* @param {boolean} disableTextures
|
|
773
|
+
* @private
|
|
774
|
+
*/
|
|
408
775
|
function processMetallicRoughnessUniforms(
|
|
409
|
-
|
|
776
|
+
metallicRoughness,
|
|
410
777
|
uniformMap,
|
|
411
778
|
shaderBuilder,
|
|
412
779
|
defaultTexture,
|
|
413
780
|
disableTextures
|
|
414
781
|
) {
|
|
415
|
-
const metallicRoughness = material.metallicRoughness;
|
|
416
782
|
shaderBuilder.addDefine(
|
|
417
783
|
"USE_METALLIC_ROUGHNESS",
|
|
418
784
|
undefined,
|
|
@@ -2123,8 +2123,7 @@ function updateClamping(model) {
|
|
|
2123
2123
|
return;
|
|
2124
2124
|
}
|
|
2125
2125
|
|
|
2126
|
-
const
|
|
2127
|
-
const ellipsoid = defaultValue(globe?.ellipsoid, Ellipsoid.WGS84);
|
|
2126
|
+
const ellipsoid = defaultValue(scene.ellipsoid, Ellipsoid.default);
|
|
2128
2127
|
|
|
2129
2128
|
// Compute cartographic position so we don't recompute every update
|
|
2130
2129
|
const modelMatrix = model.modelMatrix;
|
|
@@ -2206,7 +2205,7 @@ function updateComputedScale(model, modelMatrix, frameState) {
|
|
|
2206
2205
|
Matrix4.getTranslation(modelMatrix, scratchPosition);
|
|
2207
2206
|
|
|
2208
2207
|
if (model._sceneMode !== SceneMode.SCENE3D) {
|
|
2209
|
-
SceneTransforms.
|
|
2208
|
+
SceneTransforms.computeActualEllipsoidPosition(
|
|
2210
2209
|
frameState,
|
|
2211
2210
|
scratchPosition,
|
|
2212
2211
|
scratchPosition
|
|
@@ -2250,6 +2249,10 @@ function updatePickIds(model) {
|
|
|
2250
2249
|
}
|
|
2251
2250
|
}
|
|
2252
2251
|
|
|
2252
|
+
// Matrix3 is a row-major constructor.
|
|
2253
|
+
// The same constructor in GLSL will produce the transpose of this.
|
|
2254
|
+
const yUpToZUp = new Matrix3(-1, 0, 0, 0, 0, 1, 0, -1, 0);
|
|
2255
|
+
|
|
2253
2256
|
function updateReferenceMatrices(model, frameState) {
|
|
2254
2257
|
const modelMatrix = defined(model._clampedModelMatrix)
|
|
2255
2258
|
? model._clampedModelMatrix
|
|
@@ -2267,15 +2270,16 @@ function updateReferenceMatrices(model, frameState) {
|
|
|
2267
2270
|
referenceMatrix,
|
|
2268
2271
|
iblReferenceFrameMatrix4
|
|
2269
2272
|
);
|
|
2270
|
-
iblReferenceFrameMatrix3 = Matrix4.
|
|
2273
|
+
iblReferenceFrameMatrix3 = Matrix4.getRotation(
|
|
2271
2274
|
iblReferenceFrameMatrix4,
|
|
2272
2275
|
iblReferenceFrameMatrix3
|
|
2273
2276
|
);
|
|
2274
|
-
iblReferenceFrameMatrix3 = Matrix3.
|
|
2277
|
+
iblReferenceFrameMatrix3 = Matrix3.transpose(
|
|
2275
2278
|
iblReferenceFrameMatrix3,
|
|
2276
2279
|
iblReferenceFrameMatrix3
|
|
2277
2280
|
);
|
|
2278
|
-
model._iblReferenceFrameMatrix = Matrix3.
|
|
2281
|
+
model._iblReferenceFrameMatrix = Matrix3.multiply(
|
|
2282
|
+
yUpToZUp,
|
|
2279
2283
|
iblReferenceFrameMatrix3,
|
|
2280
2284
|
model._iblReferenceFrameMatrix
|
|
2281
2285
|
);
|
|
@@ -2460,7 +2464,11 @@ function passesDistanceDisplayCondition(model, frameState) {
|
|
|
2460
2464
|
|
|
2461
2465
|
// This will project the position if the scene is in Columbus View,
|
|
2462
2466
|
// but leave the position as-is in 3D mode.
|
|
2463
|
-
SceneTransforms.
|
|
2467
|
+
SceneTransforms.computeActualEllipsoidPosition(
|
|
2468
|
+
frameState,
|
|
2469
|
+
position,
|
|
2470
|
+
position
|
|
2471
|
+
);
|
|
2464
2472
|
|
|
2465
2473
|
distanceSquared = Cartesian3.distanceSquared(
|
|
2466
2474
|
position,
|
|
@@ -351,7 +351,7 @@ function computeModelMatrix2D(sceneGraph, frameState) {
|
|
|
351
351
|
);
|
|
352
352
|
} else {
|
|
353
353
|
const center = sceneGraph.boundingSphere.center;
|
|
354
|
-
const to2D = Transforms.
|
|
354
|
+
const to2D = Transforms.ellipsoidTo2DModelMatrix(
|
|
355
355
|
frameState.mapProjection,
|
|
356
356
|
center,
|
|
357
357
|
sceneGraph._computedModelMatrix2D
|
|
@@ -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,
|
|
@@ -145,7 +145,7 @@ function computeBoundingSphere2D(renderResources, modelMatrix, frameState) {
|
|
|
145
145
|
scratchProjectedMin
|
|
146
146
|
);
|
|
147
147
|
|
|
148
|
-
const projectedMin = SceneTransforms.
|
|
148
|
+
const projectedMin = SceneTransforms.computeActualEllipsoidPosition(
|
|
149
149
|
frameState,
|
|
150
150
|
transformedPositionMin,
|
|
151
151
|
transformedPositionMin
|
|
@@ -157,7 +157,7 @@ function computeBoundingSphere2D(renderResources, modelMatrix, frameState) {
|
|
|
157
157
|
scratchProjectedMax
|
|
158
158
|
);
|
|
159
159
|
|
|
160
|
-
const projectedMax = SceneTransforms.
|
|
160
|
+
const projectedMax = SceneTransforms.computeActualEllipsoidPosition(
|
|
161
161
|
frameState,
|
|
162
162
|
transformedPositionMax,
|
|
163
163
|
transformedPositionMax
|
|
@@ -244,7 +244,7 @@ function createPositionsTypedArrayFor2D(
|
|
|
244
244
|
initialPosition
|
|
245
245
|
);
|
|
246
246
|
|
|
247
|
-
const projectedPosition = SceneTransforms.
|
|
247
|
+
const projectedPosition = SceneTransforms.computeActualEllipsoidPosition(
|
|
248
248
|
frameState,
|
|
249
249
|
transformedPosition,
|
|
250
250
|
transformedPosition
|
|
@@ -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
|