@cesium/engine 22.1.0 → 22.3.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 (216) hide show
  1. package/Build/Workers/{chunk-YZWA5B4R.js → chunk-2MLJ46ZZ.js} +13 -13
  2. package/Build/Workers/{chunk-GKWOUMYA.js → chunk-4BBANFU6.js} +1 -1
  3. package/Build/Workers/{chunk-23T2IPHV.js → chunk-4O2ARYS7.js} +1 -1
  4. package/Build/Workers/{chunk-RXZDTDIY.js → chunk-4R6FGUFP.js} +9 -9
  5. package/Build/Workers/{chunk-UG2DPFOL.js → chunk-5PJB7ASO.js} +6 -6
  6. package/Build/Workers/{chunk-JKXPC5HD.js → chunk-6GBGEUWR.js} +3 -3
  7. package/Build/Workers/{chunk-YF2NVO5B.js → chunk-6WDMPXQ7.js} +12 -12
  8. package/Build/Workers/{chunk-B7JRBTT6.js → chunk-7ATKQRBM.js} +10 -10
  9. package/Build/Workers/{chunk-TDSVSW5A.js → chunk-7SLNBIZS.js} +5 -34
  10. package/Build/Workers/{chunk-2RCIRXNI.js → chunk-7U5YNLF3.js} +1 -1
  11. package/Build/Workers/{chunk-GTY4K4IA.js → chunk-AFGP5BXS.js} +7 -7
  12. package/Build/Workers/{chunk-WTLYD4FE.js → chunk-AWELU5C6.js} +14 -14
  13. package/Build/Workers/{chunk-IL5F6WEE.js → chunk-BO22JHBX.js} +3 -3
  14. package/Build/Workers/{chunk-YX562XOB.js → chunk-D2PEV362.js} +10 -10
  15. package/Build/Workers/{chunk-MKMZHRB3.js → chunk-D63Z7KKL.js} +11 -11
  16. package/Build/Workers/{chunk-P5CGIJUY.js → chunk-D6OKR3BQ.js} +2 -2
  17. package/Build/Workers/{chunk-GDU4RZSZ.js → chunk-E4YDCSQK.js} +9 -9
  18. package/Build/Workers/{chunk-KKGD7HAW.js → chunk-EAAH543Q.js} +11 -11
  19. package/Build/Workers/{chunk-I4REFVXB.js → chunk-EOSX23OS.js} +4 -4
  20. package/Build/Workers/{chunk-V35NQOJC.js → chunk-EUDHHS7K.js} +6 -6
  21. package/Build/Workers/{chunk-OXFU5HNU.js → chunk-EY5HOJFQ.js} +5 -5
  22. package/Build/Workers/{chunk-DMEFNTUV.js → chunk-FDOLXORR.js} +7 -7
  23. package/Build/Workers/{chunk-QEANVUGT.js → chunk-FS42VX2H.js} +2 -2
  24. package/Build/Workers/{chunk-L4JLDVCM.js → chunk-FUDC3KOT.js} +5 -5
  25. package/Build/Workers/{chunk-LIYMRHGR.js → chunk-HWGP4GVC.js} +13 -13
  26. package/Build/Workers/{chunk-KROSQJUA.js → chunk-IHFAFGR2.js} +2 -2
  27. package/Build/Workers/{chunk-SPA2KPH3.js → chunk-IXL46IYV.js} +12 -12
  28. package/Build/Workers/{chunk-A6YFUGJO.js → chunk-K2PLKJJG.js} +5 -5
  29. package/Build/Workers/{chunk-CW7W27IZ.js → chunk-K4PGSAR5.js} +8 -8
  30. package/Build/Workers/{chunk-DICY26ID.js → chunk-KIJR26N3.js} +16 -16
  31. package/Build/Workers/{chunk-YSYSXSHF.js → chunk-L4OFWHNI.js} +1 -1
  32. package/Build/Workers/{chunk-2AM4E2WD.js → chunk-LK7GEFGB.js} +2 -2
  33. package/Build/Workers/{chunk-W4XUEDU5.js → chunk-LWZHJWYK.js} +6 -6
  34. package/Build/Workers/{chunk-3YTMGEXW.js → chunk-LYBNPUEI.js} +4 -4
  35. package/Build/Workers/{chunk-4BHWJWS3.js → chunk-M5DVYXJJ.js} +6 -6
  36. package/Build/Workers/{chunk-COGPE5Z2.js → chunk-MASEF4OV.js} +8 -8
  37. package/Build/Workers/{chunk-QUAH3XOT.js → chunk-N66PIK46.js} +4 -4
  38. package/Build/Workers/{chunk-H6Q7E4BQ.js → chunk-N6XBJBI7.js} +6 -6
  39. package/Build/Workers/{chunk-Y4ALZ4SS.js → chunk-NO3LMU7T.js} +7 -7
  40. package/Build/Workers/{chunk-MO25ZQ2I.js → chunk-NVL7JXAQ.js} +10 -10
  41. package/Build/Workers/{chunk-DQSJEOZY.js → chunk-OOYICVOK.js} +1 -1
  42. package/Build/Workers/{chunk-CJOV55CW.js → chunk-PJLRXIMS.js} +17 -17
  43. package/Build/Workers/{chunk-AOIO5VUS.js → chunk-S2KVL7OJ.js} +8 -8
  44. package/Build/Workers/{chunk-URGEDZBS.js → chunk-T5MJDW43.js} +7 -7
  45. package/Build/Workers/{chunk-OOCGX2OD.js → chunk-TCOUGKXF.js} +4 -4
  46. package/Build/Workers/{chunk-A53R2F2L.js → chunk-TMGLPEZW.js} +4 -4
  47. package/Build/Workers/{chunk-6HKAPCSO.js → chunk-TY5JXMVO.js} +1 -1
  48. package/Build/Workers/{chunk-2MWF4IES.js → chunk-VIQIKMTZ.js} +14 -14
  49. package/Build/Workers/{chunk-5JKH4AMT.js → chunk-VRAAQ3FS.js} +2 -2
  50. package/Build/Workers/{chunk-CHNDJRYA.js → chunk-W5NV72VR.js} +17 -17
  51. package/Build/Workers/{chunk-HXKUEOOD.js → chunk-WHLGBMBC.js} +5 -5
  52. package/Build/Workers/{chunk-QFBCIX7J.js → chunk-WUWPKBOZ.js} +6 -6
  53. package/Build/Workers/{chunk-Z6DFT4D3.js → chunk-XLIJV3YZ.js} +10 -10
  54. package/Build/Workers/{chunk-WB4TSSBQ.js → chunk-Y5MRBKQN.js} +144 -53
  55. package/Build/Workers/{chunk-HHGOFZVQ.js → chunk-YHPBT4I5.js} +5 -5
  56. package/Build/Workers/{chunk-O6RZEKHZ.js → chunk-ZGGVEGTA.js} +12 -12
  57. package/Build/Workers/{chunk-AJYWXC6I.js → chunk-ZWWN2CQH.js} +4 -4
  58. package/Build/Workers/combineGeometry.js +24 -24
  59. package/Build/Workers/createBoxGeometry.js +18 -18
  60. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  61. package/Build/Workers/createCircleGeometry.js +26 -26
  62. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  63. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  64. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  65. package/Build/Workers/createCorridorGeometry.js +29 -29
  66. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  67. package/Build/Workers/createCylinderGeometry.js +20 -20
  68. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  69. package/Build/Workers/createEllipseGeometry.js +26 -26
  70. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  71. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  72. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  73. package/Build/Workers/createFrustumGeometry.js +18 -18
  74. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  75. package/Build/Workers/createGeometry.js +24 -24
  76. package/Build/Workers/createGroundPolylineGeometry.js +22 -22
  77. package/Build/Workers/createPlaneGeometry.js +16 -16
  78. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  79. package/Build/Workers/createPolygonGeometry.js +32 -32
  80. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  81. package/Build/Workers/createPolylineGeometry.js +25 -25
  82. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  83. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  84. package/Build/Workers/createRectangleGeometry.js +27 -27
  85. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  86. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  87. package/Build/Workers/createSphereGeometry.js +19 -19
  88. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  89. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  90. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  91. package/Build/Workers/createVectorTileGeometries.js +24 -24
  92. package/Build/Workers/createVectorTilePoints.js +13 -13
  93. package/Build/Workers/createVectorTilePolygons.js +22 -22
  94. package/Build/Workers/createVectorTilePolylines.js +14 -14
  95. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  96. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  97. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  98. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  99. package/Build/Workers/createWallGeometry.js +24 -24
  100. package/Build/Workers/createWallOutlineGeometry.js +23 -23
  101. package/Build/Workers/decodeDraco.js +10 -10
  102. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  103. package/Build/Workers/decodeI3S.js +10 -10
  104. package/Build/Workers/gaussianSplatSorter.js +4 -4
  105. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  106. package/Build/Workers/incrementallyBuildTerrainPicker.js +20 -12
  107. package/Build/Workers/transcodeKTX2.js +6 -6
  108. package/Build/Workers/transferTypedArrayTest.js +1 -1
  109. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  110. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  111. package/Source/Core/BoxGeometry.js +1 -1
  112. package/Source/Core/CornerType.js +1 -1
  113. package/Source/Core/CorridorGeometry.js +1 -1
  114. package/Source/Core/FeatureDetection.js +1 -32
  115. package/Source/Core/Geometry.js +1 -1
  116. package/Source/Core/IntersectionTests.js +2 -2
  117. package/Source/Core/Ion.js +1 -1
  118. package/Source/Core/PinBuilder.js +1 -1
  119. package/Source/Core/PolygonGeometry.js +1 -1
  120. package/Source/Core/PolylineGeometry.js +1 -1
  121. package/Source/Core/PolylineVolumeGeometry.js +1 -1
  122. package/Source/Core/RectangleGeometry.js +1 -1
  123. package/Source/Core/ScreenSpaceEventHandler.js +4 -8
  124. package/Source/Core/TerrainMesh.js +11 -8
  125. package/Source/Core/TerrainPicker.js +24 -7
  126. package/Source/Core/VideoSynchronizer.js +1 -1
  127. package/Source/Core/WallGeometry.js +1 -1
  128. package/Source/Core/writeTextToCanvas.js +40 -86
  129. package/Source/DataSources/BillboardGraphics.js +1 -1
  130. package/Source/DataSources/BoxGraphics.js +1 -1
  131. package/Source/DataSources/CallbackPositionProperty.js +1 -1
  132. package/Source/DataSources/CorridorGraphics.js +1 -1
  133. package/Source/DataSources/CzmlDataSource.js +1 -1
  134. package/Source/DataSources/EllipseGraphics.js +1 -1
  135. package/Source/DataSources/EllipsoidGraphics.js +1 -1
  136. package/Source/DataSources/Entity.js +1 -1
  137. package/Source/DataSources/EntityCluster.js +2 -2
  138. package/Source/DataSources/GeoJsonDataSource.js +2 -2
  139. package/Source/DataSources/GpxDataSource.js +1 -1
  140. package/Source/DataSources/KmlDataSource.js +1 -1
  141. package/Source/DataSources/KmlTour.js +1 -1
  142. package/Source/DataSources/LabelGraphics.js +1 -1
  143. package/Source/DataSources/ModelGraphics.js +1 -1
  144. package/Source/DataSources/PlaneGraphics.js +1 -1
  145. package/Source/DataSources/PolygonGraphics.js +1 -1
  146. package/Source/DataSources/PolylineGraphics.js +1 -1
  147. package/Source/DataSources/PolylineVolumeGraphics.js +1 -1
  148. package/Source/DataSources/RectangleGraphics.js +1 -1
  149. package/Source/DataSources/WallGraphics.js +1 -1
  150. package/Source/DataSources/exportKml.js +1 -1
  151. package/Source/Renderer/Context.js +11 -10
  152. package/Source/Renderer/ContextLimits.js +66 -33
  153. package/Source/Renderer/ShaderSource.js +19 -18
  154. package/Source/Renderer/Texture.js +1 -1
  155. package/Source/Renderer/Texture3D.js +166 -7
  156. package/Source/Renderer/TextureAtlas.js +10 -19
  157. package/Source/Scene/Appearance.js +1 -1
  158. package/Source/Scene/ArcGisMapService.js +1 -1
  159. package/Source/Scene/Azure2DImageryProvider.js +7 -8
  160. package/Source/Scene/Billboard.js +1 -1
  161. package/Source/Scene/BillboardCollection.js +15 -1
  162. package/Source/Scene/BillboardTexture.js +4 -1
  163. package/Source/Scene/Camera.js +13 -2
  164. package/Source/Scene/ClippingPlaneCollection.js +2 -2
  165. package/Source/Scene/CloudCollection.js +2 -2
  166. package/Source/Scene/CumulusCloud.js +1 -1
  167. package/Source/Scene/DynamicEnvironmentMapManager.js +41 -26
  168. package/Source/Scene/Fog.js +1 -1
  169. package/Source/Scene/GaussianSplatPrimitive.js +1 -1
  170. package/Source/Scene/Globe.js +3 -10
  171. package/Source/Scene/GltfLoader.js +10 -0
  172. package/Source/Scene/ImageBasedLighting.js +2 -2
  173. package/Source/Scene/ImageryLayerCollection.js +2 -2
  174. package/Source/Scene/ImageryProvider.js +2 -2
  175. package/Source/Scene/Label.js +1 -1
  176. package/Source/Scene/LabelCollection.js +2 -1
  177. package/Source/Scene/Material.js +1 -1
  178. package/Source/Scene/MaterialAppearance.js +1 -1
  179. package/Source/Scene/Megatexture.js +174 -242
  180. package/Source/Scene/Model/MaterialPipelineStage.js +17 -0
  181. package/Source/Scene/Model/Model.js +1 -1
  182. package/Source/Scene/ModelComponents.js +10 -0
  183. package/Source/Scene/ParticleSystem.js +2 -2
  184. package/Source/Scene/PointPrimitive.js +1 -1
  185. package/Source/Scene/Polyline.js +0 -1
  186. package/Source/Scene/PolylineCollection.js +1 -4
  187. package/Source/Scene/PolylineColorAppearance.js +1 -6
  188. package/Source/Scene/PolylineMaterialAppearance.js +1 -6
  189. package/Source/Scene/PostProcessStageCollection.js +1 -1
  190. package/Source/Scene/QuadtreePrimitive.js +6 -3
  191. package/Source/Scene/ShadowMap.js +1 -2
  192. package/Source/Scene/Vector3DTileClampedPolylines.js +1 -5
  193. package/Source/Scene/Vector3DTilePolylines.js +1 -5
  194. package/Source/Scene/VoxelPrimitive.js +16 -33
  195. package/Source/Scene/VoxelRenderResources.js +1 -8
  196. package/Source/Scene/VoxelTraversal.js +16 -61
  197. package/Source/Scene/WebMapTileServiceImageryProvider.js +1 -1
  198. package/Source/Scene/createElevationBandMaterial.js +1 -1
  199. package/Source/Scene/processVoxelProperties.js +1 -1
  200. package/Source/Shaders/Builtin/Functions/columbusViewMorph.glsl +8 -1
  201. package/Source/Shaders/Builtin/Functions/columbusViewMorph.js +8 -1
  202. package/Source/Shaders/Model/ModelFS.glsl +8 -0
  203. package/Source/Shaders/Model/ModelFS.js +8 -0
  204. package/Source/Shaders/Model/ModelVS.glsl +2 -0
  205. package/Source/Shaders/Model/ModelVS.js +2 -0
  206. package/Source/Shaders/Voxels/IntersectionUtils.glsl +1 -1
  207. package/Source/Shaders/Voxels/IntersectionUtils.js +1 -1
  208. package/Source/Shaders/Voxels/Megatexture.glsl +15 -83
  209. package/Source/Shaders/Voxels/Megatexture.js +15 -83
  210. package/Source/Shaders/Voxels/Octree.glsl +6 -9
  211. package/Source/Shaders/Voxels/Octree.js +6 -9
  212. package/Source/Widget/CesiumWidget.js +1 -1
  213. package/Source/Workers/incrementallyBuildTerrainPicker.js +16 -2
  214. package/index.d.ts +32 -21
  215. package/index.js +52 -52
  216. package/package.json +4 -3
@@ -4817,7 +4817,7 @@ function DocumentPacket() {
4817
4817
  *
4818
4818
  * @param {string} [name] An optional name for the data source. This value will be overwritten if a loaded document contains a name.
4819
4819
  *
4820
- * @demo {@link https://sandcastle.cesium.com/index.html?src=CZML.html|Cesium Sandcastle CZML Demo}
4820
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=czml|Cesium Sandcastle CZML Demo}
4821
4821
  */
4822
4822
  function CzmlDataSource(name) {
4823
4823
  this._name = name;
@@ -43,7 +43,7 @@ import createPropertyDescriptor from "./createPropertyDescriptor.js";
43
43
  *
44
44
  * @param {EllipseGraphics.ConstructorOptions} [options] Object describing initialization options
45
45
  *
46
- * @demo {@link https://sandcastle.cesium.com/index.html?src=Circles and Ellipses.html|Cesium Sandcastle Circles and Ellipses Demo}
46
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=circles-and-ellipses|Cesium Sandcastle Circles and Ellipses Demo}
47
47
  */
48
48
  function EllipseGraphics(options) {
49
49
  this._definitionChanged = new Event();
@@ -38,7 +38,7 @@ import createPropertyDescriptor from "./createPropertyDescriptor.js";
38
38
  *
39
39
  * @param {EllipsoidGraphics.ConstructorOptions} [options] Object describing initialization options
40
40
  *
41
- * @demo {@link https://sandcastle.cesium.com/index.html?src=Spheres%20and%20Ellipsoids.html|Cesium Sandcastle Spheres and Ellipsoids Demo}
41
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=spheres-and-ellipsoids|Cesium Sandcastle Spheres and Ellipsoids Demo}
42
42
  */
43
43
  function EllipsoidGraphics(options) {
44
44
  this._definitionChanged = new Event();
@@ -302,7 +302,7 @@ Object.defineProperties(Entity.prototype, {
302
302
  },
303
303
  /**
304
304
  * Gets or sets the entity's tracking reference frame.
305
- * @demo {@link https://sandcastle.cesium.com/index.html?src=Entity tracking.html|Cesium Sandcastle Entity tracking Demo}
305
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=entity-tracking|Cesium Sandcastle Entity tracking Demo}
306
306
  *
307
307
  * @memberof Entity.prototype
308
308
  * @type {TrackingReferenceFrame}
@@ -30,7 +30,7 @@ import KDBush from "kdbush";
30
30
  * @alias EntityCluster
31
31
  * @constructor
32
32
  *
33
- * @demo {@link https://sandcastle.cesium.com/index.html?src=Clustering.html|Cesium Sandcastle Clustering Demo}
33
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=clustering|Cesium Sandcastle Clustering Demo}
34
34
  */
35
35
  function EntityCluster(options) {
36
36
  options = options ?? Frozen.EMPTY_OBJECT;
@@ -330,7 +330,7 @@ function createDeclutterCallback(entityCluster) {
330
330
  let collectionIndex;
331
331
 
332
332
  if (points.length > 0) {
333
- const index = new KDBush(points.length, 64, Uint32Array);
333
+ const index = new KDBush(points.length, 64, Float64Array);
334
334
  for (let p = 0; p < points.length; ++p) {
335
335
  index.add(points[p].coord.x, points[p].coord.y);
336
336
  }
@@ -578,8 +578,8 @@ function processTopology(dataSource, geoJson, geometry, crsFunction, options) {
578
578
  * @param {string} [name] The name of this data source. If undefined, a name will be taken from
579
579
  * the name of the GeoJSON file.
580
580
  *
581
- * @demo {@link https://sandcastle.cesium.com/index.html?src=GeoJSON%20and%20TopoJSON.html|Cesium Sandcastle GeoJSON and TopoJSON Demo}
582
- * @demo {@link https://sandcastle.cesium.com/index.html?src=GeoJSON%20simplestyle.html|Cesium Sandcastle GeoJSON simplestyle Demo}
581
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=geojson-and-topojson|Cesium Sandcastle GeoJSON and TopoJSON Demo}
582
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=geojson-simplestyle|Cesium Sandcastle GeoJSON simplestyle Demo}
583
583
  *
584
584
  * @example
585
585
  * const viewer = new Cesium.Viewer('cesiumContainer');
@@ -738,7 +738,7 @@ function load(dataSource, entityCollection, data, options) {
738
738
  * @see {@link http://www.topografix.com/gpx.asp|Topografix GPX Standard}
739
739
  * @see {@link http://www.topografix.com/gpx/1/1/|Topografix GPX Documentation}
740
740
  *
741
- * @demo {@link http://sandcastle.cesium.com/index.html?src=GPX.html}
741
+ * @demo {@link http://sandcastle.cesium.com/index.html?id=gpx}
742
742
  *
743
743
  * @example
744
744
  * const viewer = new Cesium.Viewer('cesiumContainer');
@@ -3518,7 +3518,7 @@ function load(dataSource, entityCollection, data, options) {
3518
3518
  * @see {@link http://www.opengeospatial.org/standards/kml/|Open Geospatial Consortium KML Standard}
3519
3519
  * @see {@link https://developers.google.com/kml/|Google KML Documentation}
3520
3520
  *
3521
- * @demo {@link https://sandcastle.cesium.com/index.html?src=KML.html|Cesium Sandcastle KML Demo}
3521
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=kml|Cesium Sandcastle KML Demo}
3522
3522
  *
3523
3523
  * @example
3524
3524
  * const viewer = new Cesium.Viewer('cesiumContainer');
@@ -14,7 +14,7 @@ import Event from "../Core/Event.js";
14
14
  * @see KmlTourFlyTo
15
15
  * @see KmlTourWait
16
16
  *
17
- * @demo {@link https://sandcastle.cesium.com/?src=KML%20Tours.html|KML Tours}
17
+ * @demo {@link https://sandcastle.cesium.com/?id=kml-tours|KML Tours}
18
18
  */
19
19
  function KmlTour(name, id) {
20
20
  /**
@@ -46,7 +46,7 @@ import createPropertyDescriptor from "./createPropertyDescriptor.js";
46
46
  *
47
47
  * @param {LabelGraphics.ConstructorOptions} [options] Object describing initialization options
48
48
  *
49
- * @demo {@link https://sandcastle.cesium.com/index.html?src=Labels.html|Cesium Sandcastle Labels Demo}
49
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=labels|Cesium Sandcastle Labels Demo}
50
50
  */
51
51
  function LabelGraphics(options) {
52
52
  this._definitionChanged = new Event();
@@ -66,7 +66,7 @@ function createEnvironmentMapPropertyBag(value) {
66
66
  *
67
67
  * @param {ModelGraphics.ConstructorOptions} [options] Object describing initialization options
68
68
  *
69
- * @demo {@link https://sandcastle.cesium.com/index.html?src=3D%20Models.html|Cesium Sandcastle 3D Models Demo}
69
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=3d-models|Cesium Sandcastle 3D Models Demo}
70
70
  */
71
71
  function ModelGraphics(options) {
72
72
  this._definitionChanged = new Event();
@@ -30,7 +30,7 @@ import createPropertyDescriptor from "./createPropertyDescriptor.js";
30
30
  *
31
31
  * @param {PlaneGraphics.ConstructorOptions} [options] Object describing initialization options
32
32
  *
33
- * @demo {@link https://sandcastle.cesium.com/index.html?src=Plane.html|Cesium Sandcastle Plane Demo}
33
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=plane|Cesium Sandcastle Plane Demo}
34
34
  */
35
35
  function PlaneGraphics(options) {
36
36
  this._definitionChanged = new Event();
@@ -55,7 +55,7 @@ function createPolygonHierarchyProperty(value) {
55
55
  * @param {PolygonGraphics.ConstructorOptions} [options] Object describing initialization options
56
56
  *
57
57
  * @see Entity
58
- * @demo {@link https://sandcastle.cesium.com/index.html?src=Polygon.html|Cesium Sandcastle Polygon Demo}
58
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=polygon|Cesium Sandcastle Polygon Demo}
59
59
  */
60
60
  function PolygonGraphics(options) {
61
61
  this._definitionChanged = new Event();
@@ -35,7 +35,7 @@ import createPropertyDescriptor from "./createPropertyDescriptor.js";
35
35
  * @param {PolylineGraphics.ConstructorOptions} [options] Object describing initialization options
36
36
  *
37
37
  * @see Entity
38
- * @demo {@link https://sandcastle.cesium.com/index.html?src=Polyline.html|Cesium Sandcastle Polyline Demo}
38
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=polyline|Cesium Sandcastle Polyline Demo}
39
39
  */
40
40
  function PolylineGraphics(options) {
41
41
  this._definitionChanged = new Event();
@@ -34,7 +34,7 @@ import createPropertyDescriptor from "./createPropertyDescriptor.js";
34
34
  * @param {PolylineVolumeGraphics.ConstructorOptions} [options] Object describing initialization options
35
35
  *
36
36
  * @see Entity
37
- * @demo {@link https://sandcastle.cesium.com/index.html?src=Polyline%20Volume.html|Cesium Sandcastle Polyline Volume Demo}
37
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=polyline-volume|Cesium Sandcastle Polyline Volume Demo}
38
38
  */
39
39
  function PolylineVolumeGraphics(options) {
40
40
  this._definitionChanged = new Event();
@@ -41,7 +41,7 @@ import createPropertyDescriptor from "./createPropertyDescriptor.js";
41
41
  * @param {RectangleGraphics.ConstructorOptions} [options] Object describing initialization options
42
42
  *
43
43
  * @see Entity
44
- * @demo {@link https://sandcastle.cesium.com/index.html?src=Rectangle.html|Cesium Sandcastle Rectangle Demo}
44
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=rectangle|Cesium Sandcastle Rectangle Demo}
45
45
  */
46
46
  function RectangleGraphics(options) {
47
47
  this._definitionChanged = new Event();
@@ -34,7 +34,7 @@ import createPropertyDescriptor from "./createPropertyDescriptor.js";
34
34
  * @param {WallGraphics.ConstructorOptions} [options] Object describing initialization options
35
35
  *
36
36
  * @see Entity
37
- * @demo {@link https://sandcastle.cesium.com/index.html?src=Wall.html|Cesium Sandcastle Wall Demo}
37
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=wall|Cesium Sandcastle Wall Demo}
38
38
  */
39
39
  function WallGraphics(options) {
40
40
  this._definitionChanged = new Event();
@@ -263,7 +263,7 @@ IdManager.prototype.get = function (id) {
263
263
  * @param {boolean} [options.kmz=false] If true KML and external files will be compressed into a kmz file.
264
264
  *
265
265
  * @returns {Promise<exportKmlResultKml|exportKmlResultKmz>} A promise that resolved to an object containing the KML string and a dictionary of external file blobs, or a kmz file as a blob if options.kmz is true.
266
- * @demo {@link https://sandcastle.cesium.com/index.html?src=Export%20KML.html|Cesium Sandcastle KML Export Demo}
266
+ * @demo {@link https://sandcastle.cesium.com/index.html?id=export-kml|Cesium Sandcastle KML Export Demo}
267
267
  * @example
268
268
  * Cesium.exportKml({
269
269
  * entities: entityCollection
@@ -86,32 +86,33 @@ function Context(canvas, options) {
86
86
 
87
87
  ContextLimits._maximumCombinedTextureImageUnits = gl.getParameter(
88
88
  gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS,
89
- ); // min: 8
89
+ );
90
90
  ContextLimits._maximumCubeMapSize = gl.getParameter(
91
91
  gl.MAX_CUBE_MAP_TEXTURE_SIZE,
92
- ); // min: 16
92
+ );
93
93
  ContextLimits._maximumFragmentUniformVectors = gl.getParameter(
94
94
  gl.MAX_FRAGMENT_UNIFORM_VECTORS,
95
- ); // min: 16
95
+ );
96
96
  ContextLimits._maximumTextureImageUnits = gl.getParameter(
97
97
  gl.MAX_TEXTURE_IMAGE_UNITS,
98
- ); // min: 8
98
+ );
99
99
  ContextLimits._maximumRenderbufferSize = gl.getParameter(
100
100
  gl.MAX_RENDERBUFFER_SIZE,
101
- ); // min: 1
102
- ContextLimits._maximumTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE); // min: 64
101
+ );
102
+ ContextLimits._maximumTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);
103
+ ContextLimits._maximum3DTextureSize = gl.getParameter(gl.MAX_3D_TEXTURE_SIZE);
103
104
  ContextLimits._maximumVaryingVectors = gl.getParameter(
104
105
  gl.MAX_VARYING_VECTORS,
105
- ); // min: 8
106
+ );
106
107
  ContextLimits._maximumVertexAttributes = gl.getParameter(
107
108
  gl.MAX_VERTEX_ATTRIBS,
108
- ); // min: 8
109
+ );
109
110
  ContextLimits._maximumVertexTextureImageUnits = gl.getParameter(
110
111
  gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS,
111
- ); // min: 0
112
+ );
112
113
  ContextLimits._maximumVertexUniformVectors = gl.getParameter(
113
114
  gl.MAX_VERTEX_UNIFORM_VECTORS,
114
- ); // min: 128
115
+ );
115
116
 
116
117
  ContextLimits._maximumSamples = this._webgl2
117
118
  ? gl.getParameter(gl.MAX_SAMPLES)
@@ -10,6 +10,7 @@ const ContextLimits = {
10
10
  _maximumTextureImageUnits: 0,
11
11
  _maximumRenderbufferSize: 0,
12
12
  _maximumTextureSize: 0,
13
+ _maximum3DTextureSize: 0,
13
14
  _maximumVaryingVectors: 0,
14
15
  _maximumVertexAttributes: 0,
15
16
  _maximumVertexTextureImageUnits: 0,
@@ -31,11 +32,13 @@ const ContextLimits = {
31
32
  Object.defineProperties(ContextLimits, {
32
33
  /**
33
34
  * The maximum number of texture units that can be used from the vertex and fragment
34
- * shader with this WebGL implementation. The minimum is eight. If both shaders access the
35
- * same texture unit, this counts as two texture units.
35
+ * shader with this WebGL implementation.
36
+ * If both shaders access the same texture unit, this counts as two texture units.
37
+ * The minimum in WebGL2 contexts is 32, or 8 in WebGL1 contexts.
36
38
  * @memberof ContextLimits
37
39
  * @type {number}
38
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>MAX_COMBINED_TEXTURE_IMAGE_UNITS</code>.
40
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>MAX_COMBINED_TEXTURE_IMAGE_UNITS</code>.
41
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es2.0/xhtml/glGet.xml|glGet in OpenGL ES 2.0} for WebGL1 contexts.
39
42
  */
40
43
  maximumCombinedTextureImageUnits: {
41
44
  get: function () {
@@ -45,10 +48,12 @@ Object.defineProperties(ContextLimits, {
45
48
 
46
49
  /**
47
50
  * The approximate maximum cube map width and height supported by this WebGL implementation.
48
- * The minimum is 16, but most desktop and laptop implementations will support much larger sizes like 8,192.
51
+ * The minimum in WebGL2 contexts is 2048, but most desktop and laptop implementations will support much larger sizes like 8192.
52
+ * The minimum in WebGL1 contexts is 16.
49
53
  * @memberof ContextLimits
50
54
  * @type {number}
51
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>MAX_CUBE_MAP_TEXTURE_SIZE</code>.
55
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>MAX_CUBE_MAP_TEXTURE_SIZE</code>.
56
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es2.0/xhtml/glGet.xml|glGet in OpenGL ES 2.0} for WebGL1 contexts.
52
57
  */
53
58
  maximumCubeMapSize: {
54
59
  get: function () {
@@ -58,10 +63,12 @@ Object.defineProperties(ContextLimits, {
58
63
 
59
64
  /**
60
65
  * The maximum number of <code>vec4</code>, <code>ivec4</code>, and <code>bvec4</code>
61
- * uniforms that can be used by a fragment shader with this WebGL implementation. The minimum is 16.
66
+ * uniforms that can be used by a fragment shader with this WebGL implementation.
67
+ * The minimum in WebGL2 contexts is 224, or 16 in WebGL1 contexts.
62
68
  * @memberof ContextLimits
63
69
  * @type {number}
64
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>MAX_FRAGMENT_UNIFORM_VECTORS</code>.
70
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>MAX_FRAGMENT_UNIFORM_VECTORS</code>.
71
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es2.0/xhtml/glGet.xml|glGet in OpenGL ES 2.0} for WebGL1 contexts.
65
72
  */
66
73
  maximumFragmentUniformVectors: {
67
74
  get: function () {
@@ -70,10 +77,12 @@ Object.defineProperties(ContextLimits, {
70
77
  },
71
78
 
72
79
  /**
73
- * The maximum number of texture units that can be used from the fragment shader with this WebGL implementation. The minimum is eight.
80
+ * The maximum number of texture units that can be used from the fragment shader with this WebGL implementation.
81
+ * The minimum in WebGL2 contexts is 16, or 8 in WebGL1 contexts.
74
82
  * @memberof ContextLimits
75
83
  * @type {number}
76
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>MAX_TEXTURE_IMAGE_UNITS</code>.
84
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>MAX_TEXTURE_IMAGE_UNITS</code>.
85
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es2.0/xhtml/glGet.xml|glGet in OpenGL ES 2.0} for WebGL1 contexts.
77
86
  */
78
87
  maximumTextureImageUnits: {
79
88
  get: function () {
@@ -83,10 +92,12 @@ Object.defineProperties(ContextLimits, {
83
92
 
84
93
  /**
85
94
  * The maximum renderbuffer width and height supported by this WebGL implementation.
86
- * The minimum is 16, but most desktop and laptop implementations will support much larger sizes like 8,192.
95
+ * The minimum in WebGL2 contexts is 2048, but most desktop and laptop implementations will support much larger sizes like 8192.
96
+ * The minimum in WebGL1 contexts is 1.
87
97
  * @memberof ContextLimits
88
98
  * @type {number}
89
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>MAX_RENDERBUFFER_SIZE</code>.
99
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>MAX_RENDERBUFFER_SIZE</code>.
100
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es2.0/xhtml/glGet.xml|glGet in OpenGL ES 2.0} for WebGL1 contexts.
90
101
  */
91
102
  maximumRenderbufferSize: {
92
103
  get: function () {
@@ -96,10 +107,12 @@ Object.defineProperties(ContextLimits, {
96
107
 
97
108
  /**
98
109
  * The approximate maximum texture width and height supported by this WebGL implementation.
99
- * The minimum is 64, but most desktop and laptop implementations will support much larger sizes like 8,192.
110
+ * The minimum in WebGL2 contexts is 2048, but most desktop and laptop implementations will support much larger sizes like 8192.
111
+ * The minimum in WebGL1 contexts is 64.
100
112
  * @memberof ContextLimits
101
113
  * @type {number}
102
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>MAX_TEXTURE_SIZE</code>.
114
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>MAX_TEXTURE_SIZE</code>.
115
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es2.0/xhtml/glGet.xml|glGet in OpenGL ES 2.0} for WebGL1 contexts.
103
116
  */
104
117
  maximumTextureSize: {
105
118
  get: function () {
@@ -107,12 +120,27 @@ Object.defineProperties(ContextLimits, {
107
120
  },
108
121
  },
109
122
 
123
+ /**
124
+ * The approximate maximum texture width, height, and depth supported by this WebGL2 implementation.
125
+ * The minimum is 256, but most desktop and laptop implementations will support much larger sizes like 2048.
126
+ * 3D textures are not supported in WebGL1 contexts.
127
+ * @memberof ContextLimits
128
+ * @type {number}
129
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>MAX_3D_TEXTURE_SIZE</code>.
130
+ */
131
+ maximum3DTextureSize: {
132
+ get: function () {
133
+ return ContextLimits._maximum3DTextureSize;
134
+ },
135
+ },
136
+
110
137
  /**
111
138
  * The maximum number of <code>vec4</code> varying variables supported by this WebGL implementation.
112
- * The minimum is eight. Matrices and arrays count as multiple <code>vec4</code>s.
139
+ * The minimum is 15 in WebGL2 contexts, or 8 in WebGL1 contexts. Matrices and arrays count as multiple <code>vec4</code>s.
113
140
  * @memberof ContextLimits
114
141
  * @type {number}
115
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>MAX_VARYING_VECTORS</code>.
142
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>MAX_VARYING_VECTORS</code>.
143
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es2.0/xhtml/glGet.xml|glGet in OpenGL ES 2.0} for WebGL1 contexts.
116
144
  */
117
145
  maximumVaryingVectors: {
118
146
  get: function () {
@@ -121,10 +149,12 @@ Object.defineProperties(ContextLimits, {
121
149
  },
122
150
 
123
151
  /**
124
- * The maximum number of <code>vec4</code> vertex attributes supported by this WebGL implementation. The minimum is eight.
152
+ * The maximum number of <code>vec4</code> vertex attributes supported by this WebGL implementation.
153
+ * The minimum is 16 in WebGL2 contexts, or 8 in WebGL1 contexts.
125
154
  * @memberof ContextLimits
126
155
  * @type {number}
127
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>MAX_VERTEX_ATTRIBS</code>.
156
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>MAX_VERTEX_ATTRIBS</code>.
157
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es2.0/xhtml/glGet.xml|glGet in OpenGL ES 2.0} for WebGL1 contexts.
128
158
  */
129
159
  maximumVertexAttributes: {
130
160
  get: function () {
@@ -134,10 +164,11 @@ Object.defineProperties(ContextLimits, {
134
164
 
135
165
  /**
136
166
  * The maximum number of texture units that can be used from the vertex shader with this WebGL implementation.
137
- * The minimum is zero, which means the GL does not support vertex texture fetch.
167
+ * The minimum is 16 in WebGL2 contexts, or 0 in WebGL1 contexts.
138
168
  * @memberof ContextLimits
139
169
  * @type {number}
140
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>MAX_VERTEX_TEXTURE_IMAGE_UNITS</code>.
170
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>MAX_VERTEX_TEXTURE_IMAGE_UNITS</code>.
171
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es2.0/xhtml/glGet.xml|glGet in OpenGL ES 2.0} for WebGL1 contexts.
141
172
  */
142
173
  maximumVertexTextureImageUnits: {
143
174
  get: function () {
@@ -147,10 +178,12 @@ Object.defineProperties(ContextLimits, {
147
178
 
148
179
  /**
149
180
  * The maximum number of <code>vec4</code>, <code>ivec4</code>, and <code>bvec4</code>
150
- * uniforms that can be used by a vertex shader with this WebGL implementation. The minimum is 16.
181
+ * uniforms that can be used by a vertex shader with this WebGL implementation.
182
+ * The minimum is 256 in WebGL2 contexts, or 128 in WebGL1 contexts.
151
183
  * @memberof ContextLimits
152
184
  * @type {number}
153
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>MAX_VERTEX_UNIFORM_VECTORS</code>.
185
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>MAX_VERTEX_UNIFORM_VECTORS</code>.
186
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es2.0/xhtml/glGet.xml|glGet in OpenGL ES 2.0} for WebGL1 contexts.
154
187
  */
155
188
  maximumVertexUniformVectors: {
156
189
  get: function () {
@@ -159,10 +192,10 @@ Object.defineProperties(ContextLimits, {
159
192
  },
160
193
 
161
194
  /**
162
- * The minimum aliased line width, in pixels, supported by this WebGL implementation. It will be at most one.
195
+ * The minimum aliased line width, in pixels, supported by this WebGL implementation. It will be at most one.
196
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>ALIASED_LINE_WIDTH_RANGE</code>.
163
197
  * @memberof ContextLimits
164
198
  * @type {number}
165
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>ALIASED_LINE_WIDTH_RANGE</code>.
166
199
  */
167
200
  minimumAliasedLineWidth: {
168
201
  get: function () {
@@ -171,10 +204,10 @@ Object.defineProperties(ContextLimits, {
171
204
  },
172
205
 
173
206
  /**
174
- * The maximum aliased line width, in pixels, supported by this WebGL implementation. It will be at least one.
207
+ * The maximum aliased line width, in pixels, supported by this WebGL implementation. It will be at least one.
208
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>ALIASED_LINE_WIDTH_RANGE</code>.
175
209
  * @memberof ContextLimits
176
210
  * @type {number}
177
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>ALIASED_LINE_WIDTH_RANGE</code>.
178
211
  */
179
212
  maximumAliasedLineWidth: {
180
213
  get: function () {
@@ -183,10 +216,10 @@ Object.defineProperties(ContextLimits, {
183
216
  },
184
217
 
185
218
  /**
186
- * The minimum aliased point size, in pixels, supported by this WebGL implementation. It will be at most one.
219
+ * The minimum aliased point size, in pixels, supported by this WebGL implementation. It will be at most one.
220
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>ALIASED_POINT_SIZE_RANGE</code>.
187
221
  * @memberof ContextLimits
188
222
  * @type {number}
189
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>ALIASED_POINT_SIZE_RANGE</code>.
190
223
  */
191
224
  minimumAliasedPointSize: {
192
225
  get: function () {
@@ -195,10 +228,10 @@ Object.defineProperties(ContextLimits, {
195
228
  },
196
229
 
197
230
  /**
198
- * The maximum aliased point size, in pixels, supported by this WebGL implementation. It will be at least one.
231
+ * The maximum aliased point size, in pixels, supported by this WebGL implementation. It will be at least one.
232
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>ALIASED_POINT_SIZE_RANGE</code>.
199
233
  * @memberof ContextLimits
200
234
  * @type {number}
201
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>ALIASED_POINT_SIZE_RANGE</code>.
202
235
  */
203
236
  maximumAliasedPointSize: {
204
237
  get: function () {
@@ -207,10 +240,10 @@ Object.defineProperties(ContextLimits, {
207
240
  },
208
241
 
209
242
  /**
210
- * The maximum supported width of the viewport. It will be at least as large as the visible width of the associated canvas.
243
+ * The maximum supported width of the viewport. It will be at least as large as the visible width of the associated canvas.
244
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>MAX_VIEWPORT_DIMS</code>.
211
245
  * @memberof ContextLimits
212
246
  * @type {number}
213
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>MAX_VIEWPORT_DIMS</code>.
214
247
  */
215
248
  maximumViewportWidth: {
216
249
  get: function () {
@@ -219,10 +252,10 @@ Object.defineProperties(ContextLimits, {
219
252
  },
220
253
 
221
254
  /**
222
- * The maximum supported height of the viewport. It will be at least as large as the visible height of the associated canvas.
255
+ * The maximum supported height of the viewport. It will be at least as large as the visible height of the associated canvas.
256
+ * @see {@link https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGet.xhtml|glGet in OpenGL ES 3.0} with <code>MAX_VIEWPORT_DIMS</code>.
223
257
  * @memberof ContextLimits
224
258
  * @type {number}
225
- * @see {@link https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml|glGet} with <code>MAX_VIEWPORT_DIMS</code>.
226
259
  */
227
260
  maximumViewportHeight: {
228
261
  get: function () {
@@ -153,14 +153,11 @@ function getBuiltinsAndAutomaticUniforms(shaderSource) {
153
153
  }
154
154
 
155
155
  function combineShader(shaderSource, isFragmentShader, context) {
156
- let i;
157
- let length;
158
-
159
156
  // Combine shader sources, generally for pseudo-polymorphism, e.g., czm_getMaterial.
160
157
  let combinedSources = "";
161
158
  const sources = shaderSource.sources;
162
159
  if (defined(sources)) {
163
- for (i = 0, length = sources.length; i < length; ++i) {
160
+ for (let i = 0; i < sources.length; ++i) {
164
161
  // #line needs to be on its own line.
165
162
  combinedSources += `\n#line 0\n${sources[i]}`;
166
163
  }
@@ -225,30 +222,34 @@ function combineShader(shaderSource, isFragmentShader, context) {
225
222
  let result = "";
226
223
 
227
224
  const extensionsLength = extensions.length;
228
- for (i = 0; i < extensionsLength; i++) {
225
+ for (let i = 0; i < extensionsLength; i++) {
229
226
  result += extensions[i];
230
227
  }
231
228
 
232
229
  if (isFragmentShader) {
233
- // If high precision isn't support replace occurrences of highp with mediump
234
- // The highp keyword is not always available on older mobile devices
230
+ // If high precision isn't supported, replace occurrences of highp with mediump.
231
+ // The highp keyword is not always available on older mobile devices.
235
232
  // See https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/WebGL_best_practices#In_WebGL_1_highp_float_support_is_optional_in_fragment_shaders
236
- result +=
237
- "\
238
- #ifdef GL_FRAGMENT_PRECISION_HIGH\n\
239
- precision highp float;\n\
240
- precision highp int;\n\
241
- #else\n\
242
- precision mediump float;\n\
243
- precision mediump int;\n\
244
- #define highp mediump\n\
245
- #endif\n\n";
233
+ result += `
234
+ #ifdef GL_FRAGMENT_PRECISION_HIGH
235
+ precision highp float;
236
+ precision highp int;
237
+ #else
238
+ precision mediump float;
239
+ precision mediump int;
240
+ #define highp mediump
241
+ #endif
242
+ `;
243
+ }
244
+
245
+ if (context.webgl2) {
246
+ result += `precision highp sampler3D;\n\n`;
246
247
  }
247
248
 
248
249
  // Prepend #defines for uber-shaders
249
250
  const defines = shaderSource.defines;
250
251
  if (defined(defines)) {
251
- for (i = 0, length = defines.length; i < length; ++i) {
252
+ for (let i = 0, length = defines.length; i < length; ++i) {
252
253
  const define = defines[i];
253
254
  if (define.length !== 0) {
254
255
  result += `#define ${define}\n`;
@@ -398,7 +398,7 @@ function loadBufferSource(texture, source) {
398
398
  * @param {number} xOffset The texel x coordinate of the lower left corner of the subregion of the texture to be updated.
399
399
  * @param {number} yOffset The texel y coordinate of the lower left corner of the subregion of the texture to be updated.
400
400
  * @param {number} width The width of the source data, in pixels.
401
- * @param {number} width The height of the source data, in pixels.
401
+ * @param {number} height The height of the source data, in pixels.
402
402
  *
403
403
  * @private
404
404
  */