@cesium/engine 10.0.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 (234) hide show
  1. package/Build/Workers/{chunk-AA4GZKOT.js → chunk-2EDC3QGH.js} +1 -1
  2. package/Build/Workers/{chunk-DKVHRNFY.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-GRAT5GE7.js → chunk-4TK5YR6Q.js} +5 -5
  6. package/Build/Workers/{chunk-XD445VDH.js → chunk-54VC7SCM.js} +7 -7
  7. package/Build/Workers/{chunk-G3YR53LY.js → chunk-5IY5BXCT.js} +13 -13
  8. package/Build/Workers/{chunk-O3JCMSS3.js → chunk-6FFGOENI.js} +54 -7
  9. package/Build/Workers/{chunk-7XGC6YB2.js → chunk-6PJIHPQB.js} +13 -13
  10. package/Build/Workers/{chunk-GR3CDLCP.js → chunk-6ZREIBKS.js} +7 -7
  11. package/Build/Workers/{chunk-4MSUJ4I7.js → chunk-AI3O7UN2.js} +6 -6
  12. package/Build/Workers/{chunk-COYFZ5VA.js → chunk-AS7P4BHI.js} +6 -6
  13. package/Build/Workers/{chunk-JYAHOGGL.js → chunk-AUM45VEG.js} +16 -15
  14. package/Build/Workers/{chunk-BDFNKFOE.js → chunk-BBO6BGLC.js} +13 -13
  15. package/Build/Workers/{chunk-AVI4IUWC.js → chunk-BH5ZEN4I.js} +10 -10
  16. package/Build/Workers/{chunk-4BAE4PWO.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-PYHLO636.js → chunk-DJXXI7UF.js} +5 -5
  20. package/Build/Workers/{chunk-LCLJJ2MZ.js → chunk-DVAIU7A4.js} +17 -17
  21. package/Build/Workers/{chunk-SYCPRK3D.js → chunk-FJT3ERV7.js} +9 -9
  22. package/Build/Workers/{chunk-L6RTJ3RE.js → chunk-GOHDOWU5.js} +14 -14
  23. package/Build/Workers/{chunk-MSKXMXJI.js → chunk-HA6TZ3XT.js} +4 -4
  24. package/Build/Workers/{chunk-PCP4YQST.js → chunk-HBZSCVZC.js} +11 -11
  25. package/Build/Workers/{chunk-5S7OLEPK.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-VFBNELXB.js → chunk-HO2NTC7I.js} +6 -6
  29. package/Build/Workers/{chunk-DOXCPOG4.js → chunk-HZPMWR4H.js} +7 -7
  30. package/Build/Workers/{chunk-I2RC4XVN.js → chunk-IBG5FVXC.js} +4 -4
  31. package/Build/Workers/{chunk-LEABCTLP.js → chunk-IXLNNST6.js} +4 -4
  32. package/Build/Workers/{chunk-4YSNMHZ4.js → chunk-JYUCC5NV.js} +6 -6
  33. package/Build/Workers/{chunk-BCL4PHHT.js → chunk-KFW4UNQH.js} +10 -10
  34. package/Build/Workers/{chunk-R6B7UCQB.js → chunk-KKAEXHDY.js} +2 -2
  35. package/Build/Workers/{chunk-BJF5LOWE.js → chunk-L6FARMF6.js} +7 -7
  36. package/Build/Workers/{chunk-C2CGMAIU.js → chunk-N3BIL6WA.js} +13 -13
  37. package/Build/Workers/{chunk-STBBMQGG.js → chunk-O5SSW3B3.js} +6 -6
  38. package/Build/Workers/{chunk-S3PI2KFM.js → chunk-OC4MYPVW.js} +2 -2
  39. package/Build/Workers/{chunk-MDHQR3ZS.js → chunk-OOA6GXKD.js} +7 -7
  40. package/Build/Workers/{chunk-AD5HBJ2F.js → chunk-OSCHEWSG.js} +7 -7
  41. package/Build/Workers/{chunk-NTXTUNEF.js → chunk-QGT2GMOK.js} +4 -4
  42. package/Build/Workers/{chunk-VO3ACQB2.js → chunk-RFQYEYAL.js} +17 -17
  43. package/Build/Workers/{chunk-KUN2ZA5X.js → chunk-RJF5ZP76.js} +4 -4
  44. package/Build/Workers/{chunk-QD4KM3GO.js → chunk-SIZXFNJY.js} +6 -5
  45. package/Build/Workers/{chunk-FXIHSF7O.js → chunk-SRZJCF7G.js} +9 -9
  46. package/Build/Workers/{chunk-T77JILCU.js → chunk-T4MB73MC.js} +2 -2
  47. package/Build/Workers/{chunk-3WUV74WM.js → chunk-TTI2SUWJ.js} +2 -2
  48. package/Build/Workers/{chunk-QMLTCCYG.js → chunk-VHJ5ESXF.js} +1 -1
  49. package/Build/Workers/{chunk-2J3JKXCP.js → chunk-VSFFJGTA.js} +9 -5
  50. package/Build/Workers/{chunk-DGS5QNIO.js → chunk-WQRXRDCZ.js} +11 -11
  51. package/Build/Workers/{chunk-OORVMGDU.js → chunk-WXDGOYTT.js} +12 -7
  52. package/Build/Workers/{chunk-RJYML24O.js → chunk-XLCZE6DD.js} +423 -448
  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 +20 -22
  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/Core/Simon1994PlanetaryPositions.js +2 -1
  106. package/Source/Core/Transforms.js +137 -2
  107. package/Source/DataSources/BillboardGraphics.js +16 -0
  108. package/Source/DataSources/BillboardVisualizer.js +7 -0
  109. package/Source/DataSources/CallbackProperty.js +8 -2
  110. package/Source/DataSources/CheckerboardMaterialProperty.js +7 -1
  111. package/Source/DataSources/ColorMaterialProperty.js +7 -1
  112. package/Source/DataSources/CompositeMaterialProperty.js +5 -4
  113. package/Source/DataSources/CompositePositionProperty.js +7 -1
  114. package/Source/DataSources/CompositeProperty.js +5 -5
  115. package/Source/DataSources/ConstantPositionProperty.js +7 -1
  116. package/Source/DataSources/Entity.js +1 -1
  117. package/Source/DataSources/GridMaterialProperty.js +7 -1
  118. package/Source/DataSources/ImageMaterialProperty.js +8 -1
  119. package/Source/DataSources/MaterialProperty.js +7 -1
  120. package/Source/DataSources/NodeTransformationProperty.js +7 -1
  121. package/Source/DataSources/PathVisualizer.js +4 -4
  122. package/Source/DataSources/PointGraphics.js +17 -0
  123. package/Source/DataSources/PointVisualizer.js +12 -0
  124. package/Source/DataSources/PolylineArrowMaterialProperty.js +7 -1
  125. package/Source/DataSources/PolylineDashMaterialProperty.js +7 -1
  126. package/Source/DataSources/PolylineGlowMaterialProperty.js +7 -1
  127. package/Source/DataSources/PolylineOutlineMaterialProperty.js +7 -1
  128. package/Source/DataSources/PositionProperty.js +5 -8
  129. package/Source/DataSources/PositionPropertyArray.js +7 -1
  130. package/Source/DataSources/Property.js +1 -1
  131. package/Source/DataSources/PropertyArray.js +5 -5
  132. package/Source/DataSources/PropertyBag.js +5 -4
  133. package/Source/DataSources/ReferenceProperty.js +7 -1
  134. package/Source/DataSources/SampledPositionProperty.js +7 -1
  135. package/Source/DataSources/SampledProperty.js +6 -4
  136. package/Source/DataSources/ScaledPositionProperty.js +6 -0
  137. package/Source/DataSources/StripeMaterialProperty.js +7 -1
  138. package/Source/DataSources/TerrainOffsetProperty.js +9 -0
  139. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +7 -1
  140. package/Source/DataSources/TimeIntervalCollectionProperty.js +5 -5
  141. package/Source/DataSources/VelocityOrientationProperty.js +6 -1
  142. package/Source/DataSources/VelocityVectorProperty.js +3 -5
  143. package/Source/Renderer/AutomaticUniforms.js +3 -18
  144. package/Source/Renderer/Context.js +15 -0
  145. package/Source/Renderer/CubeMap.js +326 -348
  146. package/Source/Renderer/CubeMapFace.js +26 -48
  147. package/Source/Renderer/PixelDatatype.js +23 -0
  148. package/Source/Renderer/Sampler.js +7 -13
  149. package/Source/Renderer/ShaderProgram.js +7 -0
  150. package/Source/Renderer/Texture.js +396 -332
  151. package/Source/Renderer/UniformState.js +8 -33
  152. package/Source/Renderer/demodernizeShader.js +2 -0
  153. package/Source/Renderer/loadCubeMap.js +3 -8
  154. package/Source/Scene/ArcGisMapService.js +1 -1
  155. package/Source/Scene/Billboard.js +29 -2
  156. package/Source/Scene/BillboardCollection.js +49 -0
  157. package/Source/Scene/BingMapsImageryProvider.js +10 -1
  158. package/Source/Scene/CameraEventAggregator.js +49 -5
  159. package/Source/Scene/Globe.js +1 -1
  160. package/Source/Scene/GlobeSurfaceShaderSet.js +29 -24
  161. package/Source/Scene/GlobeSurfaceTileProvider.js +5 -3
  162. package/Source/Scene/ImageBasedLighting.js +36 -36
  163. package/Source/Scene/Label.js +2 -2
  164. package/Source/Scene/Material.js +24 -2
  165. package/Source/Scene/Model/ImageBasedLightingPipelineStage.js +7 -15
  166. package/Source/Scene/Model/Model.js +1 -1
  167. package/Source/Scene/PointPrimitive.js +28 -2
  168. package/Source/Scene/PointPrimitiveCollection.js +22 -9
  169. package/Source/Scene/PostProcessStageCollection.js +45 -15
  170. package/Source/Scene/PostProcessStageLibrary.js +26 -0
  171. package/Source/Scene/Scene.js +20 -22
  172. package/Source/Scene/SceneTransforms.js +0 -62
  173. package/Source/Scene/ScreenSpaceCameraController.js +11 -4
  174. package/Source/Scene/SkyBox.js +13 -19
  175. package/Source/Scene/SpecularEnvironmentCubeMap.js +240 -0
  176. package/Source/Scene/Tonemapper.js +35 -23
  177. package/Source/Scene/VoxelPrimitive.js +0 -29
  178. package/Source/Scene/VoxelRenderResources.js +0 -3
  179. package/Source/Shaders/BillboardCollectionFS.glsl +4 -0
  180. package/Source/Shaders/BillboardCollectionFS.js +4 -0
  181. package/Source/Shaders/BillboardCollectionVS.glsl +3 -1
  182. package/Source/Shaders/BillboardCollectionVS.js +3 -1
  183. package/Source/Shaders/BrdfLutGeneratorFS.glsl +30 -13
  184. package/Source/Shaders/BrdfLutGeneratorFS.js +30 -13
  185. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -2
  186. package/Source/Shaders/Builtin/Functions/pbrLighting.glsl +42 -41
  187. package/Source/Shaders/Builtin/Functions/pbrLighting.js +42 -41
  188. package/Source/Shaders/Builtin/Functions/pbrNeutralTonemapping.glsl +23 -0
  189. package/Source/Shaders/Builtin/Functions/pbrNeutralTonemapping.js +25 -0
  190. package/Source/Shaders/Builtin/Functions/textureCube.glsl +21 -2
  191. package/Source/Shaders/Builtin/Functions/textureCube.js +21 -2
  192. package/Source/Shaders/Builtin/Structs/materialInput.glsl +2 -0
  193. package/Source/Shaders/Builtin/Structs/materialInput.js +2 -0
  194. package/Source/Shaders/GlobeFS.glsl +10 -4
  195. package/Source/Shaders/GlobeFS.js +10 -4
  196. package/Source/Shaders/Materials/WaterMaskMaterial.glsl +15 -0
  197. package/Source/Shaders/Materials/WaterMaskMaterial.js +17 -0
  198. package/Source/Shaders/Model/AtmosphereStageFS.glsl +1 -1
  199. package/Source/Shaders/Model/AtmosphereStageFS.js +1 -1
  200. package/Source/Shaders/Model/ImageBasedLightingStageFS.glsl +57 -46
  201. package/Source/Shaders/Model/ImageBasedLightingStageFS.js +57 -46
  202. package/Source/Shaders/Model/LightingStageFS.glsl +8 -7
  203. package/Source/Shaders/Model/LightingStageFS.js +8 -7
  204. package/Source/Shaders/Model/MaterialStageFS.glsl +10 -14
  205. package/Source/Shaders/Model/MaterialStageFS.js +10 -14
  206. package/Source/Shaders/PointPrimitiveCollectionFS.glsl +4 -0
  207. package/Source/Shaders/PointPrimitiveCollectionFS.js +4 -0
  208. package/Source/Shaders/PointPrimitiveCollectionVS.glsl +9 -7
  209. package/Source/Shaders/PointPrimitiveCollectionVS.js +9 -7
  210. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.glsl +4 -0
  211. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.js +4 -0
  212. package/Source/Shaders/PostProcessStages/FilmicTonemapping.glsl +4 -0
  213. package/Source/Shaders/PostProcessStages/FilmicTonemapping.js +4 -0
  214. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.glsl +4 -0
  215. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.js +4 -0
  216. package/Source/Shaders/PostProcessStages/PbrNeutralTonemapping.glsl +25 -0
  217. package/Source/Shaders/PostProcessStages/PbrNeutralTonemapping.js +27 -0
  218. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.glsl +4 -0
  219. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.js +4 -0
  220. package/Source/Shaders/SkyAtmosphereFS.glsl +1 -1
  221. package/Source/Shaders/SkyAtmosphereFS.js +1 -1
  222. package/Source/Widget/CesiumWidget.js +1 -1
  223. package/index.d.ts +191 -106
  224. package/index.js +133 -134
  225. package/package.json +4 -4
  226. package/Source/Scene/OctahedralProjectedCubeMap.js +0 -445
  227. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.glsl +0 -78
  228. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.js +0 -80
  229. package/Source/Shaders/OctahedralProjectionAtlasFS.glsl +0 -89
  230. package/Source/Shaders/OctahedralProjectionAtlasFS.js +0 -91
  231. package/Source/Shaders/OctahedralProjectionFS.glsl +0 -14
  232. package/Source/Shaders/OctahedralProjectionFS.js +0 -16
  233. package/Source/Shaders/OctahedralProjectionVS.glsl +0 -10
  234. package/Source/Shaders/OctahedralProjectionVS.js +0 -12
@@ -10,12 +10,14 @@ import createBillboardPointCallback from "../Scene/createBillboardPointCallback.
10
10
  import HeightReference from "../Scene/HeightReference.js";
11
11
  import BoundingSphereState from "./BoundingSphereState.js";
12
12
  import Property from "./Property.js";
13
+ import SplitDirection from "../Scene/SplitDirection.js";
13
14
 
14
15
  const defaultColor = Color.WHITE;
15
16
  const defaultOutlineColor = Color.BLACK;
16
17
  const defaultOutlineWidth = 0.0;
17
18
  const defaultPixelSize = 1.0;
18
19
  const defaultDisableDepthTestDistance = 0.0;
20
+ const defaultSplitDirection = SplitDirection.NONE;
19
21
 
20
22
  const colorScratch = new Color();
21
23
  const positionScratch = new Cartesian3();
@@ -192,6 +194,11 @@ PointVisualizer.prototype.update = function (time) {
192
194
  time,
193
195
  defaultDisableDepthTestDistance
194
196
  );
197
+ pointPrimitive.splitDirection = Property.getValueOrDefault(
198
+ pointGraphics._splitDirection,
199
+ time,
200
+ defaultSplitDirection
201
+ );
195
202
  } else if (defined(billboard)) {
196
203
  billboard.show = true;
197
204
  billboard.position = position;
@@ -215,6 +222,11 @@ PointVisualizer.prototype.update = function (time) {
215
222
  time,
216
223
  defaultDisableDepthTestDistance
217
224
  );
225
+ billboard.splitDirection = Property.getValueOrDefault(
226
+ pointGraphics._splitDirection,
227
+ time,
228
+ defaultSplitDirection
229
+ );
218
230
  billboard.heightReference = heightReference;
219
231
 
220
232
  const newColor = Property.getValueOrDefault(
@@ -1,6 +1,7 @@
1
1
  import Color from "../Core/Color.js";
2
2
  import defined from "../Core/defined.js";
3
3
  import Event from "../Core/Event.js";
4
+ import JulianDate from "../Core/JulianDate.js";
4
5
  import createPropertyDescriptor from "./createPropertyDescriptor.js";
5
6
  import Property from "./Property.js";
6
7
 
@@ -67,14 +68,19 @@ PolylineArrowMaterialProperty.prototype.getType = function (time) {
67
68
  return "PolylineArrow";
68
69
  };
69
70
 
71
+ const timeScratch = new JulianDate();
72
+
70
73
  /**
71
74
  * Gets the value of the property at the provided time.
72
75
  *
73
- * @param {JulianDate} time The time for which to retrieve the value.
76
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
74
77
  * @param {object} [result] The object to store the value into, if omitted, a new instance is created and returned.
75
78
  * @returns {object} The modified result parameter or a new instance if the result parameter was not supplied.
76
79
  */
77
80
  PolylineArrowMaterialProperty.prototype.getValue = function (time, result) {
81
+ if (!defined(time)) {
82
+ time = JulianDate.now(timeScratch);
83
+ }
78
84
  if (!defined(result)) {
79
85
  result = {};
80
86
  }
@@ -2,6 +2,7 @@ import Color from "../Core/Color.js";
2
2
  import defaultValue from "../Core/defaultValue.js";
3
3
  import defined from "../Core/defined.js";
4
4
  import Event from "../Core/Event.js";
5
+ import JulianDate from "../Core/JulianDate.js";
5
6
  import createPropertyDescriptor from "./createPropertyDescriptor.js";
6
7
  import Property from "./Property.js";
7
8
 
@@ -110,14 +111,19 @@ PolylineDashMaterialProperty.prototype.getType = function (time) {
110
111
  return "PolylineDash";
111
112
  };
112
113
 
114
+ const timeScratch = new JulianDate();
115
+
113
116
  /**
114
117
  * Gets the value of the property at the provided time.
115
118
  *
116
- * @param {JulianDate} time The time for which to retrieve the value.
119
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
117
120
  * @param {object} [result] The object to store the value into, if omitted, a new instance is created and returned.
118
121
  * @returns {object} The modified result parameter or a new instance if the result parameter was not supplied.
119
122
  */
120
123
  PolylineDashMaterialProperty.prototype.getValue = function (time, result) {
124
+ if (!defined(time)) {
125
+ time = JulianDate.now(timeScratch);
126
+ }
121
127
  if (!defined(result)) {
122
128
  result = {};
123
129
  }
@@ -2,6 +2,7 @@ import Color from "../Core/Color.js";
2
2
  import defaultValue from "../Core/defaultValue.js";
3
3
  import defined from "../Core/defined.js";
4
4
  import Event from "../Core/Event.js";
5
+ import JulianDate from "../Core/JulianDate.js";
5
6
  import createPropertyDescriptor from "./createPropertyDescriptor.js";
6
7
  import Property from "./Property.js";
7
8
 
@@ -95,14 +96,19 @@ PolylineGlowMaterialProperty.prototype.getType = function (time) {
95
96
  return "PolylineGlow";
96
97
  };
97
98
 
99
+ const timeScratch = new JulianDate();
100
+
98
101
  /**
99
102
  * Gets the value of the property at the provided time.
100
103
  *
101
- * @param {JulianDate} time The time for which to retrieve the value.
104
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
102
105
  * @param {object} [result] The object to store the value into, if omitted, a new instance is created and returned.
103
106
  * @returns {object} The modified result parameter or a new instance if the result parameter was not supplied.
104
107
  */
105
108
  PolylineGlowMaterialProperty.prototype.getValue = function (time, result) {
109
+ if (!defined(time)) {
110
+ time = JulianDate.now(timeScratch);
111
+ }
106
112
  if (!defined(result)) {
107
113
  result = {};
108
114
  }
@@ -2,6 +2,7 @@ import Color from "../Core/Color.js";
2
2
  import defaultValue from "../Core/defaultValue.js";
3
3
  import defined from "../Core/defined.js";
4
4
  import Event from "../Core/Event.js";
5
+ import JulianDate from "../Core/JulianDate.js";
5
6
  import createPropertyDescriptor from "./createPropertyDescriptor.js";
6
7
  import Property from "./Property.js";
7
8
 
@@ -102,14 +103,19 @@ PolylineOutlineMaterialProperty.prototype.getType = function (time) {
102
103
  return "PolylineOutline";
103
104
  };
104
105
 
106
+ const timeScratch = new JulianDate();
107
+
105
108
  /**
106
109
  * Gets the value of the property at the provided time.
107
110
  *
108
- * @param {JulianDate} time The time for which to retrieve the value.
111
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
109
112
  * @param {object} [result] The object to store the value into, if omitted, a new instance is created and returned.
110
113
  * @returns {object} The modified result parameter or a new instance if the result parameter was not supplied.
111
114
  */
112
115
  PolylineOutlineMaterialProperty.prototype.getValue = function (time, result) {
116
+ if (!defined(time)) {
117
+ time = JulianDate.now(timeScratch);
118
+ }
113
119
  if (!defined(result)) {
114
120
  result = {};
115
121
  }
@@ -61,7 +61,7 @@ Object.defineProperties(PositionProperty.prototype, {
61
61
  * Gets the value of the property at the provided time in the fixed frame.
62
62
  * @function
63
63
  *
64
- * @param {JulianDate} time The time for which to retrieve the value.
64
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
65
65
  * @param {Cartesian3} [result] The object to store the value into, if omitted, a new instance is created and returned.
66
66
  * @returns {Cartesian3 | undefined} The modified result parameter or a new instance if the result parameter was not supplied.
67
67
  */
@@ -112,13 +112,10 @@ PositionProperty.convertToReferenceFrame = function (
112
112
  return Cartesian3.clone(value, result);
113
113
  }
114
114
 
115
- let icrfToFixed = Transforms.computeIcrfToFixedMatrix(time, scratchMatrix3);
116
- if (!defined(icrfToFixed)) {
117
- icrfToFixed = Transforms.computeTemeToPseudoFixedMatrix(
118
- time,
119
- scratchMatrix3
120
- );
121
- }
115
+ const icrfToFixed = Transforms.computeIcrfToCentralBodyFixedMatrix(
116
+ time,
117
+ scratchMatrix3
118
+ );
122
119
  if (inputFrame === ReferenceFrame.INERTIAL) {
123
120
  return Matrix3.multiplyByVector(icrfToFixed, value, result);
124
121
  }
@@ -3,6 +3,7 @@ import defined from "../Core/defined.js";
3
3
  import DeveloperError from "../Core/DeveloperError.js";
4
4
  import Event from "../Core/Event.js";
5
5
  import EventHelper from "../Core/EventHelper.js";
6
+ import JulianDate from "../Core/JulianDate.js";
6
7
  import ReferenceFrame from "../Core/ReferenceFrame.js";
7
8
  import Property from "./Property.js";
8
9
 
@@ -76,14 +77,19 @@ Object.defineProperties(PositionPropertyArray.prototype, {
76
77
  },
77
78
  });
78
79
 
80
+ const timeScratch = new JulianDate();
81
+
79
82
  /**
80
83
  * Gets the value of the property.
81
84
  *
82
- * @param {JulianDate} time The time for which to retrieve the value.
85
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
83
86
  * @param {Cartesian3[]} [result] The object to store the value into, if omitted, a new instance is created and returned.
84
87
  * @returns {Cartesian3[]} The modified result parameter or a new instance if the result parameter was not supplied.
85
88
  */
86
89
  PositionPropertyArray.prototype.getValue = function (time, result) {
90
+ if (!defined(time)) {
91
+ time = JulianDate.now(timeScratch);
92
+ }
87
93
  return this.getValueInReferenceFrame(time, ReferenceFrame.FIXED, result);
88
94
  };
89
95
 
@@ -52,7 +52,7 @@ Object.defineProperties(Property.prototype, {
52
52
  * Gets the value of the property at the provided time.
53
53
  * @function
54
54
  *
55
- * @param {JulianDate} time The time for which to retrieve the value.
55
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
56
56
  * @param {object} [result] The object to store the value into, if omitted, a new instance is created and returned.
57
57
  * @returns {object} The modified result parameter or a new instance if the result parameter was not supplied.
58
58
  */
@@ -1,7 +1,7 @@
1
1
  import defined from "../Core/defined.js";
2
- import DeveloperError from "../Core/DeveloperError.js";
3
2
  import Event from "../Core/Event.js";
4
3
  import EventHelper from "../Core/EventHelper.js";
4
+ import JulianDate from "../Core/JulianDate.js";
5
5
  import Property from "./Property.js";
6
6
 
7
7
  /**
@@ -60,19 +60,19 @@ Object.defineProperties(PropertyArray.prototype, {
60
60
  },
61
61
  });
62
62
 
63
+ const timeScratch = new JulianDate();
64
+
63
65
  /**
64
66
  * Gets the value of the property.
65
67
  *
66
- * @param {JulianDate} time The time for which to retrieve the value.
68
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
67
69
  * @param {Object[]} [result] The object to store the value into, if omitted, a new instance is created and returned.
68
70
  * @returns {Object[]} The modified result parameter, which is an array of values produced by evaluating each of the contained properties at the given time or a new instance if the result parameter was not supplied.
69
71
  */
70
72
  PropertyArray.prototype.getValue = function (time, result) {
71
- //>>includeStart('debug', pragmas.debug);
72
73
  if (!defined(time)) {
73
- throw new DeveloperError("time is required.");
74
+ time = JulianDate.now(timeScratch);
74
75
  }
75
- //>>includeEnd('debug');
76
76
 
77
77
  const value = this._value;
78
78
  if (!defined(value)) {
@@ -2,6 +2,7 @@ import defaultValue from "../Core/defaultValue.js";
2
2
  import defined from "../Core/defined.js";
3
3
  import DeveloperError from "../Core/DeveloperError.js";
4
4
  import Event from "../Core/Event.js";
5
+ import JulianDate from "../Core/JulianDate.js";
5
6
  import ConstantProperty from "./ConstantProperty.js";
6
7
  import createPropertyDescriptor from "./createPropertyDescriptor.js";
7
8
  import Property from "./Property.js";
@@ -157,21 +158,21 @@ PropertyBag.prototype.removeProperty = function (propertyName) {
157
158
  this._definitionChanged.raiseEvent(this);
158
159
  };
159
160
 
161
+ const timeScratch = new JulianDate();
162
+
160
163
  /**
161
164
  * Gets the value of this property. Each contained property will be evaluated at the given time, and the overall
162
165
  * result will be an object, mapping property names to those values.
163
166
  *
164
- * @param {JulianDate} time The time for which to retrieve the value.
167
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
165
168
  * @param {object} [result] The object to store the value into, if omitted, a new instance is created and returned.
166
169
  * Note that any properties in result which are not part of this PropertyBag will be left as-is.
167
170
  * @returns {object} The modified result parameter or a new instance if the result parameter was not supplied.
168
171
  */
169
172
  PropertyBag.prototype.getValue = function (time, result) {
170
- //>>includeStart('debug', pragmas.debug);
171
173
  if (!defined(time)) {
172
- throw new DeveloperError("time is required.");
174
+ time = JulianDate.now(timeScratch);
173
175
  }
174
- //>>includeEnd('debug');
175
176
 
176
177
  if (!defined(result)) {
177
178
  result = {};
@@ -1,6 +1,7 @@
1
1
  import defined from "../Core/defined.js";
2
2
  import DeveloperError from "../Core/DeveloperError.js";
3
3
  import Event from "../Core/Event.js";
4
+ import JulianDate from "../Core/JulianDate.js";
4
5
  import Property from "./Property.js";
5
6
 
6
7
  function resolve(that) {
@@ -254,15 +255,20 @@ ReferenceProperty.fromString = function (targetCollection, referenceString) {
254
255
  return new ReferenceProperty(targetCollection, identifier, values);
255
256
  };
256
257
 
258
+ const timeScratch = new JulianDate();
259
+
257
260
  /**
258
261
  * Gets the value of the property at the provided time.
259
262
  *
260
- * @param {JulianDate} time The time for which to retrieve the value.
263
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
261
264
  * @param {object} [result] The object to store the value into, if omitted, a new instance is created and returned.
262
265
  * @returns {object} The modified result parameter or a new instance if the result parameter was not supplied.
263
266
  */
264
267
  ReferenceProperty.prototype.getValue = function (time, result) {
265
268
  const target = resolve(this);
269
+ if (!defined(time)) {
270
+ time = JulianDate.now(timeScratch);
271
+ }
266
272
  return defined(target) ? target.getValue(time, result) : undefined;
267
273
  };
268
274
 
@@ -4,6 +4,7 @@ import defaultValue from "../Core/defaultValue.js";
4
4
  import defined from "../Core/defined.js";
5
5
  import DeveloperError from "../Core/DeveloperError.js";
6
6
  import Event from "../Core/Event.js";
7
+ import JulianDate from "../Core/JulianDate.js";
7
8
  import ReferenceFrame from "../Core/ReferenceFrame.js";
8
9
  import PositionProperty from "./PositionProperty.js";
9
10
  import Property from "./Property.js";
@@ -178,14 +179,19 @@ Object.defineProperties(SampledPositionProperty.prototype, {
178
179
  },
179
180
  });
180
181
 
182
+ const timeScratch = new JulianDate();
183
+
181
184
  /**
182
185
  * Gets the position at the provided time.
183
186
  *
184
- * @param {JulianDate} time The time for which to retrieve the value.
187
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
185
188
  * @param {Cartesian3} [result] The object to store the value into, if omitted, a new instance is created and returned.
186
189
  * @returns {Cartesian3 | undefined} The modified result parameter or a new instance if the result parameter was not supplied.
187
190
  */
188
191
  SampledPositionProperty.prototype.getValue = function (time, result) {
192
+ if (!defined(time)) {
193
+ time = JulianDate.now(timeScratch);
194
+ }
189
195
  return this.getValueInReferenceFrame(time, ReferenceFrame.FIXED, result);
190
196
  };
191
197
 
@@ -359,17 +359,19 @@ Object.defineProperties(SampledProperty.prototype, {
359
359
  },
360
360
  });
361
361
 
362
+ const timeScratch = new JulianDate();
363
+
362
364
  /**
363
365
  * Gets the value of the property at the provided time.
364
366
  *
365
- * @param {JulianDate} time The time for which to retrieve the value.
367
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
366
368
  * @param {object} [result] The object to store the value into, if omitted, a new instance is created and returned.
367
369
  * @returns {object} The modified result parameter or a new instance if the result parameter was not supplied.
368
370
  */
369
371
  SampledProperty.prototype.getValue = function (time, result) {
370
- //>>includeStart('debug', pragmas.debug);
371
- Check.defined("time", time);
372
- //>>includeEnd('debug');
372
+ if (!defined(time)) {
373
+ time = JulianDate.now(timeScratch);
374
+ }
373
375
 
374
376
  const times = this._times;
375
377
  const timesLength = times.length;
@@ -2,6 +2,7 @@ import defined from "../Core/defined.js";
2
2
  import DeveloperError from "../Core/DeveloperError.js";
3
3
  import Ellipsoid from "../Core/Ellipsoid.js";
4
4
  import Event from "../Core/Event.js";
5
+ import JulianDate from "../Core/JulianDate.js";
5
6
  import ReferenceFrame from "../Core/ReferenceFrame.js";
6
7
  import Property from "./Property.js";
7
8
 
@@ -37,7 +38,12 @@ Object.defineProperties(ScaledPositionProperty.prototype, {
37
38
  },
38
39
  });
39
40
 
41
+ const timeScratch = new JulianDate();
42
+
40
43
  ScaledPositionProperty.prototype.getValue = function (time, result) {
44
+ if (!defined(time)) {
45
+ time = JulianDate.now(timeScratch);
46
+ }
41
47
  return this.getValueInReferenceFrame(time, ReferenceFrame.FIXED, result);
42
48
  };
43
49
 
@@ -2,6 +2,7 @@ import Color from "../Core/Color.js";
2
2
  import defaultValue from "../Core/defaultValue.js";
3
3
  import defined from "../Core/defined.js";
4
4
  import Event from "../Core/Event.js";
5
+ import JulianDate from "../Core/JulianDate.js";
5
6
  import createPropertyDescriptor from "./createPropertyDescriptor.js";
6
7
  import Property from "./Property.js";
7
8
  import StripeOrientation from "./StripeOrientation.js";
@@ -135,14 +136,19 @@ StripeMaterialProperty.prototype.getType = function (time) {
135
136
  return "Stripe";
136
137
  };
137
138
 
139
+ const timeScratch = new JulianDate();
140
+
138
141
  /**
139
142
  * Gets the value of the property at the provided time.
140
143
  *
141
- * @param {JulianDate} time The time for which to retrieve the value.
144
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
142
145
  * @param {object} [result] The object to store the value into, if omitted, a new instance is created and returned.
143
146
  * @returns {object} The modified result parameter or a new instance if the result parameter was not supplied.
144
147
  */
145
148
  StripeMaterialProperty.prototype.getValue = function (time, result) {
149
+ if (!defined(time)) {
150
+ time = JulianDate.now(timeScratch);
151
+ }
146
152
  if (!defined(result)) {
147
153
  result = {};
148
154
  }
@@ -5,6 +5,7 @@ import defined from "../Core/defined.js";
5
5
  import destroyObject from "../Core/destroyObject.js";
6
6
  import Event from "../Core/Event.js";
7
7
  import Iso8601 from "../Core/Iso8601.js";
8
+ import JulianDate from "../Core/JulianDate.js";
8
9
  import CesiumMath from "../Core/Math.js";
9
10
  import HeightReference, {
10
11
  isHeightReferenceRelative,
@@ -146,12 +147,20 @@ TerrainOffsetProperty.prototype._updateClamping = function () {
146
147
  );
147
148
  };
148
149
 
150
+ const timeScratch = new JulianDate();
151
+
149
152
  /**
150
153
  * Gets the height relative to the terrain based on the positions.
151
154
  *
155
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
156
+ * @param {object} [result] The object to store the value into, if omitted, a new instance is created and returned.
152
157
  * @returns {Cartesian3} The offset
153
158
  */
154
159
  TerrainOffsetProperty.prototype.getValue = function (time, result) {
160
+ if (!defined(time)) {
161
+ time = JulianDate.now(timeScratch);
162
+ }
163
+
155
164
  const heightReference = Property.getValueOrDefault(
156
165
  this._heightReference,
157
166
  time,
@@ -2,6 +2,7 @@ import defaultValue from "../Core/defaultValue.js";
2
2
  import defined from "../Core/defined.js";
3
3
  import DeveloperError from "../Core/DeveloperError.js";
4
4
  import Event from "../Core/Event.js";
5
+ import JulianDate from "../Core/JulianDate.js";
5
6
  import ReferenceFrame from "../Core/ReferenceFrame.js";
6
7
  import TimeIntervalCollection from "../Core/TimeIntervalCollection.js";
7
8
  import PositionProperty from "./PositionProperty.js";
@@ -78,10 +79,12 @@ Object.defineProperties(TimeIntervalCollectionPositionProperty.prototype, {
78
79
  },
79
80
  });
80
81
 
82
+ const timeScratch = new JulianDate();
83
+
81
84
  /**
82
85
  * Gets the value of the property at the provided time in the fixed frame.
83
86
  *
84
- * @param {JulianDate} time The time for which to retrieve the value.
87
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
85
88
  * @param {object} [result] The object to store the value into, if omitted, a new instance is created and returned.
86
89
  * @returns {Cartesian3 | undefined} The modified result parameter or a new instance if the result parameter was not supplied.
87
90
  */
@@ -89,6 +92,9 @@ TimeIntervalCollectionPositionProperty.prototype.getValue = function (
89
92
  time,
90
93
  result
91
94
  ) {
95
+ if (!defined(time)) {
96
+ time = JulianDate.now(timeScratch);
97
+ }
92
98
  return this.getValueInReferenceFrame(time, ReferenceFrame.FIXED, result);
93
99
  };
94
100
 
@@ -1,6 +1,6 @@
1
1
  import defined from "../Core/defined.js";
2
- import DeveloperError from "../Core/DeveloperError.js";
3
2
  import Event from "../Core/Event.js";
3
+ import JulianDate from "../Core/JulianDate.js";
4
4
  import TimeIntervalCollection from "../Core/TimeIntervalCollection.js";
5
5
  import Property from "./Property.js";
6
6
 
@@ -91,19 +91,19 @@ Object.defineProperties(TimeIntervalCollectionProperty.prototype, {
91
91
  },
92
92
  });
93
93
 
94
+ const timeScratch = new JulianDate();
95
+
94
96
  /**
95
97
  * Gets the value of the property at the provided time.
96
98
  *
97
- * @param {JulianDate} time The time for which to retrieve the value.
99
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
98
100
  * @param {object} [result] The object to store the value into, if omitted, a new instance is created and returned.
99
101
  * @returns {object} The modified result parameter or a new instance if the result parameter was not supplied.
100
102
  */
101
103
  TimeIntervalCollectionProperty.prototype.getValue = function (time, result) {
102
- //>>includeStart('debug', pragmas.debug);
103
104
  if (!defined(time)) {
104
- throw new DeveloperError("time is required");
105
+ time = JulianDate.now(timeScratch);
105
106
  }
106
- //>>includeEnd('debug');
107
107
 
108
108
  const value = this._intervals.findDataForIntervalContainingDate(time);
109
109
  if (defined(value) && typeof value.clone === "function") {
@@ -3,6 +3,7 @@ import defaultValue from "../Core/defaultValue.js";
3
3
  import defined from "../Core/defined.js";
4
4
  import Ellipsoid from "../Core/Ellipsoid.js";
5
5
  import Event from "../Core/Event.js";
6
+ import JulianDate from "../Core/JulianDate.js";
6
7
  import Matrix3 from "../Core/Matrix3.js";
7
8
  import Quaternion from "../Core/Quaternion.js";
8
9
  import Transforms from "../Core/Transforms.js";
@@ -104,15 +105,19 @@ Object.defineProperties(VelocityOrientationProperty.prototype, {
104
105
  const positionScratch = new Cartesian3();
105
106
  const velocityScratch = new Cartesian3();
106
107
  const rotationScratch = new Matrix3();
108
+ const timeScratch = new JulianDate();
107
109
 
108
110
  /**
109
111
  * Gets the value of the property at the provided time.
110
112
  *
111
- * @param {JulianDate} [time] The time for which to retrieve the value.
113
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
112
114
  * @param {Quaternion} [result] The object to store the value into, if omitted, a new instance is created and returned.
113
115
  * @returns {Quaternion} The modified result parameter or a new instance if the result parameter was not supplied.
114
116
  */
115
117
  VelocityOrientationProperty.prototype.getValue = function (time, result) {
118
+ if (!defined(time)) {
119
+ time = JulianDate.now(timeScratch);
120
+ }
116
121
  const velocity = this._velocityVectorProperty._getValue(
117
122
  time,
118
123
  velocityScratch,
@@ -1,7 +1,6 @@
1
1
  import Cartesian3 from "../Core/Cartesian3.js";
2
2
  import defaultValue from "../Core/defaultValue.js";
3
3
  import defined from "../Core/defined.js";
4
- import DeveloperError from "../Core/DeveloperError.js";
5
4
  import Event from "../Core/Event.js";
6
5
  import JulianDate from "../Core/JulianDate.js";
7
6
  import Property from "./Property.js";
@@ -119,12 +118,13 @@ Object.defineProperties(VelocityVectorProperty.prototype, {
119
118
  const position1Scratch = new Cartesian3();
120
119
  const position2Scratch = new Cartesian3();
121
120
  const timeScratch = new JulianDate();
121
+ const timeNowScratch = new JulianDate();
122
122
  const step = 1.0 / 60.0;
123
123
 
124
124
  /**
125
125
  * Gets the value of the property at the provided time.
126
126
  *
127
- * @param {JulianDate} [time] The time for which to retrieve the value.
127
+ * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
128
128
  * @param {Cartesian3} [result] The object to store the value into, if omitted, a new instance is created and returned.
129
129
  * @returns {Cartesian3} The modified result parameter or a new instance if the result parameter was not supplied.
130
130
  */
@@ -140,11 +140,9 @@ VelocityVectorProperty.prototype._getValue = function (
140
140
  velocityResult,
141
141
  positionResult
142
142
  ) {
143
- //>>includeStart('debug', pragmas.debug);
144
143
  if (!defined(time)) {
145
- throw new DeveloperError("time is required");
144
+ time = JulianDate.now(timeNowScratch);
146
145
  }
147
- //>>includeEnd('debug');
148
146
 
149
147
  if (!defined(velocityResult)) {
150
148
  velocityResult = new Cartesian3();
@@ -1454,7 +1454,7 @@ const AutomaticUniforms = {
1454
1454
  * // Example: For a given roughness and NdotV value, find the material's BRDF information in the red and green channels
1455
1455
  * float roughness = 0.5;
1456
1456
  * float NdotV = dot(normal, view);
1457
- * vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, 1.0 - roughness)).rg;
1457
+ * vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg;
1458
1458
  */
1459
1459
  czm_brdfLut: new AutomaticUniform({
1460
1460
  size: 1,
@@ -1484,7 +1484,7 @@ const AutomaticUniforms = {
1484
1484
  }),
1485
1485
 
1486
1486
  /**
1487
- * An automatic GLSL uniform containing the specular environment map atlas used within the scene.
1487
+ * An automatic GLSL uniform containing the specular environment cube map used within the scene.
1488
1488
  *
1489
1489
  * @example
1490
1490
  * // GLSL declaration
@@ -1499,22 +1499,7 @@ const AutomaticUniforms = {
1499
1499
  }),
1500
1500
 
1501
1501
  /**
1502
- * An automatic GLSL uniform containing the size of the specular environment map atlas used within the scene.
1503
- *
1504
- * @example
1505
- * // GLSL declaration
1506
- * uniform vec2 czm_specularEnvironmentMapSize;
1507
- */
1508
- czm_specularEnvironmentMapSize: new AutomaticUniform({
1509
- size: 1,
1510
- datatype: WebGLConstants.FLOAT_VEC2,
1511
- getValue: function (uniformState) {
1512
- return uniformState.specularEnvironmentMapsDimensions;
1513
- },
1514
- }),
1515
-
1516
- /**
1517
- * An automatic GLSL uniform containing the maximum level-of-detail of the specular environment map atlas used within the scene.
1502
+ * An automatic GLSL uniform containing the maximum valid level-of-detail of the specular environment cube map used within the scene.
1518
1503
  *
1519
1504
  * @example
1520
1505
  * // GLSL declaration
@@ -160,6 +160,8 @@ function Context(canvas, options) {
160
160
  "OES_texture_half_float_linear",
161
161
  ]);
162
162
 
163
+ this._supportsTextureLod = !!getExtension(gl, ["EXT_shader_texture_lod"]);
164
+
163
165
  this._colorBufferFloat = !!getExtension(gl, [
164
166
  "EXT_color_buffer_float",
165
167
  "WEBGL_color_buffer_float",
@@ -777,6 +779,19 @@ Object.defineProperties(Context.prototype, {
777
779
  },
778
780
  },
779
781
 
782
+ /**
783
+ * <code>true</code> if EXT_shader_texture_lod is supported. This extension provides
784
+ * access to explicit LOD selection in texture sampling functions.
785
+ * @memberof Context.prototype
786
+ * @type {boolean}
787
+ * @see {@link https://registry.khronos.org/webgl/extensions/EXT_shader_texture_lod/}
788
+ */
789
+ supportsTextureLod: {
790
+ get: function () {
791
+ return this._webgl2 || this._supportsTextureLod;
792
+ },
793
+ },
794
+
780
795
  /**
781
796
  * <code>true</code> if EXT_texture_filter_anisotropic is supported. This extension provides
782
797
  * access to anisotropic filtering for textured surfaces at an oblique angle from the viewer.