@cesium/engine 10.1.0 → 11.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.
Files changed (261) hide show
  1. package/Build/Workers/{chunk-N4QEHO3U.js → chunk-2EDC3QGH.js} +1 -1
  2. package/Build/Workers/{chunk-NVOABL76.js → chunk-2MKRG7L7.js} +5 -5
  3. package/Build/Workers/{chunk-X23FRWHJ.js → chunk-2RZYNSMR.js} +6 -6
  4. package/Build/Workers/{chunk-TO2PVHKI.js → chunk-4NBRIKB3.js} +2 -2
  5. package/Build/Workers/{chunk-5BLJ5ZM6.js → chunk-4TK5YR6Q.js} +5 -5
  6. package/Build/Workers/{chunk-TF776XCO.js → chunk-54VC7SCM.js} +7 -7
  7. package/Build/Workers/{chunk-2GEAGYUY.js → chunk-5IY5BXCT.js} +13 -13
  8. package/Build/Workers/{chunk-OXALEQPI.js → chunk-6FFGOENI.js} +10 -7
  9. package/Build/Workers/{chunk-65MZOUNU.js → chunk-6PJIHPQB.js} +13 -13
  10. package/Build/Workers/{chunk-FOZWUH4T.js → chunk-6ZREIBKS.js} +7 -7
  11. package/Build/Workers/{chunk-BY3E4ONI.js → chunk-AI3O7UN2.js} +6 -6
  12. package/Build/Workers/{chunk-XQI7XZHX.js → chunk-AS7P4BHI.js} +6 -6
  13. package/Build/Workers/{chunk-PNFHVBSF.js → chunk-AUM45VEG.js} +16 -15
  14. package/Build/Workers/{chunk-VRZ46QZ5.js → chunk-BBO6BGLC.js} +13 -13
  15. package/Build/Workers/{chunk-POSRARY7.js → chunk-BH5ZEN4I.js} +10 -10
  16. package/Build/Workers/{chunk-A5CODJ4M.js → chunk-BJ3WF5RW.js} +6 -6
  17. package/Build/Workers/{chunk-Q55ECN3Y.js → chunk-BUOFSNFW.js} +1 -1
  18. package/Build/Workers/{chunk-QX5XS4LC.js → chunk-BZXF3GNX.js} +2 -2
  19. package/Build/Workers/{chunk-T6LPN7RI.js → chunk-DJXXI7UF.js} +5 -5
  20. package/Build/Workers/{chunk-C3Z23UUJ.js → chunk-DVAIU7A4.js} +17 -17
  21. package/Build/Workers/{chunk-X2ZQ7RJR.js → chunk-FJT3ERV7.js} +9 -9
  22. package/Build/Workers/{chunk-UCIPJSZX.js → chunk-GOHDOWU5.js} +14 -14
  23. package/Build/Workers/{chunk-R4OIEIPE.js → chunk-HA6TZ3XT.js} +4 -4
  24. package/Build/Workers/{chunk-ACRTCBN5.js → chunk-HBZSCVZC.js} +11 -11
  25. package/Build/Workers/{chunk-BGE4QVG7.js → chunk-HC7RYWPZ.js} +12 -12
  26. package/Build/Workers/{chunk-VE7BFUIX.js → chunk-HFMJM3SX.js} +1 -1
  27. package/Build/Workers/{chunk-OOK53QUQ.js → chunk-HFPMX5L2.js} +1 -1
  28. package/Build/Workers/{chunk-6D66DPRV.js → chunk-HO2NTC7I.js} +6 -6
  29. package/Build/Workers/{chunk-F3NDOSTZ.js → chunk-HZPMWR4H.js} +7 -7
  30. package/Build/Workers/{chunk-I2RC4XVN.js → chunk-IBG5FVXC.js} +4 -4
  31. package/Build/Workers/{chunk-FEVVHITK.js → chunk-IXLNNST6.js} +4 -4
  32. package/Build/Workers/{chunk-4YSNMHZ4.js → chunk-JYUCC5NV.js} +6 -6
  33. package/Build/Workers/{chunk-FDCLACT5.js → chunk-KFW4UNQH.js} +10 -10
  34. package/Build/Workers/{chunk-R6B7UCQB.js → chunk-KKAEXHDY.js} +2 -2
  35. package/Build/Workers/{chunk-D2U4RI64.js → chunk-L6FARMF6.js} +7 -7
  36. package/Build/Workers/{chunk-OOMCT7OL.js → chunk-N3BIL6WA.js} +13 -13
  37. package/Build/Workers/{chunk-XZZNKIEV.js → chunk-O5SSW3B3.js} +6 -6
  38. package/Build/Workers/{chunk-S3PI2KFM.js → chunk-OC4MYPVW.js} +2 -2
  39. package/Build/Workers/{chunk-XLTOBCDI.js → chunk-OOA6GXKD.js} +7 -7
  40. package/Build/Workers/{chunk-GPJR7MPQ.js → chunk-OSCHEWSG.js} +7 -7
  41. package/Build/Workers/{chunk-RZLZWKFN.js → chunk-QGT2GMOK.js} +4 -4
  42. package/Build/Workers/{chunk-OWGTMVDB.js → chunk-RFQYEYAL.js} +17 -17
  43. package/Build/Workers/{chunk-LSSWVB2X.js → chunk-RJF5ZP76.js} +4 -4
  44. package/Build/Workers/{chunk-EB7PNZTK.js → chunk-SIZXFNJY.js} +6 -5
  45. package/Build/Workers/{chunk-G5V4GPZE.js → chunk-SRZJCF7G.js} +9 -9
  46. package/Build/Workers/{chunk-T77JILCU.js → chunk-T4MB73MC.js} +2 -2
  47. package/Build/Workers/{chunk-4RMIRG6T.js → chunk-TTI2SUWJ.js} +2 -2
  48. package/Build/Workers/{chunk-4VFBBNQ3.js → chunk-VHJ5ESXF.js} +1 -1
  49. package/Build/Workers/{chunk-2J3JKXCP.js → chunk-VSFFJGTA.js} +9 -5
  50. package/Build/Workers/{chunk-ZU334IDQ.js → chunk-WQRXRDCZ.js} +11 -11
  51. package/Build/Workers/{chunk-J7MQUQJY.js → chunk-WXDGOYTT.js} +12 -7
  52. package/Build/Workers/{chunk-76BYYG7N.js → chunk-XLCZE6DD.js} +10 -10
  53. package/Build/Workers/combineGeometry.js +22 -22
  54. package/Build/Workers/createBoxGeometry.js +16 -16
  55. package/Build/Workers/createBoxOutlineGeometry.js +14 -14
  56. package/Build/Workers/createCircleGeometry.js +24 -24
  57. package/Build/Workers/createCircleOutlineGeometry.js +17 -17
  58. package/Build/Workers/createCoplanarPolygonGeometry.js +31 -31
  59. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +29 -29
  60. package/Build/Workers/createCorridorGeometry.js +27 -27
  61. package/Build/Workers/createCorridorOutlineGeometry.js +26 -26
  62. package/Build/Workers/createCylinderGeometry.js +18 -18
  63. package/Build/Workers/createCylinderOutlineGeometry.js +16 -16
  64. package/Build/Workers/createEllipseGeometry.js +24 -24
  65. package/Build/Workers/createEllipseOutlineGeometry.js +17 -17
  66. package/Build/Workers/createEllipsoidGeometry.js +17 -17
  67. package/Build/Workers/createEllipsoidOutlineGeometry.js +16 -16
  68. package/Build/Workers/createFrustumGeometry.js +16 -16
  69. package/Build/Workers/createFrustumOutlineGeometry.js +16 -16
  70. package/Build/Workers/createGeometry.js +22 -22
  71. package/Build/Workers/createGroundPolylineGeometry.js +20 -20
  72. package/Build/Workers/createPlaneGeometry.js +14 -14
  73. package/Build/Workers/createPlaneOutlineGeometry.js +13 -13
  74. package/Build/Workers/createPolygonGeometry.js +30 -30
  75. package/Build/Workers/createPolygonOutlineGeometry.js +28 -28
  76. package/Build/Workers/createPolylineGeometry.js +23 -23
  77. package/Build/Workers/createPolylineVolumeGeometry.js +29 -29
  78. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +25 -25
  79. package/Build/Workers/createRectangleGeometry.js +25 -25
  80. package/Build/Workers/createRectangleOutlineGeometry.js +18 -18
  81. package/Build/Workers/createSimplePolylineGeometry.js +21 -21
  82. package/Build/Workers/createSphereGeometry.js +17 -17
  83. package/Build/Workers/createSphereOutlineGeometry.js +16 -16
  84. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  85. package/Build/Workers/createVectorTileClampedPolylines.js +13 -13
  86. package/Build/Workers/createVectorTileGeometries.js +22 -22
  87. package/Build/Workers/createVectorTilePoints.js +12 -12
  88. package/Build/Workers/createVectorTilePolygons.js +20 -20
  89. package/Build/Workers/createVectorTilePolylines.js +13 -13
  90. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +20 -20
  91. package/Build/Workers/createVerticesFromHeightmap.js +24 -20
  92. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +17 -17
  93. package/Build/Workers/createWallGeometry.js +22 -22
  94. package/Build/Workers/createWallOutlineGeometry.js +21 -21
  95. package/Build/Workers/decodeDraco.js +11 -11
  96. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +28 -5
  97. package/Build/Workers/decodeI3S.js +10 -10
  98. package/Build/Workers/transcodeKTX2.js +19 -18
  99. package/Build/Workers/transferTypedArrayTest.js +1 -1
  100. package/Build/Workers/upsampleQuantizedTerrainMesh.js +20 -20
  101. package/Source/Core/CompressedTextureBuffer.js +11 -0
  102. package/Source/Core/Ion.js +1 -1
  103. package/Source/Core/KTX2Transcoder.js +9 -16
  104. package/Source/Core/PixelFormat.js +1 -15
  105. package/Source/DataSources/CallbackProperty.js +8 -2
  106. package/Source/DataSources/CheckerboardMaterialProperty.js +7 -1
  107. package/Source/DataSources/ColorMaterialProperty.js +7 -1
  108. package/Source/DataSources/CompositeMaterialProperty.js +5 -4
  109. package/Source/DataSources/CompositePositionProperty.js +7 -1
  110. package/Source/DataSources/CompositeProperty.js +5 -5
  111. package/Source/DataSources/ConstantPositionProperty.js +7 -1
  112. package/Source/DataSources/Entity.js +1 -1
  113. package/Source/DataSources/GridMaterialProperty.js +7 -1
  114. package/Source/DataSources/ImageMaterialProperty.js +8 -1
  115. package/Source/DataSources/MaterialProperty.js +7 -1
  116. package/Source/DataSources/NodeTransformationProperty.js +7 -1
  117. package/Source/DataSources/PolylineArrowMaterialProperty.js +7 -1
  118. package/Source/DataSources/PolylineDashMaterialProperty.js +7 -1
  119. package/Source/DataSources/PolylineGlowMaterialProperty.js +7 -1
  120. package/Source/DataSources/PolylineOutlineMaterialProperty.js +7 -1
  121. package/Source/DataSources/PositionProperty.js +1 -1
  122. package/Source/DataSources/PositionPropertyArray.js +7 -1
  123. package/Source/DataSources/Property.js +1 -1
  124. package/Source/DataSources/PropertyArray.js +5 -5
  125. package/Source/DataSources/PropertyBag.js +5 -4
  126. package/Source/DataSources/ReferenceProperty.js +7 -1
  127. package/Source/DataSources/SampledPositionProperty.js +7 -1
  128. package/Source/DataSources/SampledProperty.js +6 -4
  129. package/Source/DataSources/ScaledPositionProperty.js +6 -0
  130. package/Source/DataSources/StripeMaterialProperty.js +7 -1
  131. package/Source/DataSources/TerrainOffsetProperty.js +9 -0
  132. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +7 -1
  133. package/Source/DataSources/TimeIntervalCollectionProperty.js +5 -5
  134. package/Source/DataSources/VelocityOrientationProperty.js +6 -1
  135. package/Source/DataSources/VelocityVectorProperty.js +3 -5
  136. package/Source/Renderer/AutomaticUniforms.js +2 -17
  137. package/Source/Renderer/Context.js +15 -0
  138. package/Source/Renderer/CubeMap.js +326 -348
  139. package/Source/Renderer/CubeMapFace.js +26 -48
  140. package/Source/Renderer/PixelDatatype.js +23 -0
  141. package/Source/Renderer/Sampler.js +7 -13
  142. package/Source/Renderer/ShaderProgram.js +7 -0
  143. package/Source/Renderer/Texture.js +396 -332
  144. package/Source/Renderer/UniformState.js +3 -22
  145. package/Source/Renderer/demodernizeShader.js +2 -0
  146. package/Source/Renderer/loadCubeMap.js +3 -8
  147. package/Source/Scene/ArcGisMapService.js +1 -1
  148. package/Source/Scene/CameraEventAggregator.js +49 -5
  149. package/Source/Scene/Globe.js +1 -1
  150. package/Source/Scene/GlobeSurfaceShaderSet.js +29 -24
  151. package/Source/Scene/GlobeSurfaceTileProvider.js +5 -3
  152. package/Source/Scene/ImageBasedLighting.js +34 -34
  153. package/Source/Scene/Label.js +2 -2
  154. package/Source/Scene/Material.js +24 -2
  155. package/Source/Scene/Model/ImageBasedLightingPipelineStage.js +7 -15
  156. package/Source/Scene/PostProcessStageCollection.js +45 -15
  157. package/Source/Scene/PostProcessStageLibrary.js +26 -0
  158. package/Source/Scene/Scene.js +20 -22
  159. package/Source/Scene/SceneTransforms.js +0 -62
  160. package/Source/Scene/ScreenSpaceCameraController.js +11 -4
  161. package/Source/Scene/SkyBox.js +13 -19
  162. package/Source/Scene/SpecularEnvironmentCubeMap.js +240 -0
  163. package/Source/Scene/Tonemapper.js +35 -23
  164. package/Source/Scene/VoxelPrimitive.js +0 -29
  165. package/Source/Scene/VoxelRenderResources.js +0 -3
  166. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -2
  167. package/Source/Shaders/Builtin/Functions/pbrLighting.glsl +2 -2
  168. package/Source/Shaders/Builtin/Functions/pbrLighting.js +2 -2
  169. package/Source/Shaders/Builtin/Functions/pbrNeutralTonemapping.glsl +23 -0
  170. package/Source/Shaders/Builtin/Functions/pbrNeutralTonemapping.js +25 -0
  171. package/Source/Shaders/Builtin/Functions/textureCube.glsl +21 -2
  172. package/Source/Shaders/Builtin/Functions/textureCube.js +21 -2
  173. package/Source/Shaders/Builtin/Structs/materialInput.glsl +2 -0
  174. package/Source/Shaders/Builtin/Structs/materialInput.js +2 -0
  175. package/Source/Shaders/GlobeFS.glsl +10 -4
  176. package/Source/Shaders/GlobeFS.js +10 -4
  177. package/Source/Shaders/Materials/WaterMaskMaterial.glsl +15 -0
  178. package/Source/Shaders/Materials/WaterMaskMaterial.js +17 -0
  179. package/Source/Shaders/Model/AtmosphereStageFS.glsl +1 -1
  180. package/Source/Shaders/Model/AtmosphereStageFS.js +1 -1
  181. package/Source/Shaders/Model/ImageBasedLightingStageFS.glsl +40 -29
  182. package/Source/Shaders/Model/ImageBasedLightingStageFS.js +40 -29
  183. package/Source/Shaders/Model/LightingStageFS.glsl +2 -2
  184. package/Source/Shaders/Model/LightingStageFS.js +2 -2
  185. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.glsl +4 -0
  186. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.js +4 -0
  187. package/Source/Shaders/PostProcessStages/FilmicTonemapping.glsl +4 -0
  188. package/Source/Shaders/PostProcessStages/FilmicTonemapping.js +4 -0
  189. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.glsl +4 -0
  190. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.js +4 -0
  191. package/Source/Shaders/PostProcessStages/PbrNeutralTonemapping.glsl +25 -0
  192. package/Source/Shaders/PostProcessStages/PbrNeutralTonemapping.js +27 -0
  193. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.glsl +4 -0
  194. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.js +4 -0
  195. package/Source/Shaders/SkyAtmosphereFS.glsl +1 -1
  196. package/Source/Shaders/SkyAtmosphereFS.js +1 -1
  197. package/Source/Widget/CesiumWidget.js +1 -1
  198. package/index.d.ts +117 -101
  199. package/index.js +212 -213
  200. package/package.json +2 -2
  201. package/Build/Workers/chunk-3WUV74WM.js +0 -1800
  202. package/Build/Workers/chunk-4MSUJ4I7.js +0 -456
  203. package/Build/Workers/chunk-5KWHSZYL.js +0 -834
  204. package/Build/Workers/chunk-5O6JWQ4E.js +0 -398
  205. package/Build/Workers/chunk-6OFDHMHR.js +0 -1258
  206. package/Build/Workers/chunk-AA4GZKOT.js +0 -75
  207. package/Build/Workers/chunk-B75IEX2S.js +0 -390
  208. package/Build/Workers/chunk-BAVI3ZS2.js +0 -39
  209. package/Build/Workers/chunk-BBDZYSZB.js +0 -287
  210. package/Build/Workers/chunk-C45MU4GZ.js +0 -220
  211. package/Build/Workers/chunk-CF7P7K7E.js +0 -684
  212. package/Build/Workers/chunk-D4K27X2M.js +0 -305
  213. package/Build/Workers/chunk-DKVHRNFY.js +0 -100
  214. package/Build/Workers/chunk-ELI4BUOT.js +0 -963
  215. package/Build/Workers/chunk-FQPSOOPH.js +0 -258
  216. package/Build/Workers/chunk-GNHZH7HP.js +0 -37
  217. package/Build/Workers/chunk-GWT64LKY.js +0 -171
  218. package/Build/Workers/chunk-HGEEOMSC.js +0 -157
  219. package/Build/Workers/chunk-IUROUBPA.js +0 -300
  220. package/Build/Workers/chunk-JNLWLSTP.js +0 -476
  221. package/Build/Workers/chunk-JYQNWIQQ.js +0 -44
  222. package/Build/Workers/chunk-KUN2ZA5X.js +0 -138
  223. package/Build/Workers/chunk-KV4EQHK4.js +0 -1477
  224. package/Build/Workers/chunk-LXQ5QAEJ.js +0 -196
  225. package/Build/Workers/chunk-MBZH7YZ7.js +0 -945
  226. package/Build/Workers/chunk-MKXWJTFQ.js +0 -781
  227. package/Build/Workers/chunk-MMV6TO3P.js +0 -101
  228. package/Build/Workers/chunk-MSKXMXJI.js +0 -500
  229. package/Build/Workers/chunk-OAPA2RTG.js +0 -239
  230. package/Build/Workers/chunk-OE4MCOC7.js +0 -421
  231. package/Build/Workers/chunk-OJF4RTJG.js +0 -634
  232. package/Build/Workers/chunk-OXSI7N4C.js +0 -768
  233. package/Build/Workers/chunk-PYHLO636.js +0 -2857
  234. package/Build/Workers/chunk-QD4KM3GO.js +0 -138
  235. package/Build/Workers/chunk-QMLTCCYG.js +0 -55
  236. package/Build/Workers/chunk-QYQIVZBU.js +0 -117
  237. package/Build/Workers/chunk-R3TKLC6E.js +0 -1075
  238. package/Build/Workers/chunk-R4ZEWO4I.js +0 -122
  239. package/Build/Workers/chunk-RCK55EDX.js +0 -691
  240. package/Build/Workers/chunk-RHBWXX7C.js +0 -629
  241. package/Build/Workers/chunk-SAPFXU5X.js +0 -102
  242. package/Build/Workers/chunk-TBBFDFCS.js +0 -368
  243. package/Build/Workers/chunk-TGY6H6N6.js +0 -163
  244. package/Build/Workers/chunk-UOEUCKKU.js +0 -59
  245. package/Build/Workers/chunk-VFBNELXB.js +0 -353
  246. package/Build/Workers/chunk-VYWUFRRR.js +0 -1052
  247. package/Build/Workers/chunk-WVSELU6O.js +0 -2716
  248. package/Build/Workers/chunk-X43SJLQL.js +0 -10364
  249. package/Build/Workers/chunk-XUOJCLOH.js +0 -511
  250. package/Build/Workers/chunk-YLYBLJ3Y.js +0 -73
  251. package/Build/Workers/chunk-ZEE2EIFD.js +0 -430
  252. package/Build/Workers/chunk-ZIKGV7EL.js +0 -58
  253. package/Source/Scene/OctahedralProjectedCubeMap.js +0 -444
  254. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.glsl +0 -78
  255. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.js +0 -80
  256. package/Source/Shaders/OctahedralProjectionAtlasFS.glsl +0 -89
  257. package/Source/Shaders/OctahedralProjectionAtlasFS.js +0 -91
  258. package/Source/Shaders/OctahedralProjectionFS.glsl +0 -14
  259. package/Source/Shaders/OctahedralProjectionFS.js +0 -16
  260. package/Source/Shaders/OctahedralProjectionVS.glsl +0 -10
  261. package/Source/Shaders/OctahedralProjectionVS.js +0 -12
@@ -157,7 +157,6 @@ function UniformState() {
157
157
 
158
158
  this._sphericalHarmonicCoefficients = undefined;
159
159
  this._specularEnvironmentMaps = undefined;
160
- this._specularEnvironmentMapsDimensions = new Cartesian2();
161
160
  this._specularEnvironmentMapsMaximumLOD = undefined;
162
161
 
163
162
  this._fogDensity = undefined;
@@ -1084,7 +1083,7 @@ Object.defineProperties(UniformState.prototype, {
1084
1083
  },
1085
1084
 
1086
1085
  /**
1087
- * The specular environment map atlas of the scene.
1086
+ * The specular environment cube map of the scene.
1088
1087
  * @memberof UniformState.prototype
1089
1088
  * @type {Texture}
1090
1089
  */
@@ -1095,18 +1094,7 @@ Object.defineProperties(UniformState.prototype, {
1095
1094
  },
1096
1095
 
1097
1096
  /**
1098
- * The dimensions of the specular environment map atlas of the scene.
1099
- * @memberof UniformState.prototype
1100
- * @type {Cartesian2}
1101
- */
1102
- specularEnvironmentMapsDimensions: {
1103
- get: function () {
1104
- return this._specularEnvironmentMapsDimensions;
1105
- },
1106
- },
1107
-
1108
- /**
1109
- * The maximum level-of-detail of the specular environment map atlas of the scene.
1097
+ * The maximum level-of-detail of the specular environment cube map of the scene.
1110
1098
  * @memberof UniformState.prototype
1111
1099
  * @type {number}
1112
1100
  */
@@ -1491,7 +1479,7 @@ UniformState.prototype.update = function (frameState) {
1491
1479
  );
1492
1480
 
1493
1481
  // IE 11 doesn't optimize out uniforms that are #ifdef'd out. So undefined values for the spherical harmonic
1494
- // coefficients and specular environment map atlas dimensions cause a crash.
1482
+ // coefficients cause a crash.
1495
1483
  this._sphericalHarmonicCoefficients = defaultValue(
1496
1484
  frameState.sphericalHarmonicCoefficients,
1497
1485
  EMPTY_ARRAY
@@ -1500,13 +1488,6 @@ UniformState.prototype.update = function (frameState) {
1500
1488
  this._specularEnvironmentMapsMaximumLOD =
1501
1489
  frameState.specularEnvironmentMapsMaximumLOD;
1502
1490
 
1503
- if (defined(this._specularEnvironmentMaps)) {
1504
- Cartesian2.clone(
1505
- this._specularEnvironmentMaps.dimensions,
1506
- this._specularEnvironmentMapsDimensions
1507
- );
1508
- }
1509
-
1510
1491
  this._fogDensity = frameState.fog.density;
1511
1492
  this._fogMinimumBrightness = frameState.fog.minimumBrightness;
1512
1493
 
@@ -60,6 +60,8 @@ function demodernizeShader(input, isFragmentShader) {
60
60
  output = output.replaceAll(/gl_FragDepth/g, `gl_FragDepthEXT`);
61
61
  }
62
62
 
63
+ // Enable the EXT_shader_texture_lod extension
64
+ output = `#ifdef GL_EXT_shader_texture_lod\n#extension GL_EXT_shader_texture_lod : enable\n#endif\n${output}`;
63
65
  // Enable the OES_standard_derivatives extension
64
66
  output = `#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n#endif\n${output}`;
65
67
  } else {
@@ -41,17 +41,12 @@ import CubeMap from "./CubeMap.js";
41
41
  function loadCubeMap(context, urls, skipColorSpaceConversion) {
42
42
  //>>includeStart('debug', pragmas.debug);
43
43
  Check.defined("context", context);
44
+ Check.defined("urls", urls);
44
45
  if (
45
- !defined(urls) ||
46
- !defined(urls.positiveX) ||
47
- !defined(urls.negativeX) ||
48
- !defined(urls.positiveY) ||
49
- !defined(urls.negativeY) ||
50
- !defined(urls.positiveZ) ||
51
- !defined(urls.negativeZ)
46
+ Object.values(CubeMap.FaceName).some((faceName) => !defined(urls[faceName]))
52
47
  ) {
53
48
  throw new DeveloperError(
54
- "urls is required and must have positiveX, negativeX, positiveY, negativeY, positiveZ, and negativeZ properties."
49
+ "urls must have positiveX, negativeX, positiveY, negativeY, positiveZ, and negativeZ properties."
55
50
  );
56
51
  }
57
52
  //>>includeEnd('debug');
@@ -4,7 +4,7 @@ import Resource from "../Core/Resource.js";
4
4
 
5
5
  let defaultTokenCredit;
6
6
  const defaultAccessToken =
7
- "AAPTxy8BH1VEsoebNVZXo8HurEOF051kAEKlhkOhBEc9BmTRbx8gaNqtBYKRq3vEnwSKnwUE1aRn2Siyo0gHWzzPwpJd-ZUeTyDgQZPqW8C6pXNLOE3bRO6-Jz3NFmp-qNquqGBQTATcCHbNsL-h9CPyMMPGsTcUvzPlIInazMfkWJNbFmqJeSzPj_1DHshXa0XCfkQn5mVxlF2dFt10Mq2bGo0HkpdpXwNQdoGwdphsLoU.AT1_CpQKgEim";
7
+ "AAPTxy8BH1VEsoebNVZXo8HurEOF051kAEKlhkOhBEc9BmSXu8_pRnGhnW6yZLct-ukUzbJaZRAVfnmUrxDcAu_FaFDIC3M57EwfRm_DuTw9D5oHdLBTYIMD3tpUeFsNDjHHqar5fb1FGIN9KIV1Gk64dNBmhHhuOHY8cq2IhI0XFLj2qnAlqtKnM-lLsO6JpHuHPVD799V1o9VFm9vMW6a66vEi8-e--2QzKQecPYiaq98.AT1_p4pHwb3n";
8
8
  /**
9
9
  * Default options for accessing the ArcGIS image tile service.
10
10
  *
@@ -9,7 +9,7 @@ import ScreenSpaceEventType from "../Core/ScreenSpaceEventType.js";
9
9
  import CameraEventType from "./CameraEventType.js";
10
10
 
11
11
  function getKey(type, modifier) {
12
- let key = type;
12
+ let key = `${type}`;
13
13
  if (defined(modifier)) {
14
14
  key += `+${modifier}`;
15
15
  }
@@ -178,7 +178,6 @@ function listenMouseButtonDownUp(aggregator, modifier, type) {
178
178
  const isDown = aggregator._isDown;
179
179
  const eventStartPosition = aggregator._eventStartPosition;
180
180
  const pressTime = aggregator._pressTime;
181
- const releaseTime = aggregator._releaseTime;
182
181
 
183
182
  isDown[key] = false;
184
183
  eventStartPosition[key] = new Cartesian2();
@@ -219,20 +218,64 @@ function listenMouseButtonDownUp(aggregator, modifier, type) {
219
218
 
220
219
  aggregator._eventHandler.setInputAction(
221
220
  function () {
222
- aggregator._buttonsDown = Math.max(aggregator._buttonsDown - 1, 0);
223
- isDown[key] = false;
224
- releaseTime[key] = new Date();
221
+ cancelMouseDownAction(getKey(type, undefined), aggregator);
222
+ for (const modifier of Object.values(KeyboardEventModifier)) {
223
+ const cancelKey = getKey(type, modifier);
224
+ cancelMouseDownAction(cancelKey, aggregator);
225
+ }
225
226
  },
226
227
  up,
227
228
  modifier
228
229
  );
229
230
  }
230
231
 
232
+ function cancelMouseDownAction(cancelKey, aggregator) {
233
+ const releaseTime = aggregator._releaseTime;
234
+ const isDown = aggregator._isDown;
235
+ if (isDown[cancelKey]) {
236
+ aggregator._buttonsDown = Math.max(aggregator._buttonsDown - 1, 0);
237
+ }
238
+ isDown[cancelKey] = false;
239
+ releaseTime[cancelKey] = new Date();
240
+ }
241
+
231
242
  function cloneMouseMovement(mouseMovement, result) {
232
243
  Cartesian2.clone(mouseMovement.startPosition, result.startPosition);
233
244
  Cartesian2.clone(mouseMovement.endPosition, result.endPosition);
234
245
  }
235
246
 
247
+ function refreshMouseDownStatus(type, modifier, aggregator) {
248
+ // first: Judge if the mouse is pressed
249
+ const isDown = aggregator._isDown;
250
+ let anyButtonIsDown = false;
251
+ const currentKey = getKey(type, modifier);
252
+ for (const [downKey, downValue] of Object.entries(isDown)) {
253
+ if (downKey.startsWith(type) && downValue && downKey !== currentKey) {
254
+ anyButtonIsDown = true;
255
+ cancelMouseDownAction(downKey, aggregator);
256
+ }
257
+ }
258
+
259
+ if (!anyButtonIsDown) {
260
+ return;
261
+ }
262
+
263
+ // second: If it is pressed, it will be transferred to the current modifier.
264
+ const pressTime = aggregator._pressTime;
265
+ let lastMovement = aggregator._lastMovement[currentKey];
266
+ if (!defined(lastMovement)) {
267
+ lastMovement = aggregator._lastMovement[currentKey] = {
268
+ startPosition: new Cartesian2(),
269
+ endPosition: new Cartesian2(),
270
+ valid: false,
271
+ };
272
+ }
273
+ aggregator._buttonsDown++;
274
+ lastMovement.valid = false;
275
+ isDown[currentKey] = true;
276
+ pressTime[currentKey] = new Date();
277
+ }
278
+
236
279
  function listenMouseMove(aggregator, modifier) {
237
280
  const update = aggregator._update;
238
281
  const movement = aggregator._movement;
@@ -271,6 +314,7 @@ function listenMouseMove(aggregator, modifier) {
271
314
  const type = CameraEventType[typeName];
272
315
  if (defined(type)) {
273
316
  const key = getKey(type, modifier);
317
+ refreshMouseDownStatus(type, modifier, aggregator);
274
318
  if (isDown[key]) {
275
319
  if (!update[key]) {
276
320
  Cartesian2.clone(
@@ -979,7 +979,6 @@ Globe.prototype.beginFrame = function (frameState) {
979
979
  const tileProvider = surface.tileProvider;
980
980
  const terrainProvider = this.terrainProvider;
981
981
  const hasWaterMask =
982
- this.showWaterEffect &&
983
982
  defined(terrainProvider) &&
984
983
  terrainProvider.hasWaterMask &&
985
984
  terrainProvider.hasWaterMask;
@@ -1034,6 +1033,7 @@ Globe.prototype.beginFrame = function (frameState) {
1034
1033
  tileProvider.zoomedOutOceanSpecularIntensity =
1035
1034
  mode === SceneMode.SCENE3D ? this._zoomedOutOceanSpecularIntensity : 0.0;
1036
1035
  tileProvider.hasWaterMask = hasWaterMask;
1036
+ tileProvider.showWaterEffect = this.showWaterEffect;
1037
1037
  tileProvider.oceanNormalMap = this._oceanNormalMap;
1038
1038
  tileProvider.enableLighting = this.enableLighting;
1039
1039
  tileProvider.dynamicAtmosphereLighting = this.dynamicAtmosphereLighting;
@@ -109,6 +109,7 @@ GlobeSurfaceShaderSet.prototype.getShaderProgram = function (options) {
109
109
  const applyAlpha = options.applyAlpha;
110
110
  const applyDayNightAlpha = options.applyDayNightAlpha;
111
111
  const applySplit = options.applySplit;
112
+ const hasWaterMask = options.hasWaterMask;
112
113
  const showReflectiveOcean = options.showReflectiveOcean;
113
114
  const showOceanWaves = options.showOceanWaves;
114
115
  const enableLighting = options.enableLighting;
@@ -168,30 +169,31 @@ GlobeSurfaceShaderSet.prototype.getShaderProgram = function (options) {
168
169
  (applySaturation << 5) |
169
170
  (applyGamma << 6) |
170
171
  (applyAlpha << 7) |
171
- (showReflectiveOcean << 8) |
172
- (showOceanWaves << 9) |
173
- (enableLighting << 10) |
174
- (dynamicAtmosphereLighting << 11) |
175
- (dynamicAtmosphereLightingFromSun << 12) |
176
- (showGroundAtmosphere << 13) |
177
- (perFragmentGroundAtmosphere << 14) |
178
- (hasVertexNormals << 15) |
179
- (useWebMercatorProjection << 16) |
180
- (enableFog << 17) |
181
- (quantization << 18) |
182
- (applySplit << 19) |
183
- (enableClippingPlanes << 20) |
184
- (enableClippingPolygons << 21) |
185
- (cartographicLimitRectangleFlag << 22) |
186
- (imageryCutoutFlag << 23) |
187
- (colorCorrect << 24) |
188
- (highlightFillTile << 25) |
189
- (colorToAlpha << 26) |
190
- (hasGeodeticSurfaceNormals << 27) |
191
- (hasExaggeration << 28) |
192
- (showUndergroundColor << 29) |
193
- (translucent << 30) |
194
- (applyDayNightAlpha << 31);
172
+ (hasWaterMask << 8) |
173
+ (showReflectiveOcean << 9) |
174
+ (showOceanWaves << 10) |
175
+ (enableLighting << 11) |
176
+ (dynamicAtmosphereLighting << 12) |
177
+ (dynamicAtmosphereLightingFromSun << 13) |
178
+ (showGroundAtmosphere << 14) |
179
+ (perFragmentGroundAtmosphere << 15) |
180
+ (hasVertexNormals << 16) |
181
+ (useWebMercatorProjection << 17) |
182
+ (enableFog << 18) |
183
+ (quantization << 19) |
184
+ (applySplit << 20) |
185
+ (enableClippingPlanes << 21) |
186
+ (enableClippingPolygons << 22) |
187
+ (cartographicLimitRectangleFlag << 23) |
188
+ (imageryCutoutFlag << 24) |
189
+ (colorCorrect << 25) |
190
+ (highlightFillTile << 26) |
191
+ (colorToAlpha << 27) |
192
+ (hasGeodeticSurfaceNormals << 28) |
193
+ (hasExaggeration << 29) |
194
+ (showUndergroundColor << 30) |
195
+ (translucent << 31) |
196
+ (applyDayNightAlpha << 32);
195
197
 
196
198
  let currentClippingShaderState = 0;
197
199
  if (defined(clippingPlanes) && clippingPlanes.length > 0) {
@@ -279,6 +281,9 @@ GlobeSurfaceShaderSet.prototype.getShaderProgram = function (options) {
279
281
  if (applyDayNightAlpha) {
280
282
  fs.defines.push("APPLY_DAY_NIGHT_ALPHA");
281
283
  }
284
+ if (hasWaterMask) {
285
+ fs.defines.push("HAS_WATER_MASK");
286
+ }
282
287
  if (showReflectiveOcean) {
283
288
  fs.defines.push("SHOW_REFLECTIVE_OCEAN");
284
289
  vs.defines.push("SHOW_REFLECTIVE_OCEAN");
@@ -83,6 +83,7 @@ function GlobeSurfaceTileProvider(options) {
83
83
  this.lightingFadeOutDistance = 6500000.0;
84
84
  this.lightingFadeInDistance = 9000000.0;
85
85
  this.hasWaterMask = false;
86
+ this.showWaterEffect = false;
86
87
  this.oceanNormalMap = undefined;
87
88
  this.zoomedOutOceanSpecularIntensity = 0.5;
88
89
  this.enableLighting = false;
@@ -2181,8 +2182,8 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
2181
2182
  const lambertDiffuseMultiplier = tileProvider.lambertDiffuseMultiplier;
2182
2183
  const vertexShadowDarkness = tileProvider.vertexShadowDarkness;
2183
2184
 
2184
- const showReflectiveOcean =
2185
- tileProvider.hasWaterMask && defined(waterMaskTexture);
2185
+ const hasWaterMask = tileProvider.hasWaterMask && defined(waterMaskTexture);
2186
+ const showReflectiveOcean = hasWaterMask && tileProvider.showWaterEffect;
2186
2187
  const oceanNormalMap = tileProvider.oceanNormalMap;
2187
2188
  const showOceanWaves = showReflectiveOcean && defined(oceanNormalMap);
2188
2189
  const terrainProvider = tileProvider.terrainProvider;
@@ -2214,7 +2215,7 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
2214
2215
  perFragmentGroundAtmosphere = cameraDistance > fadeOutDistance;
2215
2216
  }
2216
2217
 
2217
- if (showReflectiveOcean) {
2218
+ if (hasWaterMask) {
2218
2219
  --maxTextures;
2219
2220
  }
2220
2221
  if (showOceanWaves) {
@@ -2329,6 +2330,7 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
2329
2330
  const surfaceShaderSetOptions = surfaceShaderSetOptionsScratch;
2330
2331
  surfaceShaderSetOptions.frameState = frameState;
2331
2332
  surfaceShaderSetOptions.surfaceTile = surfaceTile;
2333
+ surfaceShaderSetOptions.hasWaterMask = hasWaterMask;
2332
2334
  surfaceShaderSetOptions.showReflectiveOcean = showReflectiveOcean;
2333
2335
  surfaceShaderSetOptions.showOceanWaves = showOceanWaves;
2334
2336
  surfaceShaderSetOptions.enableLighting = tileProvider.enableLighting;
@@ -4,7 +4,7 @@ import defined from "../Core/defined.js";
4
4
  import defaultValue from "../Core/defaultValue.js";
5
5
  import destroyObject from "../Core/destroyObject.js";
6
6
  import DeveloperError from "../Core/DeveloperError.js";
7
- import OctahedralProjectedCubeMap from "./OctahedralProjectedCubeMap.js";
7
+ import SpecularEnvironmentCubeMap from "./SpecularEnvironmentCubeMap.js";
8
8
 
9
9
  /**
10
10
  * Properties for managing image-based lighting on tilesets and models.
@@ -84,8 +84,8 @@ function ImageBasedLighting(options) {
84
84
 
85
85
  // The specular environment map texture is created in update();
86
86
  this._specularEnvironmentMaps = options.specularEnvironmentMaps;
87
- this._specularEnvironmentMapAtlas = undefined;
88
- this._specularEnvironmentMapAtlasDirty = true;
87
+ this._specularEnvironmentCubeMap = undefined;
88
+ this._specularEnvironmentCubeMapDirty = true;
89
89
  this._specularEnvironmentMapLoaded = false;
90
90
  this._previousSpecularEnvironmentMapLoaded = false;
91
91
 
@@ -226,8 +226,8 @@ Object.defineProperties(ImageBasedLighting.prototype, {
226
226
  },
227
227
  set: function (value) {
228
228
  if (value !== this._specularEnvironmentMaps) {
229
- this._specularEnvironmentMapAtlasDirty =
230
- this._specularEnvironmentMapAtlasDirty ||
229
+ this._specularEnvironmentCubeMapDirty =
230
+ this._specularEnvironmentCubeMapDirty ||
231
231
  value !== this._specularEnvironmentMaps;
232
232
  this._specularEnvironmentMapLoaded = false;
233
233
  }
@@ -299,16 +299,16 @@ Object.defineProperties(ImageBasedLighting.prototype, {
299
299
  },
300
300
 
301
301
  /**
302
- * The texture atlas for the specular environment maps.
302
+ * The cube map for the specular environment maps.
303
303
  *
304
304
  * @memberof ImageBasedLighting.prototype
305
- * @type {OctahedralProjectedCubeMap}
305
+ * @type {SpecularEnvironmentCubeMap}
306
306
  *
307
307
  * @private
308
308
  */
309
- specularEnvironmentMapAtlas: {
309
+ specularEnvironmentCubeMap: {
310
310
  get: function () {
311
- return this._specularEnvironmentMapAtlas;
311
+ return this._specularEnvironmentCubeMap;
312
312
  },
313
313
  },
314
314
 
@@ -337,30 +337,30 @@ Object.defineProperties(ImageBasedLighting.prototype, {
337
337
  useSpecularEnvironmentMaps: {
338
338
  get: function () {
339
339
  return (
340
- (defined(this._specularEnvironmentMapAtlas) &&
341
- this._specularEnvironmentMapAtlas.ready) ||
340
+ (defined(this._specularEnvironmentCubeMap) &&
341
+ this._specularEnvironmentCubeMap.ready) ||
342
342
  this._useDefaultSpecularMaps
343
343
  );
344
344
  },
345
345
  },
346
346
  });
347
347
 
348
- function createSpecularEnvironmentMapAtlas(imageBasedLighting, context) {
349
- if (!OctahedralProjectedCubeMap.isSupported(context)) {
348
+ function createSpecularEnvironmentCubeMap(imageBasedLighting, context) {
349
+ if (!SpecularEnvironmentCubeMap.isSupported(context)) {
350
350
  return;
351
351
  }
352
352
 
353
- imageBasedLighting._specularEnvironmentMapAtlas =
354
- imageBasedLighting._specularEnvironmentMapAtlas &&
355
- imageBasedLighting._specularEnvironmentMapAtlas.destroy();
353
+ imageBasedLighting._specularEnvironmentCubeMap =
354
+ imageBasedLighting._specularEnvironmentCubeMap &&
355
+ imageBasedLighting._specularEnvironmentCubeMap.destroy();
356
356
 
357
357
  if (defined(imageBasedLighting._specularEnvironmentMaps)) {
358
- const atlas = new OctahedralProjectedCubeMap(
358
+ const cubeMap = new SpecularEnvironmentCubeMap(
359
359
  imageBasedLighting._specularEnvironmentMaps
360
360
  );
361
- imageBasedLighting._specularEnvironmentMapAtlas = atlas;
361
+ imageBasedLighting._specularEnvironmentCubeMap = cubeMap;
362
362
 
363
- imageBasedLighting._removeErrorListener = atlas.errorEvent.addEventListener(
363
+ imageBasedLighting._removeErrorListener = cubeMap.errorEvent.addEventListener(
364
364
  (error) => {
365
365
  console.error(`Error loading specularEnvironmentMaps: ${error}`);
366
366
  }
@@ -428,23 +428,23 @@ ImageBasedLighting.prototype.update = function (frameState) {
428
428
 
429
429
  this._previousSpecularEnvironmentMapLoaded = this._specularEnvironmentMapLoaded;
430
430
 
431
- if (this._specularEnvironmentMapAtlasDirty) {
432
- createSpecularEnvironmentMapAtlas(this, context);
433
- this._specularEnvironmentMapAtlasDirty = false;
431
+ if (this._specularEnvironmentCubeMapDirty) {
432
+ createSpecularEnvironmentCubeMap(this, context);
433
+ this._specularEnvironmentCubeMapDirty = false;
434
434
  }
435
435
 
436
- if (defined(this._specularEnvironmentMapAtlas)) {
437
- this._specularEnvironmentMapAtlas.update(frameState);
438
- if (this._specularEnvironmentMapAtlas.ready) {
436
+ if (defined(this._specularEnvironmentCubeMap)) {
437
+ this._specularEnvironmentCubeMap.update(frameState);
438
+ if (this._specularEnvironmentCubeMap.ready) {
439
439
  this._specularEnvironmentMapLoaded = true;
440
440
  }
441
441
  }
442
442
 
443
- const recompileWithDefaultAtlas =
444
- !defined(this._specularEnvironmentMapAtlas) &&
443
+ const recompileWithDefaultCubeMap =
444
+ !defined(this._specularEnvironmentCubeMap) &&
445
445
  defined(frameState.specularEnvironmentMaps) &&
446
446
  !this._useDefaultSpecularMaps;
447
- const recompileWithoutDefaultAtlas =
447
+ const recompileWithoutDefaultCubeMap =
448
448
  !defined(frameState.specularEnvironmentMaps) &&
449
449
  this._useDefaultSpecularMaps;
450
450
 
@@ -458,13 +458,13 @@ ImageBasedLighting.prototype.update = function (frameState) {
458
458
 
459
459
  this._shouldRegenerateShaders =
460
460
  this._shouldRegenerateShaders ||
461
- recompileWithDefaultAtlas ||
462
- recompileWithoutDefaultAtlas ||
461
+ recompileWithDefaultCubeMap ||
462
+ recompileWithoutDefaultCubeMap ||
463
463
  recompileWithDefaultSHCoeffs ||
464
464
  recompileWithoutDefaultSHCoeffs;
465
465
 
466
466
  this._useDefaultSpecularMaps =
467
- !defined(this._specularEnvironmentMapAtlas) &&
467
+ !defined(this._specularEnvironmentCubeMap) &&
468
468
  defined(frameState.specularEnvironmentMaps);
469
469
  this._useDefaultSphericalHarmonics =
470
470
  !defined(this._sphericalHarmonicCoefficients) &&
@@ -503,9 +503,9 @@ ImageBasedLighting.prototype.isDestroyed = function () {
503
503
  * @private
504
504
  */
505
505
  ImageBasedLighting.prototype.destroy = function () {
506
- this._specularEnvironmentMapAtlas =
507
- this._specularEnvironmentMapAtlas &&
508
- this._specularEnvironmentMapAtlas.destroy();
506
+ this._specularEnvironmentCubeMap =
507
+ this._specularEnvironmentCubeMap &&
508
+ this._specularEnvironmentCubeMap.destroy();
509
509
  this._removeErrorListener =
510
510
  this._removeErrorListener && this._removeErrorListener();
511
511
  return destroyObject(this);
@@ -102,8 +102,8 @@ function parseFont(label) {
102
102
  * @property {Cartesian2} [backgroundPadding=new Cartesian2(7, 5)] A {@link Cartesian2} Specifying the horizontal and vertical background padding in pixels.
103
103
  * @property {Cartesian2} [pixelOffset=Cartesian2.ZERO] A {@link Cartesian2} specifying the pixel offset in screen space from the origin of this label.
104
104
  * @property {Cartesian3} [eyeOffset=Cartesian3.ZERO] A {@link Cartesian3} specifying the 3D Cartesian offset applied to this label in eye coordinates.
105
- * @property {HorizontalOrigin} [horizontalOrigin=HorizontalOrigin.CENTER] A {@link HorizontalOrigin} specifying the horizontal origin of this label.
106
- * @property {VerticalOrigin} [verticalOrigin=VerticalOrigin.CENTER] A {@link VerticalOrigin} specifying the vertical origin of this label.
105
+ * @property {HorizontalOrigin} [horizontalOrigin=HorizontalOrigin.LEFT] A {@link HorizontalOrigin} specifying the horizontal origin of this label.
106
+ * @property {VerticalOrigin} [verticalOrigin=VerticalOrigin.BASELINE] A {@link VerticalOrigin} specifying the vertical origin of this label.
107
107
  * @property {HeightReference} [heightReference=HeightReference.NONE] A {@link HeightReference} specifying the height reference of this label.
108
108
  * @property {Color} [fillColor=Color.WHITE] A {@link Color} specifying the fill color of the label.
109
109
  * @property {Color} [outlineColor=Color.BLACK] A {@link Color} specifying the outline color of the label.
@@ -34,6 +34,7 @@ import SlopeRampMaterial from "../Shaders/Materials/SlopeRampMaterial.js";
34
34
  import StripeMaterial from "../Shaders/Materials/StripeMaterial.js";
35
35
  import TextureMagnificationFilter from "../Renderer/TextureMagnificationFilter.js";
36
36
  import TextureMinificationFilter from "../Renderer/TextureMinificationFilter.js";
37
+ import WaterMaskMaterial from "../Shaders/Materials/WaterMaskMaterial.js";
37
38
  import WaterMaterial from "../Shaders/Materials/Water.js";
38
39
 
39
40
  /**
@@ -219,6 +220,11 @@ import WaterMaterial from "../Shaders/Materials/Water.js";
219
220
  * <li><code>heights</code>: image of heights sorted from lowest to highest.</li>
220
221
  * <li><code>colors</code>: image of colors at the corresponding heights.</li>
221
222
  * </ul>
223
+ * <li>WaterMask</li>
224
+ * <ul>
225
+ * <li><code>waterColor</code>: diffuse color and alpha for the areas covered by water.</li>
226
+ * <li><code>landColor</code>: diffuse color and alpha for the areas covered by land.</li>
227
+ * </ul>
222
228
  * </ul>
223
229
  * </ul>
224
230
  * </div>
@@ -233,7 +239,6 @@ import WaterMaterial from "../Shaders/Materials/Water.js";
233
239
  * @param {TextureMinificationFilter} [options.minificationFilter=TextureMinificationFilter.LINEAR] The {@link TextureMinificationFilter} to apply to this material's textures.
234
240
  * @param {TextureMagnificationFilter} [options.magnificationFilter=TextureMagnificationFilter.LINEAR] The {@link TextureMagnificationFilter} to apply to this material's textures.
235
241
  * @param {object} options.fabric The fabric JSON used to generate the material.
236
- *ructor
237
242
  *
238
243
  * @exception {DeveloperError} fabric: uniform has invalid type.
239
244
  * @exception {DeveloperError} fabric: uniforms and materials cannot share the same property.
@@ -245,7 +250,6 @@ import WaterMaterial from "../Shaders/Materials/Water.js";
245
250
  * @exception {DeveloperError} strict: shader source does not use material.
246
251
  *
247
252
  * @see {@link https://github.com/CesiumGS/cesium/wiki/Fabric|Fabric wiki page} for a more detailed options of Fabric.
248
- *
249
253
  * @demo {@link https://sandcastle.cesium.com/index.html?src=Materials.html|Cesium Sandcastle Materials Demo}
250
254
  *
251
255
  * @example
@@ -1739,4 +1743,22 @@ Material._materialCache.addMaterial(Material.ElevationBandType, {
1739
1743
  translucent: true,
1740
1744
  });
1741
1745
 
1746
+ /**
1747
+ * Gets the name of the water mask material.
1748
+ * @type {string}
1749
+ * @readonly
1750
+ */
1751
+ Material.WaterMaskType = "WaterMask";
1752
+ Material._materialCache.addMaterial(Material.WaterMaskType, {
1753
+ fabric: {
1754
+ type: Material.WaterMaskType,
1755
+ source: WaterMaskMaterial,
1756
+ uniforms: {
1757
+ waterColor: new Color(1.0, 1.0, 1.0, 1.0),
1758
+ landColor: new Color(0.0, 0.0, 0.0, 0.0),
1759
+ },
1760
+ },
1761
+ translucent: false,
1762
+ });
1763
+
1742
1764
  export default Material;
@@ -2,7 +2,7 @@ import combine from "../../Core/combine.js";
2
2
  import defined from "../../Core/defined.js";
3
3
  import ImageBasedLightingStageFS from "../../Shaders/Model/ImageBasedLightingStageFS.js";
4
4
  import ShaderDestination from "../../Renderer/ShaderDestination.js";
5
- import OctahedralProjectedCubeMap from "../OctahedralProjectedCubeMap.js";
5
+ import SpecularEnvironmentCubeMap from "../SpecularEnvironmentCubeMap.js";
6
6
 
7
7
  const ImageBasedLightingPipelineStage = {
8
8
  name: "ImageBasedLightingPipelineStage", // Helps with debugging
@@ -34,7 +34,7 @@ ImageBasedLightingPipelineStage.process = function (
34
34
  ShaderDestination.FRAGMENT
35
35
  );
36
36
 
37
- if (OctahedralProjectedCubeMap.isSupported(frameState.context)) {
37
+ if (SpecularEnvironmentCubeMap.isSupported(frameState.context)) {
38
38
  const addMatrix =
39
39
  imageBasedLighting.useSphericalHarmonics ||
40
40
  imageBasedLighting.useSpecularEnvironmentMaps ||
@@ -72,8 +72,8 @@ ImageBasedLightingPipelineStage.process = function (
72
72
  }
73
73
 
74
74
  if (
75
- defined(imageBasedLighting.specularEnvironmentMapAtlas) &&
76
- imageBasedLighting.specularEnvironmentMapAtlas.ready
75
+ defined(imageBasedLighting.specularEnvironmentCubeMap) &&
76
+ imageBasedLighting.specularEnvironmentCubeMap.ready
77
77
  ) {
78
78
  shaderBuilder.addDefine(
79
79
  "SPECULAR_IBL",
@@ -86,15 +86,10 @@ ImageBasedLightingPipelineStage.process = function (
86
86
  ShaderDestination.FRAGMENT
87
87
  );
88
88
  shaderBuilder.addUniform(
89
- "sampler2D",
89
+ "samplerCube",
90
90
  "model_specularEnvironmentMaps",
91
91
  ShaderDestination.FRAGMENT
92
92
  );
93
- shaderBuilder.addUniform(
94
- "vec2",
95
- "model_specularEnvironmentMapsSize",
96
- ShaderDestination.FRAGMENT
97
- );
98
93
  shaderBuilder.addUniform(
99
94
  "float",
100
95
  "model_specularEnvironmentMapsMaximumLOD",
@@ -138,13 +133,10 @@ ImageBasedLightingPipelineStage.process = function (
138
133
  return imageBasedLighting.sphericalHarmonicCoefficients;
139
134
  },
140
135
  model_specularEnvironmentMaps: function () {
141
- return imageBasedLighting.specularEnvironmentMapAtlas.texture;
142
- },
143
- model_specularEnvironmentMapsSize: function () {
144
- return imageBasedLighting.specularEnvironmentMapAtlas.texture.dimensions;
136
+ return imageBasedLighting.specularEnvironmentCubeMap.texture;
145
137
  },
146
138
  model_specularEnvironmentMapsMaximumLOD: function () {
147
- return imageBasedLighting.specularEnvironmentMapAtlas.maximumMipmapLevel;
139
+ return imageBasedLighting.specularEnvironmentCubeMap.maximumMipmapLevel;
148
140
  },
149
141
  };
150
142