@cesium/engine 6.2.0 → 8.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 (268) hide show
  1. package/Build/ThirdParty/Workers/z-worker-pako.js +568 -407
  2. package/Build/Workers/{chunk-RH4N2ONY.js → chunk-23UFSGND.js} +7 -7
  3. package/Build/Workers/{chunk-HPP4JLNH.js → chunk-2A75IWRS.js} +7 -7
  4. package/Build/Workers/{chunk-5IRLXUTA.js → chunk-2FRVPMCS.js} +10 -10
  5. package/Build/Workers/{chunk-ZQRZBHYI.js → chunk-2FWRMUTY.js} +4 -4
  6. package/Build/Workers/{chunk-Z2SIPUKB.js → chunk-2UPKWTMJ.js} +6 -6
  7. package/Build/Workers/{chunk-434ZTTFX.js → chunk-34FXV7D7.js} +2 -2
  8. package/Build/Workers/{chunk-MW3CJYLX.js → chunk-3VAZEH7M.js} +2 -2
  9. package/Build/Workers/{chunk-HUPNRBWW.js → chunk-4DO5W5XZ.js} +6 -6
  10. package/Build/Workers/{chunk-PIXK6KHB.js → chunk-4H7PY4U5.js} +2 -2
  11. package/Build/Workers/{chunk-BP467WX3.js → chunk-5QULIR53.js} +4 -4
  12. package/Build/Workers/{chunk-R3HUGXBH.js → chunk-7TC63SJW.js} +8 -8
  13. package/Build/Workers/{chunk-SQVTYRZY.js → chunk-7ZFGPDJA.js} +4 -4
  14. package/Build/Workers/{chunk-TIXXVKUY.js → chunk-A5DWLWCY.js} +10 -10
  15. package/Build/Workers/{chunk-CWJQGBWT.js → chunk-BBWDMCVU.js} +1 -1
  16. package/Build/Workers/{chunk-4KP73B43.js → chunk-BG4UCVXN.js} +3 -3
  17. package/Build/Workers/{chunk-Y4OJ4B23.js → chunk-BIKA3NRA.js} +5 -5
  18. package/Build/Workers/{chunk-DR5XZ6K5.js → chunk-BROJAZRZ.js} +13 -13
  19. package/Build/Workers/{chunk-FWGNCYP6.js → chunk-DDUQAJ4P.js} +7 -7
  20. package/Build/Workers/{chunk-QRBRVGZC.js → chunk-EERJKOAF.js} +4 -4
  21. package/Build/Workers/{chunk-52VSIKEA.js → chunk-EG6PTBY2.js} +15 -15
  22. package/Build/Workers/{chunk-O43GWBSF.js → chunk-EHWHNOEX.js} +1 -1
  23. package/Build/Workers/{chunk-MN34FIF5.js → chunk-F3YA3Y2Z.js} +1 -1
  24. package/Build/Workers/{chunk-GF5TNNKP.js → chunk-F4HFJMGM.js} +6 -6
  25. package/Build/Workers/{chunk-HOT2SNXP.js → chunk-FJKNFAKQ.js} +133 -553
  26. package/Build/Workers/{chunk-TMPVBFJQ.js → chunk-FNIRWHJB.js} +10 -10
  27. package/Build/Workers/{chunk-DMCSY5BU.js → chunk-FZRIVR7Y.js} +5 -5
  28. package/Build/Workers/{chunk-Z4JUBRHP.js → chunk-G43QFN4Q.js} +6 -6
  29. package/Build/Workers/{chunk-HPH5HSFE.js → chunk-GATZHF3K.js} +2 -2
  30. package/Build/Workers/{chunk-CSIZ3BGT.js → chunk-GRC2ZTAF.js} +14 -14
  31. package/Build/Workers/{chunk-NE4JNU6H.js → chunk-HU6N6EXB.js} +10 -10
  32. package/Build/Workers/{chunk-GVL5I7TC.js → chunk-I46ZRR5W.js} +17 -17
  33. package/Build/Workers/{chunk-5GDBZTHX.js → chunk-JURN7NPV.js} +17 -17
  34. package/Build/Workers/{chunk-H5DUXHCV.js → chunk-KKCR2YOP.js} +11 -11
  35. package/Build/Workers/{chunk-LX6XV4DK.js → chunk-LPR3YNP2.js} +5 -5
  36. package/Build/Workers/{chunk-HFKSAB5K.js → chunk-M7ERACJJ.js} +13 -13
  37. package/Build/Workers/{chunk-BUZDZBUH.js → chunk-MDWEGWPA.js} +10 -10
  38. package/Build/Workers/{chunk-LGJUI2CE.js → chunk-OGXZVPPM.js} +9 -5
  39. package/Build/Workers/{chunk-PZ2WJWUG.js → chunk-PGSJK77E.js} +6 -6
  40. package/Build/Workers/{chunk-ARPTYYKS.js → chunk-PPH7OFP3.js} +5 -5
  41. package/Build/Workers/{chunk-R4OZKBXH.js → chunk-SH5USDPI.js} +6 -6
  42. package/Build/Workers/{chunk-SV7DDPAC.js → chunk-SOWMRMWA.js} +1 -1
  43. package/Build/Workers/{chunk-RIDPF7PO.js → chunk-STW2DGFI.js} +2 -2
  44. package/Build/Workers/{chunk-CDGHUKQ4.js → chunk-T3XIFPYR.js} +13 -13
  45. package/Build/Workers/chunk-TTUZP4BO.js +501 -0
  46. package/Build/Workers/{chunk-QTZQZY2C.js → chunk-UEXTBDBE.js} +34 -10
  47. package/Build/Workers/{chunk-XUTVA4K5.js → chunk-VOXYEYJT.js} +11 -11
  48. package/Build/Workers/{chunk-AXFRNOVC.js → chunk-X4356LRH.js} +12 -12
  49. package/Build/Workers/{chunk-5HLGKKG3.js → chunk-XGI5BXZY.js} +2 -2
  50. package/Build/Workers/{chunk-SNN7WOC2.js → chunk-Y2ME2IJV.js} +13 -13
  51. package/Build/Workers/{chunk-LGL4P5KL.js → chunk-Y5UQJLYE.js} +6 -6
  52. package/Build/Workers/{chunk-3PW6ZBN4.js → chunk-YJEBABKH.js} +7 -7
  53. package/Build/Workers/{chunk-YBKFS53K.js → chunk-YWTJ2B4B.js} +1 -1
  54. package/Build/Workers/{chunk-5SK36PU4.js → chunk-Z3TIFFGF.js} +7 -7
  55. package/Build/Workers/{chunk-JGG36SQV.js → chunk-ZT7KWISZ.js} +4 -4
  56. package/Build/Workers/combineGeometry.js +24 -23
  57. package/Build/Workers/createBoxGeometry.js +18 -17
  58. package/Build/Workers/createBoxOutlineGeometry.js +16 -15
  59. package/Build/Workers/createCircleGeometry.js +26 -25
  60. package/Build/Workers/createCircleOutlineGeometry.js +19 -18
  61. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -32
  62. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -30
  63. package/Build/Workers/createCorridorGeometry.js +29 -29
  64. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  65. package/Build/Workers/createCylinderGeometry.js +20 -19
  66. package/Build/Workers/createCylinderOutlineGeometry.js +18 -17
  67. package/Build/Workers/createEllipseGeometry.js +26 -25
  68. package/Build/Workers/createEllipseOutlineGeometry.js +19 -18
  69. package/Build/Workers/createEllipsoidGeometry.js +19 -18
  70. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -17
  71. package/Build/Workers/createFrustumGeometry.js +18 -17
  72. package/Build/Workers/createFrustumOutlineGeometry.js +18 -17
  73. package/Build/Workers/createGeometry.js +54 -33
  74. package/Build/Workers/createGroundPolylineGeometry.js +22 -21
  75. package/Build/Workers/createPlaneGeometry.js +16 -15
  76. package/Build/Workers/createPlaneOutlineGeometry.js +15 -14
  77. package/Build/Workers/createPolygonGeometry.js +32 -166
  78. package/Build/Workers/createPolygonOutlineGeometry.js +30 -29
  79. package/Build/Workers/createPolylineGeometry.js +25 -24
  80. package/Build/Workers/createPolylineVolumeGeometry.js +32 -33
  81. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  82. package/Build/Workers/createRectangleGeometry.js +27 -26
  83. package/Build/Workers/createRectangleOutlineGeometry.js +20 -19
  84. package/Build/Workers/createSimplePolylineGeometry.js +23 -22
  85. package/Build/Workers/createSphereGeometry.js +19 -18
  86. package/Build/Workers/createSphereOutlineGeometry.js +18 -17
  87. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  88. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  89. package/Build/Workers/createVectorTileGeometries.js +24 -23
  90. package/Build/Workers/createVectorTilePoints.js +12 -12
  91. package/Build/Workers/createVectorTilePolygons.js +22 -21
  92. package/Build/Workers/createVectorTilePolylines.js +14 -14
  93. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -21
  94. package/Build/Workers/createVerticesFromHeightmap.js +22 -21
  95. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -18
  96. package/Build/Workers/createWallGeometry.js +24 -23
  97. package/Build/Workers/createWallOutlineGeometry.js +23 -22
  98. package/Build/Workers/decodeDraco.js +11 -11
  99. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  100. package/Build/Workers/decodeI3S.js +601 -92
  101. package/Build/Workers/transcodeKTX2.js +7 -7
  102. package/Build/Workers/transferTypedArrayTest.js +1 -1
  103. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -21
  104. package/LICENSE.md +1 -1
  105. package/Source/Assets/approximateTerrainHeights.json +1 -1
  106. package/Source/Core/Ellipsoid.js +6 -0
  107. package/Source/Core/GregorianDate.js +85 -0
  108. package/Source/Core/HeadingPitchRange.js +2 -2
  109. package/Source/Core/IntersectionTests.js +6 -3
  110. package/Source/Core/Ion.js +1 -1
  111. package/Source/Core/PixelFormat.js +5 -0
  112. package/Source/Core/PolygonGeometry.js +0 -169
  113. package/Source/Core/Resource.js +30 -69
  114. package/Source/Core/Transforms.js +30 -18
  115. package/Source/Core/createWorldBathymetryAsync.js +45 -0
  116. package/Source/Core/srgbToLinear.js +32 -0
  117. package/Source/DataSources/CzmlDataSource.js +51 -23
  118. package/Source/DataSources/DataSourceDisplay.js +27 -0
  119. package/Source/DataSources/EllipsoidGeometryUpdater.js +3 -4
  120. package/Source/DataSources/Entity.js +28 -7
  121. package/Source/DataSources/EntityCollection.js +1 -2
  122. package/Source/DataSources/GeometryUpdater.js +1 -2
  123. package/Source/DataSources/GeometryUpdaterSet.js +114 -0
  124. package/Source/DataSources/GeometryVisualizer.js +19 -83
  125. package/Source/DataSources/GroundGeometryUpdater.js +6 -3
  126. package/Source/DataSources/ModelVisualizer.js +19 -98
  127. package/Source/DataSources/PolygonGeometryUpdater.js +14 -2
  128. package/Source/DataSources/PolylineGeometryUpdater.js +9 -8
  129. package/Source/DataSources/TerrainOffsetProperty.js +15 -23
  130. package/Source/Renderer/AutomaticUniforms.js +121 -1
  131. package/Source/Renderer/Context.js +10 -0
  132. package/Source/Renderer/ContextLimits.js +2 -0
  133. package/Source/Renderer/UniformState.js +127 -0
  134. package/Source/Renderer/demodernizeShader.js +4 -1
  135. package/Source/Scene/ArcGisMapService.js +1 -1
  136. package/Source/Scene/Atmosphere.js +127 -0
  137. package/Source/Scene/Axis.js +12 -7
  138. package/Source/Scene/Billboard.js +29 -26
  139. package/Source/Scene/BillboardCollection.js +3 -3
  140. package/Source/Scene/Camera.js +47 -5
  141. package/Source/Scene/Cesium3DTile.js +1 -0
  142. package/Source/Scene/Cesium3DTileContent.js +14 -0
  143. package/Source/Scene/Cesium3DTileset.js +364 -45
  144. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +2 -4
  145. package/Source/Scene/Cesium3DTilesetTraversal.js +4 -0
  146. package/Source/Scene/Composite3DTileContent.js +42 -0
  147. package/Source/Scene/DynamicAtmosphereLightingType.js +56 -0
  148. package/Source/Scene/Empty3DTileContent.js +4 -0
  149. package/Source/Scene/Fog.js +1 -0
  150. package/Source/Scene/FrameState.js +14 -1
  151. package/Source/Scene/Geometry3DTileContent.js +4 -0
  152. package/Source/Scene/Globe.js +3 -2
  153. package/Source/Scene/GlobeSurfaceTileProvider.js +3 -1
  154. package/Source/Scene/GlobeTranslucencyState.js +1 -1
  155. package/Source/Scene/GltfLoader.js +15 -5
  156. package/Source/Scene/GltfPipeline/updateVersion.js +69 -68
  157. package/Source/Scene/HeightReference.js +59 -2
  158. package/Source/Scene/I3SDataProvider.js +270 -53
  159. package/Source/Scene/I3SDecoder.js +8 -1
  160. package/Source/Scene/I3SFeature.js +2 -5
  161. package/Source/Scene/I3SField.js +136 -31
  162. package/Source/Scene/I3SGeometry.js +70 -2
  163. package/Source/Scene/I3SLayer.js +55 -10
  164. package/Source/Scene/I3SNode.js +175 -18
  165. package/Source/Scene/I3SStatistics.js +94 -0
  166. package/Source/Scene/I3SSublayer.js +176 -0
  167. package/Source/Scene/I3SSymbology.js +337 -0
  168. package/Source/Scene/Implicit3DTileContent.js +4 -0
  169. package/Source/Scene/KeyframeNode.js +1 -1
  170. package/Source/Scene/LabelCollection.js +2 -2
  171. package/Source/Scene/Model/AtmospherePipelineStage.js +59 -0
  172. package/Source/Scene/Model/B3dmLoader.js +4 -0
  173. package/Source/Scene/Model/FeatureIdPipelineStage.js +25 -2
  174. package/Source/Scene/Model/I3dmLoader.js +4 -0
  175. package/Source/Scene/Model/InstancingPipelineStage.js +24 -6
  176. package/Source/Scene/Model/MetadataPipelineStage.js +31 -3
  177. package/Source/Scene/Model/Model.js +82 -32
  178. package/Source/Scene/Model/Model3DTileContent.js +31 -0
  179. package/Source/Scene/Model/ModelAnimationChannel.js +16 -15
  180. package/Source/Scene/Model/ModelSceneGraph.js +6 -0
  181. package/Source/Scene/Model/pickModel.js +426 -0
  182. package/Source/Scene/Multiple3DTileContent.js +42 -0
  183. package/Source/Scene/PickFramebuffer.js +37 -2
  184. package/Source/Scene/Picking.js +113 -39
  185. package/Source/Scene/Primitive.js +6 -2
  186. package/Source/Scene/QuadtreePrimitive.js +1 -1
  187. package/Source/Scene/Scene.js +312 -46
  188. package/Source/Scene/ScreenSpaceCameraController.js +23 -13
  189. package/Source/Scene/SensorVolumePortionToDisplay.js +69 -0
  190. package/Source/Scene/SkyAtmosphere.js +5 -6
  191. package/Source/Scene/SpatialNode.js +12 -19
  192. package/Source/Scene/StructuralMetadata.js +1 -1
  193. package/Source/Scene/Terrain.js +49 -0
  194. package/Source/Scene/TileBoundingS2Cell.js +2 -2
  195. package/Source/Scene/Tileset3DTileContent.js +4 -0
  196. package/Source/Scene/Vector3DTileContent.js +4 -0
  197. package/Source/Scene/VoxelBoxShape.js +76 -0
  198. package/Source/Scene/VoxelCell.js +273 -0
  199. package/Source/Scene/VoxelCylinderShape.js +114 -43
  200. package/Source/Scene/VoxelEllipsoidShape.js +158 -116
  201. package/Source/Scene/VoxelPrimitive.js +3 -1
  202. package/Source/Scene/VoxelRenderResources.js +3 -0
  203. package/Source/Scene/VoxelShape.js +13 -0
  204. package/Source/Scene/VoxelTraversal.js +76 -54
  205. package/Source/Scene/buildVoxelDrawCommands.js +23 -0
  206. package/Source/Scene/createGooglePhotorealistic3DTileset.js +1 -0
  207. package/Source/Scene/processVoxelProperties.js +2 -0
  208. package/Source/Shaders/AtmosphereCommon.glsl +3 -11
  209. package/Source/Shaders/AtmosphereCommon.js +3 -11
  210. package/Source/Shaders/Builtin/CzmBuiltins.js +12 -0
  211. package/Source/Shaders/Builtin/Functions/applyHSBShift.glsl +32 -0
  212. package/Source/Shaders/Builtin/Functions/applyHSBShift.js +34 -0
  213. package/Source/Shaders/Builtin/Functions/approximateTanh.glsl +10 -0
  214. package/Source/Shaders/Builtin/Functions/approximateTanh.js +12 -0
  215. package/Source/Shaders/Builtin/Functions/computeAtmosphereColor.glsl +44 -0
  216. package/Source/Shaders/Builtin/Functions/computeAtmosphereColor.js +46 -0
  217. package/Source/Shaders/Builtin/Functions/computeGroundAtmosphereScattering.glsl +30 -0
  218. package/Source/Shaders/Builtin/Functions/computeGroundAtmosphereScattering.js +32 -0
  219. package/Source/Shaders/Builtin/Functions/computeScattering.glsl +150 -0
  220. package/Source/Shaders/Builtin/Functions/computeScattering.js +152 -0
  221. package/Source/Shaders/Builtin/Functions/getDynamicAtmosphereLightDirection.glsl +22 -0
  222. package/Source/Shaders/Builtin/Functions/getDynamicAtmosphereLightDirection.js +24 -0
  223. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.glsl +5 -0
  224. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.js +5 -0
  225. package/Source/Shaders/GlobeFS.glsl +16 -25
  226. package/Source/Shaders/GlobeFS.js +16 -25
  227. package/Source/Shaders/GlobeVS.glsl +1 -1
  228. package/Source/Shaders/GlobeVS.js +1 -1
  229. package/Source/Shaders/Model/AtmosphereStageFS.glsl +111 -0
  230. package/Source/Shaders/Model/AtmosphereStageFS.js +113 -0
  231. package/Source/Shaders/Model/AtmosphereStageVS.glsl +12 -0
  232. package/Source/Shaders/Model/AtmosphereStageVS.js +14 -0
  233. package/Source/Shaders/Model/GeometryStageFS.glsl +1 -1
  234. package/Source/Shaders/Model/GeometryStageFS.js +1 -1
  235. package/Source/Shaders/Model/GeometryStageVS.glsl +4 -4
  236. package/Source/Shaders/Model/GeometryStageVS.js +4 -4
  237. package/Source/Shaders/Model/ModelColorStageFS.glsl +1 -1
  238. package/Source/Shaders/Model/ModelColorStageFS.js +2 -1
  239. package/Source/Shaders/Model/ModelFS.glsl +4 -0
  240. package/Source/Shaders/Model/ModelFS.js +4 -0
  241. package/Source/Shaders/Model/ModelVS.glsl +9 -4
  242. package/Source/Shaders/Model/ModelVS.js +9 -4
  243. package/Source/Shaders/SkyAtmosphereCommon.glsl +3 -13
  244. package/Source/Shaders/SkyAtmosphereCommon.js +3 -13
  245. package/Source/Shaders/SkyAtmosphereFS.glsl +5 -10
  246. package/Source/Shaders/SkyAtmosphereFS.js +5 -10
  247. package/Source/Shaders/SkyAtmosphereVS.glsl +3 -2
  248. package/Source/Shaders/SkyAtmosphereVS.js +3 -2
  249. package/Source/Shaders/Voxels/IntersectCylinder.glsl +14 -111
  250. package/Source/Shaders/Voxels/IntersectCylinder.js +14 -111
  251. package/Source/Shaders/Voxels/IntersectEllipsoid.glsl +32 -113
  252. package/Source/Shaders/Voxels/IntersectEllipsoid.js +32 -113
  253. package/Source/Shaders/Voxels/IntersectLongitude.glsl +102 -0
  254. package/Source/Shaders/Voxels/IntersectLongitude.js +104 -0
  255. package/Source/Shaders/Voxels/VoxelFS.glsl +39 -1
  256. package/Source/Shaders/Voxels/VoxelFS.js +39 -1
  257. package/Source/Shaders/Voxels/convertUvToCylinder.glsl +19 -37
  258. package/Source/Shaders/Voxels/convertUvToCylinder.js +19 -37
  259. package/Source/Shaders/Voxels/convertUvToEllipsoid.glsl +24 -44
  260. package/Source/Shaders/Voxels/convertUvToEllipsoid.js +24 -44
  261. package/Source/ThirdParty/Workers/z-worker-pako.js +1 -1
  262. package/Source/ThirdParty/draco_decoder.wasm +0 -0
  263. package/Source/Workers/createGeometry.js +40 -11
  264. package/Source/Workers/decodeI3S.js +720 -94
  265. package/index.d.ts +574 -71
  266. package/index.js +217 -196
  267. package/package.json +3 -3
  268. package/Build/Workers/chunk-ATB2I7OS.js +0 -55
@@ -236,30 +236,38 @@ let scratchRectangle = new BoundingRectangle(
236
236
  const scratchPosition = new Cartesian2();
237
237
  const scratchColorZero = new Color(0.0, 0.0, 0.0, 0.0);
238
238
 
239
+ /**
240
+ * Returns an object with a <code>primitive</code> property that contains the first (top) primitive in the scene
241
+ * at a particular window coordinate or undefined if nothing is at the location. Other properties may
242
+ * potentially be set depending on the type of primitive and may be used to further identify the picked object.
243
+ * <p>
244
+ * When a feature of a 3D Tiles tileset is picked, <code>pick</code> returns a {@link Cesium3DTileFeature} object.
245
+ * </p>
246
+ * @param {Scene} scene
247
+ * @param {Cartesian2} windowPosition Window coordinates to perform picking on.
248
+ * @param {number} [width=3] Width of the pick rectangle.
249
+ * @param {number} [height=3] Height of the pick rectangle.
250
+ * @returns {object} Object containing the picked primitive.
251
+ */
239
252
  Picking.prototype.pick = function (scene, windowPosition, width, height) {
240
253
  //>>includeStart('debug', pragmas.debug);
241
- if (!defined(windowPosition)) {
242
- throw new DeveloperError("windowPosition is undefined.");
243
- }
254
+ Check.defined("windowPosition", windowPosition);
244
255
  //>>includeEnd('debug');
245
256
 
246
257
  scratchRectangleWidth = defaultValue(width, 3.0);
247
258
  scratchRectangleHeight = defaultValue(height, scratchRectangleWidth);
248
259
 
249
- const context = scene.context;
250
- const us = context.uniformState;
251
- const frameState = scene.frameState;
260
+ const { context, frameState, defaultView } = scene;
261
+ const { viewport, pickFramebuffer } = defaultView;
252
262
 
253
- const view = scene.defaultView;
254
- scene.view = view;
263
+ scene.view = defaultView;
255
264
 
256
- const viewport = view.viewport;
257
265
  viewport.x = 0;
258
266
  viewport.y = 0;
259
267
  viewport.width = context.drawingBufferWidth;
260
268
  viewport.height = context.drawingBufferHeight;
261
269
 
262
- let passState = view.passState;
270
+ let passState = defaultView.passState;
263
271
  passState.viewport = BoundingRectangle.clone(viewport, passState.viewport);
264
272
 
265
273
  const drawingBufferPosition = SceneTransforms.transformWindowToDrawingBuffer(
@@ -282,7 +290,7 @@ Picking.prototype.pick = function (scene, windowPosition, width, height) {
282
290
  frameState.passes.pick = true;
283
291
  frameState.tilesetPassState = pickTilesetPassState;
284
292
 
285
- us.update(frameState);
293
+ context.uniformState.update(frameState);
286
294
 
287
295
  scene.updateEnvironment();
288
296
 
@@ -294,32 +302,108 @@ Picking.prototype.pick = function (scene, windowPosition, width, height) {
294
302
  (scratchRectangleHeight - 1.0) * 0.5;
295
303
  scratchRectangle.width = scratchRectangleWidth;
296
304
  scratchRectangle.height = scratchRectangleHeight;
297
- passState = view.pickFramebuffer.begin(scratchRectangle, view.viewport);
305
+ passState = pickFramebuffer.begin(scratchRectangle, viewport);
298
306
 
299
307
  scene.updateAndExecuteCommands(passState, scratchColorZero);
300
308
  scene.resolveFramebuffers(passState);
301
309
 
302
- const object = view.pickFramebuffer.end(scratchRectangle);
310
+ const object = pickFramebuffer.end(scratchRectangle);
303
311
  context.endFrame();
304
312
  return object;
305
313
  };
306
314
 
315
+ /**
316
+ * Returns an object with information about the voxel sample rendered at
317
+ * a particular window coordinate. Returns <code>undefined</code> if there is no
318
+ * voxel at that position.
319
+ *
320
+ * @param {Scene} scene
321
+ * @param {Cartesian2} windowPosition Window coordinates to perform picking on.
322
+ * @param {number} [width=3] Width of the pick rectangle.
323
+ * @param {number} [height=3] Height of the pick rectangle.
324
+ * @returns {object|undefined} Object containing the picked primitive.
325
+ */
326
+ Picking.prototype.pickVoxelCoordinate = function (
327
+ scene,
328
+ windowPosition,
329
+ width,
330
+ height
331
+ ) {
332
+ //>>includeStart('debug', pragmas.debug);
333
+ Check.defined("windowPosition", windowPosition);
334
+ //>>includeEnd('debug');
335
+
336
+ scratchRectangleWidth = defaultValue(width, 3.0);
337
+ scratchRectangleHeight = defaultValue(height, scratchRectangleWidth);
338
+
339
+ const { context, frameState, defaultView } = scene;
340
+ const { viewport, pickFramebuffer } = defaultView;
341
+
342
+ scene.view = defaultView;
343
+
344
+ viewport.x = 0;
345
+ viewport.y = 0;
346
+ viewport.width = context.drawingBufferWidth;
347
+ viewport.height = context.drawingBufferHeight;
348
+
349
+ let passState = defaultView.passState;
350
+ passState.viewport = BoundingRectangle.clone(viewport, passState.viewport);
351
+
352
+ const drawingBufferPosition = SceneTransforms.transformWindowToDrawingBuffer(
353
+ scene,
354
+ windowPosition,
355
+ scratchPosition
356
+ );
357
+
358
+ scene.jobScheduler.disableThisFrame();
359
+
360
+ scene.updateFrameState();
361
+ frameState.cullingVolume = getPickCullingVolume(
362
+ scene,
363
+ drawingBufferPosition,
364
+ scratchRectangleWidth,
365
+ scratchRectangleHeight,
366
+ viewport
367
+ );
368
+ frameState.invertClassification = false;
369
+ frameState.passes.pickVoxel = true;
370
+ frameState.tilesetPassState = pickTilesetPassState;
371
+
372
+ context.uniformState.update(frameState);
373
+
374
+ scene.updateEnvironment();
375
+
376
+ scratchRectangle.x =
377
+ drawingBufferPosition.x - (scratchRectangleWidth - 1.0) * 0.5;
378
+ scratchRectangle.y =
379
+ scene.drawingBufferHeight -
380
+ drawingBufferPosition.y -
381
+ (scratchRectangleHeight - 1.0) * 0.5;
382
+ scratchRectangle.width = scratchRectangleWidth;
383
+ scratchRectangle.height = scratchRectangleHeight;
384
+ passState = pickFramebuffer.begin(scratchRectangle, viewport);
385
+
386
+ scene.updateAndExecuteCommands(passState, scratchColorZero);
387
+ scene.resolveFramebuffers(passState);
388
+
389
+ const voxelInfo = pickFramebuffer.readVoxelInfo(scratchRectangle);
390
+ context.endFrame();
391
+ return voxelInfo;
392
+ };
393
+
307
394
  function renderTranslucentDepthForPick(scene, drawingBufferPosition) {
308
395
  // PERFORMANCE_IDEA: render translucent only and merge with the previous frame
309
- const context = scene.context;
310
- const frameState = scene.frameState;
311
- const environmentState = scene.environmentState;
396
+ const { defaultView, context, frameState, environmentState } = scene;
397
+ const { viewport, pickDepthFramebuffer } = defaultView;
312
398
 
313
- const view = scene.defaultView;
314
- scene.view = view;
399
+ scene.view = defaultView;
315
400
 
316
- const viewport = view.viewport;
317
401
  viewport.x = 0;
318
402
  viewport.y = 0;
319
403
  viewport.width = context.drawingBufferWidth;
320
404
  viewport.height = context.drawingBufferHeight;
321
405
 
322
- let passState = view.passState;
406
+ let passState = defaultView.passState;
323
407
  passState.viewport = BoundingRectangle.clone(viewport, passState.viewport);
324
408
 
325
409
  scene.clearPasses(frameState.passes);
@@ -336,7 +420,7 @@ function renderTranslucentDepthForPick(scene, drawingBufferPosition) {
336
420
 
337
421
  scene.updateEnvironment();
338
422
  environmentState.renderTranslucentDepthForPick = true;
339
- passState = view.pickDepthFramebuffer.update(
423
+ passState = pickDepthFramebuffer.update(
340
424
  context,
341
425
  drawingBufferPosition,
342
426
  viewport
@@ -363,9 +447,7 @@ Picking.prototype.pickPositionWorldCoordinates = function (
363
447
  }
364
448
 
365
449
  //>>includeStart('debug', pragmas.debug);
366
- if (!defined(windowPosition)) {
367
- throw new DeveloperError("windowPosition is undefined.");
368
- }
450
+ Check.defined("windowPosition", windowPosition);
369
451
  if (!scene.context.depthTexture) {
370
452
  throw new DeveloperError(
371
453
  "Picking from the depth buffer is not supported. Check pickPositionSupported."
@@ -382,12 +464,10 @@ Picking.prototype.pickPositionWorldCoordinates = function (
382
464
  return Cartesian3.clone(this._pickPositionCache[cacheKey], result);
383
465
  }
384
466
 
385
- const frameState = scene.frameState;
386
- const context = scene.context;
387
- const uniformState = context.uniformState;
467
+ const { context, frameState, camera, defaultView } = scene;
468
+ const { uniformState } = context;
388
469
 
389
- const view = scene.defaultView;
390
- scene.view = view;
470
+ scene.view = defaultView;
391
471
 
392
472
  const drawingBufferPosition = SceneTransforms.transformWindowToDrawingBuffer(
393
473
  scene,
@@ -403,8 +483,6 @@ Picking.prototype.pickPositionWorldCoordinates = function (
403
483
  }
404
484
  drawingBufferPosition.y = scene.drawingBufferHeight - drawingBufferPosition.y;
405
485
 
406
- const camera = scene.camera;
407
-
408
486
  // Create a working frustum from the original camera frustum.
409
487
  let frustum;
410
488
  if (defined(camera.frustum.fov)) {
@@ -417,7 +495,7 @@ Picking.prototype.pickPositionWorldCoordinates = function (
417
495
  frustum = camera.frustum.clone(scratchOrthographicOffCenterFrustum);
418
496
  }
419
497
 
420
- const frustumCommandsList = view.frustumCommandsList;
498
+ const frustumCommandsList = defaultView.frustumCommandsList;
421
499
  const numFrustums = frustumCommandsList.length;
422
500
  for (let i = 0; i < numFrustums; ++i) {
423
501
  const pickDepth = this.getPickDepth(scene, i);
@@ -636,9 +714,7 @@ function updateOffscreenCameraFromRay(picking, ray, width, camera) {
636
714
  function updateMostDetailedRayPick(picking, scene, rayPick) {
637
715
  const frameState = scene.frameState;
638
716
 
639
- const ray = rayPick.ray;
640
- const width = rayPick.width;
641
- const tilesets = rayPick.tilesets;
717
+ const { ray, width, tilesets } = rayPick;
642
718
 
643
719
  const camera = picking._pickOffscreenView.camera;
644
720
  const cullingVolume = updateOffscreenCameraFromRay(
@@ -682,8 +758,7 @@ Picking.prototype.updateMostDetailedRayPicks = function (scene) {
682
758
  };
683
759
 
684
760
  function getTilesets(primitives, objectsToExclude, tilesets) {
685
- const length = primitives.length;
686
- for (let i = 0; i < length; ++i) {
761
+ for (let i = 0; i < primitives.length; ++i) {
687
762
  const primitive = primitives.get(i);
688
763
  if (primitive.show) {
689
764
  if (defined(primitive.isCesium3DTileset)) {
@@ -745,9 +820,8 @@ function getRayIntersection(
745
820
  requirePosition,
746
821
  mostDetailed
747
822
  ) {
748
- const context = scene.context;
823
+ const { context, frameState } = scene;
749
824
  const uniformState = context.uniformState;
750
- const frameState = scene.frameState;
751
825
 
752
826
  const view = picking._pickOffscreenView;
753
827
  scene.view = view;
@@ -1174,15 +1174,19 @@ function loadAsynchronous(primitive, frameState) {
1174
1174
  instanceIds.push(instances[i].id);
1175
1175
 
1176
1176
  //>>includeStart('debug', pragmas.debug);
1177
- if (!defined(geometry._workerName)) {
1177
+ if (
1178
+ (defined(geometry._workerName) && defined(geometry._workerPath)) ||
1179
+ (!defined(geometry._workerName) && !defined(geometry._workerPath))
1180
+ ) {
1178
1181
  throw new DeveloperError(
1179
- "_workerName must be defined for asynchronous geometry."
1182
+ "Must define either _workerName or _workerPath for asynchronous geometry."
1180
1183
  );
1181
1184
  }
1182
1185
  //>>includeEnd('debug');
1183
1186
 
1184
1187
  subTasks.push({
1185
1188
  moduleName: geometry._workerName,
1189
+ modulePath: geometry._workerPath,
1186
1190
  geometry: geometry,
1187
1191
  });
1188
1192
  }
@@ -274,7 +274,7 @@ QuadtreePrimitive.prototype.forEachRenderedTile = function (tileFunction) {
274
274
  * is the cartesian position on the tile.
275
275
  *
276
276
  * @param {Cartographic} cartographic The cartographic position.
277
- * @param {Function} callback The function to be called when a new tile is loaded containing cartographic.
277
+ * @param {Function} callback The function to be called when a new tile is loaded containing the updated cartographic.
278
278
  * @returns {Function} The function to remove this callback from the quadtree.
279
279
  */
280
280
  QuadtreePrimitive.prototype.updateHeight = function (cartographic, callback) {