@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
@@ -115,27 +115,20 @@ function VoxelEllipsoidShape() {
115
115
  ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE: undefined,
116
116
  ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO: undefined,
117
117
  ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF: undefined,
118
- ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_HALF: undefined,
119
118
  ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF: undefined,
120
119
  ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY: undefined,
121
120
  ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY: undefined,
122
121
  ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE: undefined,
123
- ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO: undefined,
124
122
  ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED: undefined,
125
- ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE: undefined,
126
123
  ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF: undefined,
127
124
  ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF: undefined,
128
125
  ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF: undefined,
129
126
  ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF: undefined,
130
127
  ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF: undefined,
131
128
  ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF: undefined,
132
- ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_RANGE_EQUAL_ZERO: undefined,
133
129
  ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE: undefined,
134
- ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE_RANGE_EQUAL_ZERO: undefined,
135
130
  ELLIPSOID_HAS_RENDER_BOUNDS_HEIGHT_MAX: undefined,
136
131
  ELLIPSOID_HAS_RENDER_BOUNDS_HEIGHT_MIN: undefined,
137
- ELLIPSOID_HAS_RENDER_BOUNDS_HEIGHT_FLAT: undefined,
138
- ELLIPSOID_HAS_SHAPE_BOUNDS_HEIGHT_MIN: undefined,
139
132
  ELLIPSOID_HAS_SHAPE_BOUNDS_HEIGHT_FLAT: undefined,
140
133
  ELLIPSOID_IS_SPHERE: undefined,
141
134
  ELLIPSOID_INTERSECTION_INDEX_LONGITUDE: undefined,
@@ -156,7 +149,6 @@ function VoxelEllipsoidShape() {
156
149
  const scratchScale = new Cartesian3();
157
150
  const scratchRotationScale = new Matrix3();
158
151
  const scratchShapeOuterExtent = new Cartesian3();
159
- const scratchShapeInnerExtent = new Cartesian3();
160
152
  const scratchRenderOuterExtent = new Cartesian3();
161
153
  const scratchRenderInnerExtent = new Cartesian3();
162
154
  const scratchRenderRectangle = new Rectangle();
@@ -265,17 +257,7 @@ VoxelEllipsoidShape.prototype.update = function (
265
257
  const renderMinHeight = Math.max(shapeMinHeight, clipMinHeight);
266
258
  const renderMaxHeight = Math.min(shapeMaxHeight, clipMaxHeight);
267
259
 
268
- // Compute the closest and farthest a point can be from the center of the ellipsoid.
269
- const shapeInnerExtent = Cartesian3.add(
270
- radii,
271
- Cartesian3.fromElements(
272
- shapeMinHeight,
273
- shapeMinHeight,
274
- shapeMinHeight,
275
- scratchShapeInnerExtent
276
- ),
277
- scratchShapeInnerExtent
278
- );
260
+ // Compute the farthest a point can be from the center of the ellipsoid.
279
261
  const shapeOuterExtent = Cartesian3.add(
280
262
  radii,
281
263
  Cartesian3.fromElements(
@@ -381,18 +363,14 @@ VoxelEllipsoidShape.prototype.update = function (
381
363
  renderIsLongitudeReversed * defaultLongitudeRange;
382
364
  const renderIsLongitudeRangeZero = renderLongitudeRange <= epsilonLongitude;
383
365
  const renderIsLongitudeRangeUnderHalf =
384
- renderLongitudeRange > defaultLongitudeRangeHalf + epsilonLongitude &&
385
- renderLongitudeRange < defaultLongitudeRange - epsilonLongitude;
386
- const renderIsLongitudeRangeHalf =
387
366
  renderLongitudeRange >= defaultLongitudeRangeHalf - epsilonLongitude &&
388
- renderLongitudeRange <= defaultLongitudeRangeHalf + epsilonLongitude;
367
+ renderLongitudeRange < defaultLongitudeRange - epsilonLongitude;
389
368
  const renderIsLongitudeRangeOverHalf =
390
369
  renderLongitudeRange > epsilonLongitude &&
391
370
  renderLongitudeRange < defaultLongitudeRangeHalf - epsilonLongitude;
392
371
  const renderHasLongitude =
393
372
  renderIsLongitudeRangeZero ||
394
373
  renderIsLongitudeRangeUnderHalf ||
395
- renderIsLongitudeRangeHalf ||
396
374
  renderIsLongitudeRangeOverHalf;
397
375
 
398
376
  const shapeIsLongitudeReversed = shapeMaxLongitude < shapeMinLongitude;
@@ -400,7 +378,6 @@ VoxelEllipsoidShape.prototype.update = function (
400
378
  shapeMaxLongitude -
401
379
  shapeMinLongitude +
402
380
  shapeIsLongitudeReversed * defaultLongitudeRange;
403
- const shapeIsLongitudeRangeZero = shapeLongitudeRange <= epsilonLongitude;
404
381
  const shapeIsLongitudeRangeUnderHalf =
405
382
  shapeLongitudeRange > defaultLongitudeRangeHalf + epsilonLongitude &&
406
383
  shapeLongitudeRange < defaultLongitudeRange - epsilonLongitude;
@@ -408,10 +385,8 @@ VoxelEllipsoidShape.prototype.update = function (
408
385
  shapeLongitudeRange >= defaultLongitudeRangeHalf - epsilonLongitude &&
409
386
  shapeLongitudeRange <= defaultLongitudeRangeHalf + epsilonLongitude;
410
387
  const shapeIsLongitudeRangeOverHalf =
411
- shapeLongitudeRange > epsilonLongitude &&
412
388
  shapeLongitudeRange < defaultLongitudeRangeHalf - epsilonLongitude;
413
389
  const shapeHasLongitude =
414
- shapeIsLongitudeRangeZero ||
415
390
  shapeIsLongitudeRangeUnderHalf ||
416
391
  shapeIsLongitudeRangeHalf ||
417
392
  shapeIsLongitudeRangeOverHalf;
@@ -475,20 +450,8 @@ VoxelEllipsoidShape.prototype.update = function (
475
450
  renderOuterExtent,
476
451
  Cartesian3.ZERO
477
452
  );
478
- const renderHasHeight = renderHasMinHeight || renderHasMaxHeight;
479
- const renderHeightRange = renderMaxHeight - renderMinHeight;
480
- const shapeHasMinHeight = !Cartesian3.equals(
481
- shapeInnerExtent,
482
- Cartesian3.ZERO
483
- );
484
- const shapeHasMaxHeight = !Cartesian3.equals(
485
- shapeOuterExtent,
486
- Cartesian3.ZERO
487
- );
488
- const shapeHasHeight = shapeHasMinHeight || shapeHasMaxHeight;
489
453
 
490
- const shaderUniforms = this.shaderUniforms;
491
- const shaderDefines = this.shaderDefines;
454
+ const { shaderUniforms, shaderDefines } = this;
492
455
 
493
456
  // To keep things simple, clear the defines every time
494
457
  for (const key in shaderDefines) {
@@ -522,49 +485,37 @@ VoxelEllipsoidShape.prototype.update = function (
522
485
  shaderDefines["ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX"] = intersectionCount;
523
486
  intersectionCount += 1;
524
487
 
525
- if (renderHasHeight) {
526
- if (renderHeightRange === 0.0) {
527
- shaderDefines["ELLIPSOID_HAS_RENDER_BOUNDS_HEIGHT_FLAT"] = true;
528
- }
529
-
530
- if (renderHasMinHeight) {
531
- shaderDefines["ELLIPSOID_HAS_RENDER_BOUNDS_HEIGHT_MIN"] = true;
532
- shaderDefines[
533
- "ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN"
534
- ] = intersectionCount;
535
- intersectionCount += 1;
536
-
537
- // The inverse of the percent of space that is taken up by the inner ellipsoid, relative to the shape bounds
538
- // 1.0 / (1.0 - thickness) // thickness = percent of space that is between the min and max height.
539
- // 1.0 / (1.0 - (shapeMaxHeight - renderMinHeight) / shapeMaxExtent)
540
- // shapeMaxExtent / (shapeMaxExtent - (shapeMaxHeight - renderMinHeight))
541
- shaderUniforms.ellipsoidInverseInnerScaleUv =
542
- shapeMaxExtent / (shapeMaxExtent - (shapeMaxHeight - renderMinHeight));
543
- }
488
+ if (renderHasMinHeight) {
489
+ shaderDefines["ELLIPSOID_HAS_RENDER_BOUNDS_HEIGHT_MIN"] = true;
490
+ shaderDefines[
491
+ "ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN"
492
+ ] = intersectionCount;
493
+ intersectionCount += 1;
494
+
495
+ // The inverse of the percent of space that is taken up by the inner ellipsoid, relative to the shape bounds
496
+ // 1.0 / (1.0 - thickness) // thickness = percent of space that is between the min and max height.
497
+ // 1.0 / (1.0 - (shapeMaxHeight - renderMinHeight) / shapeMaxExtent)
498
+ // shapeMaxExtent / (shapeMaxExtent - (shapeMaxHeight - renderMinHeight))
499
+ shaderUniforms.ellipsoidInverseInnerScaleUv =
500
+ shapeMaxExtent / (shapeMaxExtent - (shapeMaxHeight - renderMinHeight));
501
+ }
544
502
 
545
- if (renderHasMaxHeight) {
546
- shaderDefines["ELLIPSOID_HAS_RENDER_BOUNDS_HEIGHT_MAX"] = true;
547
- shaderUniforms.ellipsoidInverseOuterScaleUv =
548
- shapeMaxExtent / (shapeMaxExtent - (shapeMaxHeight - renderMaxHeight));
549
- }
503
+ if (renderHasMaxHeight) {
504
+ shaderDefines["ELLIPSOID_HAS_RENDER_BOUNDS_HEIGHT_MAX"] = true;
505
+ shaderUniforms.ellipsoidInverseOuterScaleUv =
506
+ shapeMaxExtent / (shapeMaxExtent - (shapeMaxHeight - renderMaxHeight));
550
507
  }
551
508
 
552
- if (shapeHasHeight) {
553
- if (shapeHasMinHeight) {
554
- shaderDefines["ELLIPSOID_HAS_SHAPE_BOUNDS_HEIGHT_MIN"] = true;
555
-
556
- // The percent of space that is between the inner and outer ellipsoid.
557
- const thickness = (shapeMaxHeight - shapeMinHeight) / shapeMaxExtent;
558
- shaderUniforms.ellipsoidInverseHeightDifferenceUv = 1.0 / thickness;
559
- shaderUniforms.ellipseInnerRadiiUv = Cartesian2.fromElements(
560
- shaderUniforms.ellipsoidRadiiUv.x * (1.0 - thickness),
561
- shaderUniforms.ellipsoidRadiiUv.z * (1.0 - thickness),
562
- shaderUniforms.ellipseInnerRadiiUv
563
- );
564
- }
565
- if (shapeMinHeight === shapeMaxHeight) {
566
- shaderDefines["ELLIPSOID_HAS_SHAPE_BOUNDS_HEIGHT_FLAT"] = true;
567
- }
509
+ // The percent of space that is between the inner and outer ellipsoid.
510
+ const thickness = (shapeMaxHeight - shapeMinHeight) / shapeMaxExtent;
511
+ shaderUniforms.ellipsoidInverseHeightDifferenceUv = 1.0 / thickness;
512
+ shaderUniforms.ellipseInnerRadiiUv = Cartesian2.fromElements(
513
+ shaderUniforms.ellipsoidRadiiUv.x * (1.0 - thickness),
514
+ shaderUniforms.ellipsoidRadiiUv.z * (1.0 - thickness),
515
+ shaderUniforms.ellipseInnerRadiiUv
516
+ );
517
+ if (shapeMinHeight === shapeMaxHeight) {
518
+ shaderDefines["ELLIPSOID_HAS_SHAPE_BOUNDS_HEIGHT_FLAT"] = true;
568
519
  }
569
520
 
570
521
  // Intersects a wedge for the min and max longitude.
@@ -582,11 +533,6 @@ VoxelEllipsoidShape.prototype.update = function (
582
533
  "ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF"
583
534
  ] = true;
584
535
  intersectionCount += 2;
585
- } else if (renderIsLongitudeRangeHalf) {
586
- shaderDefines[
587
- "ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_HALF"
588
- ] = true;
589
- intersectionCount += 1;
590
536
  } else if (renderIsLongitudeRangeZero) {
591
537
  shaderDefines[
592
538
  "ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO"
@@ -621,14 +567,22 @@ VoxelEllipsoidShape.prototype.update = function (
621
567
  // offset = -minLongitudeUv / (maxLongitudeUv - minLongitudeUv)
622
568
  // offset = -((minLongitude - pi) / (2.0 * pi)) / (((maxLongitude - pi) / (2.0 * pi)) - ((minLongitude - pi) / (2.0 * pi)))
623
569
  // offset = -(minLongitude - pi) / (maxLongitude - minLongitude)
624
- const scale = defaultLongitudeRange / shapeLongitudeRange;
625
- const offset =
626
- -(shapeMinLongitude - defaultMinLongitude) / shapeLongitudeRange;
627
- shaderUniforms.ellipsoidUvToShapeUvLongitude = Cartesian2.fromElements(
628
- scale,
629
- offset,
630
- shaderUniforms.ellipsoidUvToShapeUvLongitude
631
- );
570
+ if (shapeLongitudeRange <= epsilonLongitude) {
571
+ shaderUniforms.ellipsoidUvToShapeUvLongitude = Cartesian2.fromElements(
572
+ 0.0,
573
+ 1.0,
574
+ shaderUniforms.ellipsoidUvToShapeUvLongitude
575
+ );
576
+ } else {
577
+ const scale = defaultLongitudeRange / shapeLongitudeRange;
578
+ const offset =
579
+ -(shapeMinLongitude - defaultMinLongitude) / shapeLongitudeRange;
580
+ shaderUniforms.ellipsoidUvToShapeUvLongitude = Cartesian2.fromElements(
581
+ scale,
582
+ offset,
583
+ shaderUniforms.ellipsoidUvToShapeUvLongitude
584
+ );
585
+ }
632
586
  }
633
587
 
634
588
  if (renderHasLongitude) {
@@ -676,8 +630,6 @@ VoxelEllipsoidShape.prototype.update = function (
676
630
  }
677
631
 
678
632
  if (renderHasLatitude) {
679
- shaderDefines["ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE"] = true;
680
-
681
633
  // Intersects a cone for min latitude
682
634
  if (renderHasLatitudeMin) {
683
635
  shaderDefines["ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN"] = true;
@@ -728,12 +680,6 @@ VoxelEllipsoidShape.prototype.update = function (
728
680
  }
729
681
  }
730
682
 
731
- if (renderMinLatitude === renderMaxLatitude) {
732
- shaderDefines[
733
- "ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_RANGE_EQUAL_ZERO"
734
- ] = true;
735
- }
736
-
737
683
  const minCosHalfAngleSqr = Math.pow(
738
684
  Math.cos(CesiumMath.PI_OVER_TWO - Math.abs(renderMinLatitude)),
739
685
  2.0
@@ -752,12 +698,6 @@ VoxelEllipsoidShape.prototype.update = function (
752
698
  if (shapeHasLatitude) {
753
699
  shaderDefines["ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE"] = true;
754
700
 
755
- if (shapeMinLatitude === shapeMaxLatitude) {
756
- shaderDefines[
757
- "ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE_RANGE_EQUAL_ZERO"
758
- ] = true;
759
- }
760
-
761
701
  // delerp(latitudeUv, minLatitudeUv, maxLatitudeUv)
762
702
  // (latitudeUv - minLatitudeUv) / (maxLatitudeUv - minLatitudeUv)
763
703
  // latitudeUv / (maxLatitudeUv - minLatitudeUv) - minLatitudeUv / (maxLatitudeUv - minLatitudeUv)
@@ -768,13 +708,22 @@ VoxelEllipsoidShape.prototype.update = function (
768
708
  // offset = -((minLatitude - -pi) / (2.0 * pi)) / (((maxLatitude - pi) / (2.0 * pi)) - ((minLatitude - pi) / (2.0 * pi)))
769
709
  // offset = -(minLatitude - -pi) / (maxLatitude - minLatitude)
770
710
  // offset = (-pi - minLatitude) / (maxLatitude - minLatitude)
771
- const scale = defaultLatitudeRange / shapeLatitudeRange;
772
- const offset = (defaultMinLatitude - shapeMinLatitude) / shapeLatitudeRange;
773
- shaderUniforms.ellipsoidUvToShapeUvLatitude = Cartesian2.fromElements(
774
- scale,
775
- offset,
776
- shaderUniforms.ellipsoidUvToShapeUvLatitude
777
- );
711
+ if (shapeLatitudeRange < epsilonLatitude) {
712
+ shaderUniforms.ellipsoidUvToShapeUvLatitude = Cartesian2.fromElements(
713
+ 0.0,
714
+ 1.0,
715
+ shaderUniforms.ellipsoidUvToShapeUvLatitude
716
+ );
717
+ } else {
718
+ const scale = defaultLatitudeRange / shapeLatitudeRange;
719
+ const offset =
720
+ (defaultMinLatitude - shapeMinLatitude) / shapeLatitudeRange;
721
+ shaderUniforms.ellipsoidUvToShapeUvLatitude = Cartesian2.fromElements(
722
+ scale,
723
+ offset,
724
+ shaderUniforms.ellipsoidUvToShapeUvLatitude
725
+ );
726
+ }
778
727
  }
779
728
 
780
729
  if (isSphere) {
@@ -854,6 +803,91 @@ VoxelEllipsoidShape.prototype.computeOrientedBoundingBoxForTile = function (
854
803
  );
855
804
  };
856
805
 
806
+ const sampleSizeScratch = new Cartesian3();
807
+ const scratchTileMinBounds = new Cartesian3();
808
+ const scratchTileMaxBounds = new Cartesian3();
809
+
810
+ /**
811
+ * Computes an oriented bounding box for a specified sample within a specified tile.
812
+ * The update function must be called before calling this function.
813
+ *
814
+ * @param {SpatialNode} spatialNode The spatial node containing the sample
815
+ * @param {Cartesian3} tileDimensions The size of the tile in number of samples, before padding
816
+ * @param {Cartesian3} tileUv The sample coordinate within the tile
817
+ * @param {OrientedBoundingBox} result The oriented bounding box that will be set to enclose the specified sample
818
+ * @returns {OrientedBoundingBox} The oriented bounding box.
819
+ */
820
+ VoxelEllipsoidShape.prototype.computeOrientedBoundingBoxForSample = function (
821
+ spatialNode,
822
+ tileDimensions,
823
+ tileUv,
824
+ result
825
+ ) {
826
+ //>>includeStart('debug', pragmas.debug);
827
+ Check.typeOf.object("spatialNode", spatialNode);
828
+ Check.typeOf.object("tileDimensions", tileDimensions);
829
+ Check.typeOf.object("tileUv", tileUv);
830
+ Check.typeOf.object("result", result);
831
+ //>>includeEnd('debug');
832
+
833
+ const tileSizeAtLevel = 1.0 / Math.pow(2.0, spatialNode.level);
834
+ const sampleSize = Cartesian3.divideComponents(
835
+ Cartesian3.ONE,
836
+ tileDimensions,
837
+ sampleSizeScratch
838
+ );
839
+ const sampleSizeAtLevel = Cartesian3.multiplyByScalar(
840
+ sampleSize,
841
+ tileSizeAtLevel,
842
+ sampleSizeScratch
843
+ );
844
+
845
+ const minLerp = Cartesian3.multiplyByScalar(
846
+ Cartesian3.fromElements(
847
+ spatialNode.x + tileUv.x,
848
+ spatialNode.y + tileUv.y,
849
+ spatialNode.z + tileUv.z,
850
+ scratchTileMinBounds
851
+ ),
852
+ tileSizeAtLevel,
853
+ scratchTileMinBounds
854
+ );
855
+ const maxLerp = Cartesian3.add(
856
+ minLerp,
857
+ sampleSizeAtLevel,
858
+ scratchTileMaxBounds
859
+ );
860
+
861
+ const rectangle = Rectangle.subsection(
862
+ this._rectangle,
863
+ minLerp.x,
864
+ minLerp.y,
865
+ maxLerp.x,
866
+ maxLerp.y,
867
+ scratchRectangle
868
+ );
869
+ const minHeight = CesiumMath.lerp(
870
+ this._minimumHeight,
871
+ this._maximumHeight,
872
+ minLerp.z
873
+ );
874
+ const maxHeight = CesiumMath.lerp(
875
+ this._minimumHeight,
876
+ this._maximumHeight,
877
+ maxLerp.z
878
+ );
879
+
880
+ return getEllipsoidChunkObb(
881
+ rectangle,
882
+ minHeight,
883
+ maxHeight,
884
+ this._ellipsoid,
885
+ this._translation,
886
+ this._rotation,
887
+ result
888
+ );
889
+ };
890
+
857
891
  /**
858
892
  * Computes an approximate step size for raymarching the root tile of a voxel grid.
859
893
  * The update function must be called before calling this function.
@@ -928,7 +962,11 @@ function getEllipsoidChunkObb(
928
962
  * @readonly
929
963
  */
930
964
  VoxelEllipsoidShape.DefaultMinBounds = Object.freeze(
931
- new Cartesian3(-CesiumMath.PI, -CesiumMath.PI_OVER_TWO, -Number.MAX_VALUE)
965
+ new Cartesian3(
966
+ -CesiumMath.PI,
967
+ -CesiumMath.PI_OVER_TWO,
968
+ -Ellipsoid.WGS84.minimumRadius
969
+ )
932
970
  );
933
971
 
934
972
  /**
@@ -939,7 +977,11 @@ VoxelEllipsoidShape.DefaultMinBounds = Object.freeze(
939
977
  * @readonly
940
978
  */
941
979
  VoxelEllipsoidShape.DefaultMaxBounds = Object.freeze(
942
- new Cartesian3(+CesiumMath.PI, +CesiumMath.PI_OVER_TWO, +Number.MAX_VALUE)
980
+ new Cartesian3(
981
+ CesiumMath.PI,
982
+ CesiumMath.PI_OVER_TWO,
983
+ 10.0 * Ellipsoid.WGS84.maximumRadius
984
+ )
943
985
  );
944
986
 
945
987
  export default VoxelEllipsoidShape;
@@ -531,7 +531,7 @@ Object.defineProperties(VoxelPrimitive.prototype, {
531
531
  */
532
532
  orientedBoundingBox: {
533
533
  get: function () {
534
- return this.shape.orientedBoundingBox;
534
+ return this._shape.orientedBoundingBox;
535
535
  },
536
536
  },
537
537
 
@@ -1137,6 +1137,8 @@ VoxelPrimitive.prototype.update = function (frameState) {
1137
1137
  // Render the primitive
1138
1138
  const command = frameState.passes.pick
1139
1139
  ? this._drawCommandPick
1140
+ : frameState.passes.pickVoxel
1141
+ ? this._drawCommandPickVoxel
1140
1142
  : this._drawCommand;
1141
1143
  command.boundingVolume = shape.boundingSphere;
1142
1144
  frameState.commandList.push(command);
@@ -8,6 +8,7 @@ import VoxelVS from "../Shaders/Voxels/VoxelVS.js";
8
8
  import IntersectionUtils from "../Shaders/Voxels/IntersectionUtils.js";
9
9
  import IntersectDepth from "../Shaders/Voxels/IntersectDepth.js";
10
10
  import IntersectClippingPlanes from "../Shaders/Voxels/IntersectClippingPlanes.js";
11
+ import IntersectLongitude from "../Shaders/Voxels/IntersectLongitude.js";
11
12
  import IntersectBox from "../Shaders/Voxels/IntersectBox.js";
12
13
  import IntersectCylinder from "../Shaders/Voxels/IntersectCylinder.js";
13
14
  import IntersectEllipsoid from "../Shaders/Voxels/IntersectEllipsoid.js";
@@ -131,12 +132,14 @@ function VoxelRenderResources(primitive) {
131
132
  ]);
132
133
  } else if (shapeType === "CYLINDER") {
133
134
  shaderBuilder.addFragmentLines([
135
+ IntersectLongitude,
134
136
  IntersectCylinder,
135
137
  Intersection,
136
138
  convertUvToCylinder,
137
139
  ]);
138
140
  } else if (shapeType === "ELLIPSOID") {
139
141
  shaderBuilder.addFragmentLines([
142
+ IntersectLongitude,
140
143
  IntersectEllipsoid,
141
144
  Intersection,
142
145
  convertUvToEllipsoid,
@@ -117,6 +117,19 @@ VoxelShape.prototype.update = DeveloperError.throwInstantiationError;
117
117
  VoxelShape.prototype.computeOrientedBoundingBoxForTile =
118
118
  DeveloperError.throwInstantiationError;
119
119
 
120
+ /**
121
+ * Computes an oriented bounding box for a specified sample within a specified tile.
122
+ * The update function must be called before calling this function.
123
+ *
124
+ * @param {SpatialNode} spatialNode The spatial node containing the sample
125
+ * @param {Cartesian3} tileDimensions The size of the tile in number of samples, before padding
126
+ * @param {Cartesian3} tileUv The sample coordinate within the tile
127
+ * @param {OrientedBoundingBox} result The oriented bounding box that will be set to enclose the specified sample
128
+ * @returns {OrientedBoundingBox} The oriented bounding box.
129
+ */
130
+ VoxelShape.prototype.computeOrientedBoundingBoxForSample =
131
+ DeveloperError.throwInstantiationError;
132
+
120
133
  /**
121
134
  * Computes an approximate step size for raymarching the root tile of a voxel grid.
122
135
  * The update function must be called before calling this function.