@cesium/engine 23.0.1 → 25.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 (398) hide show
  1. package/Build/Workers/{chunk-ZEMJQKHD.js → chunk-35H3UBIO.js} +13 -12
  2. package/Build/Workers/{chunk-PQTSXJBJ.js → chunk-3LSD7OOA.js} +16 -16
  3. package/Build/Workers/{chunk-PUO7BYDY.js → chunk-3RFFPH4M.js} +1 -1
  4. package/Build/Workers/{chunk-PBECJOWF.js → chunk-3TKLDHV3.js} +2 -2
  5. package/Build/Workers/{chunk-TMCTZ5E3.js → chunk-3VDDRF2E.js} +14 -14
  6. package/Build/Workers/{chunk-FKU77FNM.js → chunk-3XY3MVPG.js} +4 -4
  7. package/Build/Workers/{chunk-2OBWHTIC.js → chunk-4GF4MVPY.js} +7 -7
  8. package/Build/Workers/{chunk-JUKGMJX7.js → chunk-4MTRQFJP.js} +3 -2
  9. package/Build/Workers/{chunk-66OWUDO7.js → chunk-4QQXGTCE.js} +8 -8
  10. package/Build/Workers/{chunk-ALTCIHRH.js → chunk-4XXHJI6Y.js} +17 -17
  11. package/Build/Workers/{chunk-K7UTK4OM.js → chunk-5T6QQAJW.js} +3 -2
  12. package/Build/Workers/{chunk-IJ3SUMK3.js → chunk-6SDGQI27.js} +3 -2
  13. package/Build/Workers/{chunk-FXSRA5UG.js → chunk-77RL3MBD.js} +6 -5
  14. package/Build/Workers/{chunk-G6MJ3ZW3.js → chunk-7LSFAEWF.js} +12 -11
  15. package/Build/Workers/{chunk-C6HHBKT5.js → chunk-A7A433MD.js} +5 -5
  16. package/Build/Workers/{chunk-PGZ3B6CB.js → chunk-A7ZBMVFS.js} +14 -14
  17. package/Build/Workers/{chunk-OZYB3AOR.js → chunk-ACFFCHHZ.js} +11 -11
  18. package/Build/Workers/{chunk-DNMASBMH.js → chunk-AEAVLYPS.js} +2 -2
  19. package/Build/Workers/{chunk-VPWYHFQA.js → chunk-AWFZHD2B.js} +4 -4
  20. package/Build/Workers/{chunk-TFPG3ZKW.js → chunk-BTX2NL3P.js} +59 -46
  21. package/Build/Workers/{chunk-TNXOPEIG.js → chunk-BVAIWR7O.js} +12 -12
  22. package/Build/Workers/chunk-CKQP3DSS.js +973 -0
  23. package/Build/Workers/{chunk-N6HRZLS6.js → chunk-CZ23Y3RM.js} +2 -2
  24. package/Build/Workers/{chunk-EIC3VAOZ.js → chunk-DFEI5MAV.js} +7 -7
  25. package/Build/Workers/{chunk-BTP3634E.js → chunk-DH26SNAB.js} +4 -1
  26. package/Build/Workers/{chunk-TXYQNXNW.js → chunk-DYT5NR6P.js} +3 -3
  27. package/Build/Workers/{chunk-O67UP5YO.js → chunk-EZARA5FJ.js} +13 -13
  28. package/Build/Workers/{chunk-YSJRB2UZ.js → chunk-FIBS5S7R.js} +2 -2
  29. package/Build/Workers/{chunk-2M7DKGLW.js → chunk-FVLVVOBQ.js} +10 -10
  30. package/Build/Workers/{chunk-B2VA6IEL.js → chunk-GL7DNVUS.js} +5 -5
  31. package/Build/Workers/{chunk-77DJBHMI.js → chunk-GPIGURCG.js} +59 -32
  32. package/Build/Workers/{chunk-QPXGGVHC.js → chunk-H2A4USJR.js} +10 -10
  33. package/Build/Workers/chunk-HSVQATK2.js +147 -0
  34. package/Build/Workers/{chunk-HXEPZWJN.js → chunk-HVMG6AG4.js} +11 -10
  35. package/Build/Workers/{chunk-H3TVRJLY.js → chunk-I3A6DXYZ.js} +4 -4
  36. package/Build/Workers/{chunk-UEWYSOFD.js → chunk-ITD2IN7N.js} +2 -2
  37. package/Build/Workers/{chunk-CYOPNGPX.js → chunk-J3OFS2RD.js} +12 -12
  38. package/Build/Workers/{chunk-RZX6LOG6.js → chunk-J647NNZW.js} +6 -6
  39. package/Build/Workers/{chunk-GLCPE2BJ.js → chunk-J7KQEKPK.js} +13 -13
  40. package/Build/Workers/{chunk-XPMXRJDD.js → chunk-K6NFIRFB.js} +5 -5
  41. package/Build/Workers/{chunk-CID5SY7L.js → chunk-LH5SF3XV.js} +7 -6
  42. package/Build/Workers/{chunk-UOQB7XQI.js → chunk-ND3NTTOF.js} +713 -435
  43. package/Build/Workers/chunk-QO2CGXMP.js +2342 -0
  44. package/Build/Workers/chunk-QSDY4NS7.js +1287 -0
  45. package/Build/Workers/chunk-QXNQQYPV.js +3201 -0
  46. package/Build/Workers/{chunk-CJ7ZDY77.js → chunk-ST2UWDUU.js} +5 -5
  47. package/Build/Workers/{chunk-YDR5LX5Z.js → chunk-TA777BGS.js} +3 -2
  48. package/Build/Workers/{chunk-U4SWB6TI.js → chunk-TAI4HLII.js} +4 -4
  49. package/Build/Workers/{chunk-VX774SWE.js → chunk-URUCCIPS.js} +6 -6
  50. package/Build/Workers/{chunk-MNSNOONX.js → chunk-VQKLRBIK.js} +7 -7
  51. package/Build/Workers/{chunk-CVAAIRNP.js → chunk-WC57YYBN.js} +2 -2
  52. package/Build/Workers/{chunk-QNABVTTP.js → chunk-WN6P5UDH.js} +12 -12
  53. package/Build/Workers/{chunk-CNLXMOPM.js → chunk-WNN5D4W3.js} +12 -11
  54. package/Build/Workers/{chunk-4JJQRZYL.js → chunk-WTQGE7Q6.js} +17 -17
  55. package/Build/Workers/{chunk-FCJQO4NC.js → chunk-WUBKZFF6.js} +2213 -1349
  56. package/Build/Workers/{chunk-3UQ2YMPP.js → chunk-ZAPOS52G.js} +12 -10
  57. package/Build/Workers/{chunk-LHFC4R7Z.js → chunk-ZCCIIBZT.js} +6 -6
  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 +175 -118
  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 +24 -23
  98. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  99. package/Build/Workers/createWallGeometry.js +25 -25
  100. package/Build/Workers/createWallOutlineGeometry.js +24 -24
  101. package/Build/Workers/decodeDraco.js +10 -10
  102. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  103. package/Build/Workers/decodeI3S.js +12 -12
  104. package/Build/Workers/gaussianSplatSorter.js +4 -4
  105. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  106. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  107. package/Build/Workers/transcodeKTX2.js +12 -9
  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/ArcType.js +6 -1
  112. package/Source/Core/ArticulationStageType.js +5 -1
  113. package/Source/Core/AssociativeArray.js +100 -94
  114. package/Source/Core/BoundingSphere.js +1296 -1300
  115. package/Source/Core/Cartesian2.js +7 -5
  116. package/Source/Core/Cartesian3.js +9 -8
  117. package/Source/Core/Cartesian4.js +8 -6
  118. package/Source/Core/Cartographic.js +257 -249
  119. package/Source/Core/ClockRange.js +6 -1
  120. package/Source/Core/ClockStep.js +6 -1
  121. package/Source/Core/Color.js +846 -835
  122. package/Source/Core/ComponentDatatype.js +4 -1
  123. package/Source/Core/CornerType.js +6 -1
  124. package/Source/Core/Credit.js +121 -124
  125. package/Source/Core/DeveloperError.js +2 -1
  126. package/Source/Core/Ellipsoid.js +637 -660
  127. package/Source/Core/ExtrapolationType.js +6 -1
  128. package/Source/Core/GeocodeType.js +6 -1
  129. package/Source/Core/GeographicProjection.js +74 -74
  130. package/Source/Core/GeographicTilingScheme.js +179 -198
  131. package/Source/Core/GeometryOffsetAttribute.js +7 -1
  132. package/Source/Core/GeometryType.js +7 -1
  133. package/Source/Core/HeightmapEncoding.js +6 -1
  134. package/Source/Core/ITwinPlatform.js +1 -0
  135. package/Source/Core/Iau2006XysData.js +24 -13
  136. package/Source/Core/IndexDatatype.js +3 -1
  137. package/Source/Core/InterpolationType.js +5 -1
  138. package/Source/Core/Intersect.js +6 -1
  139. package/Source/Core/Ion.js +1 -1
  140. package/Source/Core/IonGeocodeProviderType.js +5 -1
  141. package/Source/Core/JulianDate.js +850 -848
  142. package/Source/Core/KeyboardEventModifier.js +6 -1
  143. package/Source/Core/MapProjection.js +39 -44
  144. package/Source/Core/Matrix2.js +906 -893
  145. package/Source/Core/Matrix3.js +1643 -1575
  146. package/Source/Core/Matrix4.js +2903 -2872
  147. package/Source/Core/PixelFormat.js +3 -1
  148. package/Source/Core/PrimitiveType.js +11 -1
  149. package/Source/Core/Ray.js +62 -60
  150. package/Source/Core/Rectangle.js +913 -904
  151. package/Source/Core/ReferenceFrame.js +6 -1
  152. package/Source/Core/RequestScheduler.js +8 -3
  153. package/Source/Core/RequestState.js +6 -1
  154. package/Source/Core/RequestType.js +6 -1
  155. package/Source/Core/S2Cell.js +2 -2
  156. package/Source/Core/ScreenSpaceEventType.js +6 -1
  157. package/Source/Core/TerrainMesh.js +10 -1
  158. package/Source/Core/TerrainPicker.js +1 -0
  159. package/Source/Core/TerrainQuantization.js +6 -1
  160. package/Source/Core/TilingScheme.js +100 -98
  161. package/Source/Core/TimeConstants.js +6 -1
  162. package/Source/Core/TimeStandard.js +6 -1
  163. package/Source/Core/TrackingReferenceFrame.js +6 -1
  164. package/Source/Core/Visibility.js +6 -1
  165. package/Source/Core/VulkanConstants.js +6 -1
  166. package/Source/Core/WallGeometry.js +1 -1
  167. package/Source/Core/WallOutlineGeometry.js +1 -1
  168. package/Source/Core/WebGLConstants.js +6 -1
  169. package/Source/Core/WebMercatorProjection.js +108 -109
  170. package/Source/Core/WebMercatorTilingScheme.js +246 -242
  171. package/Source/Core/WindingOrder.js +3 -1
  172. package/Source/Core/assert.js +27 -0
  173. package/Source/Core/globalTypes.js +4 -0
  174. package/Source/DataSources/CzmlDataSource.js +9 -0
  175. package/Source/DataSources/PathGraphics.js +13 -0
  176. package/Source/DataSources/PathVisualizer.js +330 -18
  177. package/Source/DataSources/StaticGeometryColorBatch.js +7 -2
  178. package/Source/DataSources/StaticGeometryPerMaterialBatch.js +7 -2
  179. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +4 -1
  180. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +4 -1
  181. package/Source/DataSources/StripeOrientation.js +6 -1
  182. package/Source/Renderer/BufferUsage.js +20 -9
  183. package/Source/Renderer/Context.js +2 -29
  184. package/Source/Renderer/DrawCommand.js +435 -403
  185. package/Source/Renderer/MipmapHint.js +5 -1
  186. package/Source/Renderer/Pass.js +7 -1
  187. package/Source/Renderer/PickId.js +44 -0
  188. package/Source/Renderer/PixelDatatype.js +3 -1
  189. package/Source/Renderer/RenderState.js +2 -2
  190. package/Source/Renderer/RenderbufferFormat.js +5 -1
  191. package/Source/Renderer/ShaderDestination.js +4 -1
  192. package/Source/Renderer/TextureMagnificationFilter.js +3 -1
  193. package/Source/Renderer/TextureMinificationFilter.js +3 -1
  194. package/Source/Renderer/TextureWrap.js +5 -1
  195. package/Source/Renderer/VertexArray.js +80 -0
  196. package/Source/Scene/AlphaMode.js +5 -1
  197. package/Source/Scene/ArcGisBaseMapType.js +6 -1
  198. package/Source/Scene/ArcGisMapService.js +1 -1
  199. package/Source/Scene/AttributeType.js +3 -1
  200. package/Source/Scene/Axis.js +3 -1
  201. package/Source/Scene/BillboardCollection.js +65 -364
  202. package/Source/Scene/BingMapsStyle.js +6 -1
  203. package/Source/Scene/BlendEquation.js +6 -1
  204. package/Source/Scene/BlendFunction.js +6 -1
  205. package/Source/Scene/BlendOption.js +6 -1
  206. package/Source/Scene/BlendingState.js +6 -1
  207. package/Source/Scene/BufferLoader.js +0 -2
  208. package/Source/Scene/BufferPoint.js +148 -0
  209. package/Source/Scene/BufferPointCollection.js +138 -0
  210. package/Source/Scene/BufferPointMaterial.js +95 -0
  211. package/Source/Scene/BufferPolygon.js +516 -0
  212. package/Source/Scene/BufferPolygonCollection.js +370 -0
  213. package/Source/Scene/BufferPolygonMaterial.js +41 -0
  214. package/Source/Scene/BufferPolyline.js +185 -0
  215. package/Source/Scene/BufferPolylineCollection.js +138 -0
  216. package/Source/Scene/BufferPolylineMaterial.js +93 -0
  217. package/Source/Scene/BufferPrimitive.js +347 -0
  218. package/Source/Scene/BufferPrimitiveCollection.js +818 -0
  219. package/Source/Scene/BufferPrimitiveMaterial.js +140 -0
  220. package/Source/Scene/CameraEventType.js +6 -1
  221. package/Source/Scene/Cesium3DTileColorBlendMode.js +6 -1
  222. package/Source/Scene/Cesium3DTileContent.js +5 -1
  223. package/Source/Scene/Cesium3DTileContentFactory.js +9 -0
  224. package/Source/Scene/Cesium3DTileContentState.js +6 -1
  225. package/Source/Scene/Cesium3DTileContentType.js +3 -1
  226. package/Source/Scene/Cesium3DTileFeature.js +289 -306
  227. package/Source/Scene/Cesium3DTileOptimizationHint.js +6 -1
  228. package/Source/Scene/Cesium3DTilePass.js +5 -1
  229. package/Source/Scene/Cesium3DTilePointFeature.js +433 -511
  230. package/Source/Scene/Cesium3DTileRefine.js +6 -1
  231. package/Source/Scene/Cesium3DTileStyle.js +22 -0
  232. package/Source/Scene/Cesium3DTileVectorFeature.js +586 -0
  233. package/Source/Scene/Cesium3DTileset.js +2 -1
  234. package/Source/Scene/ClassificationType.js +3 -1
  235. package/Source/Scene/ClippingPolygonCollection.js +270 -101
  236. package/Source/Scene/CloudType.js +3 -1
  237. package/Source/Scene/ColorBlendMode.js +4 -1
  238. package/Source/Scene/CubeMapPanorama.js +4 -4
  239. package/Source/Scene/CullFace.js +6 -1
  240. package/Source/Scene/DepthFunction.js +6 -1
  241. package/Source/Scene/DynamicAtmosphereLightingType.js +3 -1
  242. package/Source/Scene/EquirectangularPanorama.js +1 -0
  243. package/Source/Scene/ExpressionNodeType.js +6 -1
  244. package/Source/Scene/GaussianSplat3DTileContent.js +40 -46
  245. package/Source/Scene/GaussianSplatPrimitive.js +413 -70
  246. package/Source/Scene/GetFeatureInfoFormat.js +3 -3
  247. package/Source/Scene/GltfBufferViewLoader.js +0 -2
  248. package/Source/Scene/GltfDracoLoader.js +0 -2
  249. package/Source/Scene/GltfImageLoader.js +0 -3
  250. package/Source/Scene/GltfIndexBufferLoader.js +0 -4
  251. package/Source/Scene/GltfJsonLoader.js +0 -2
  252. package/Source/Scene/GltfLoader.js +215 -39
  253. package/Source/Scene/GltfLoaderUtil.js +14 -0
  254. package/Source/Scene/GltfSpzLoader.js +109 -2
  255. package/Source/Scene/GltfStructuralMetadataLoader.js +0 -2
  256. package/Source/Scene/GltfTextureLoader.js +0 -2
  257. package/Source/Scene/GltfVertexBufferLoader.js +0 -4
  258. package/Source/Scene/HeightReference.js +5 -1
  259. package/Source/Scene/HorizontalOrigin.js +6 -1
  260. package/Source/Scene/ITwinData.js +1 -0
  261. package/Source/Scene/ImageryProvider.js +1 -1
  262. package/Source/Scene/ImageryState.js +6 -1
  263. package/Source/Scene/ImplicitSubdivisionScheme.js +3 -1
  264. package/Source/Scene/InstanceAttributeSemantic.js +3 -1
  265. package/Source/Scene/IonWorldImageryStyle.js +6 -1
  266. package/Source/Scene/JobType.js +6 -1
  267. package/Source/Scene/Label.js +32 -0
  268. package/Source/Scene/LabelCollection.js +14 -13
  269. package/Source/Scene/LabelStyle.js +6 -1
  270. package/Source/Scene/MapMode2D.js +6 -1
  271. package/Source/Scene/Material.js +2 -0
  272. package/Source/Scene/Megatexture.js +1 -0
  273. package/Source/Scene/MetadataClassProperty.js +24 -10
  274. package/Source/Scene/MetadataComponentType.js +118 -24
  275. package/Source/Scene/MetadataSchemaLoader.js +0 -2
  276. package/Source/Scene/MetadataSemantic.js +6 -2
  277. package/Source/Scene/MetadataType.js +3 -1
  278. package/Source/Scene/Model/B3dmLoader.js +0 -3
  279. package/Source/Scene/Model/CustomShaderMode.js +3 -1
  280. package/Source/Scene/Model/CustomShaderPipelineStage.js +3 -1
  281. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +5 -1
  282. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +735 -264
  283. package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +5 -1
  284. package/Source/Scene/Model/Extensions/Gpm/StorageType.js +5 -1
  285. package/Source/Scene/Model/GeoJsonLoader.js +0 -2
  286. package/Source/Scene/Model/I3dmLoader.js +0 -3
  287. package/Source/Scene/Model/InstancingPipelineStage.js +1 -1
  288. package/Source/Scene/Model/LightingModel.js +5 -1
  289. package/Source/Scene/Model/MaterialPipelineStage.js +331 -3
  290. package/Source/Scene/Model/MetadataPipelineStage.js +3 -3
  291. package/Source/Scene/Model/ModelDrawCommand.js +6 -0
  292. package/Source/Scene/Model/ModelReader.js +475 -4
  293. package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -1
  294. package/Source/Scene/Model/ModelType.js +3 -1
  295. package/Source/Scene/Model/ModelUtility.js +3 -1
  296. package/Source/Scene/Model/PntsLoader.js +4 -3
  297. package/Source/Scene/Model/StyleCommandsNeeded.js +3 -1
  298. package/Source/Scene/Model/UniformType.js +5 -1
  299. package/Source/Scene/Model/VaryingType.js +5 -1
  300. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +375 -0
  301. package/Source/Scene/Model/pickModel.js +94 -299
  302. package/Source/Scene/ModelAnimationLoop.js +6 -1
  303. package/Source/Scene/ModelAnimationState.js +6 -1
  304. package/Source/Scene/ModelComponents.js +1639 -1542
  305. package/Source/Scene/PickedMetadataInfo.js +1 -0
  306. package/Source/Scene/PrimitiveState.js +7 -1
  307. package/Source/Scene/QuadtreeOccluders.js +20 -15
  308. package/Source/Scene/QuadtreeTile.js +547 -541
  309. package/Source/Scene/QuadtreeTileLoadState.js +6 -1
  310. package/Source/Scene/QuadtreeTileProvider.js +159 -175
  311. package/Source/Scene/ResourceLoader.js +0 -1
  312. package/Source/Scene/ResourceLoaderState.js +7 -1
  313. package/Source/Scene/SceneMode.js +4 -1
  314. package/Source/Scene/ScreenSpaceCameraController.js +13 -0
  315. package/Source/Scene/ShadowMode.js +3 -1
  316. package/Source/Scene/SkyBox.js +17 -8
  317. package/Source/Scene/SplitDirection.js +6 -1
  318. package/Source/Scene/StencilFunction.js +6 -1
  319. package/Source/Scene/StencilOperation.js +6 -1
  320. package/Source/Scene/TerrainState.js +7 -1
  321. package/Source/Scene/TileBoundingRegion.js +1 -1
  322. package/Source/Scene/TileBoundingS2Cell.js +1 -1
  323. package/Source/Scene/TileBoundingSphere.js +1 -1
  324. package/Source/Scene/TileState.js +7 -1
  325. package/Source/Scene/Tonemapper.js +5 -1
  326. package/Source/Scene/TweenCollection.js +7 -0
  327. package/Source/Scene/VectorGltf3DTileContent.js +403 -0
  328. package/Source/Scene/VertexAttributeSemantic.js +17 -1
  329. package/Source/Scene/VerticalOrigin.js +6 -1
  330. package/Source/Scene/VoxelBoxShape.js +12 -6
  331. package/Source/Scene/VoxelContent.js +2 -0
  332. package/Source/Scene/VoxelCylinderShape.js +39 -38
  333. package/Source/Scene/VoxelEllipsoidShape.js +46 -96
  334. package/Source/Scene/VoxelMetadataOrder.js +6 -1
  335. package/Source/Scene/VoxelProvider.js +1 -0
  336. package/Source/Scene/VoxelShapeType.js +3 -1
  337. package/Source/Scene/WebMapServiceImageryProvider.js +2 -2
  338. package/Source/Scene/WebMapTileServiceImageryProvider.js +366 -131
  339. package/Source/Scene/parseStructuralMetadata.js +97 -37
  340. package/Source/Scene/renderBufferPointCollection.js +285 -0
  341. package/Source/Scene/renderBufferPolygonCollection.js +339 -0
  342. package/Source/Scene/renderBufferPolylineCollection.js +478 -0
  343. package/Source/Shaders/BillboardCollectionFS.glsl +2 -77
  344. package/Source/Shaders/BillboardCollectionFS.js +2 -77
  345. package/Source/Shaders/BillboardCollectionVS.glsl +2 -60
  346. package/Source/Shaders/BillboardCollectionVS.js +2 -60
  347. package/Source/Shaders/BufferPointMaterialFS.glsl +27 -0
  348. package/Source/Shaders/BufferPointMaterialFS.js +29 -0
  349. package/Source/Shaders/BufferPointMaterialVS.glsl +48 -0
  350. package/Source/Shaders/BufferPointMaterialVS.js +50 -0
  351. package/Source/Shaders/BufferPolygonMaterialFS.glsl +13 -0
  352. package/Source/Shaders/BufferPolygonMaterialFS.js +15 -0
  353. package/Source/Shaders/BufferPolygonMaterialVS.glsl +30 -0
  354. package/Source/Shaders/BufferPolygonMaterialVS.js +32 -0
  355. package/Source/Shaders/BufferPolylineMaterialFS.glsl +13 -0
  356. package/Source/Shaders/BufferPolylineMaterialFS.js +15 -0
  357. package/Source/Shaders/BufferPolylineMaterialVS.glsl +49 -0
  358. package/Source/Shaders/BufferPolylineMaterialVS.js +51 -0
  359. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  360. package/Source/Shaders/Builtin/Functions/computeTextureTransform.glsl +24 -0
  361. package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
  362. package/Source/Shaders/Model/ConstantLodStageFS.glsl +60 -0
  363. package/Source/Shaders/Model/ConstantLodStageFS.js +62 -0
  364. package/Source/Shaders/Model/ConstantLodStageVS.glsl +12 -0
  365. package/Source/Shaders/Model/ConstantLodStageVS.js +13 -0
  366. package/Source/Shaders/Model/EdgeVisibilityStageFS.glsl +34 -48
  367. package/Source/Shaders/Model/EdgeVisibilityStageFS.js +34 -49
  368. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +98 -0
  369. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +100 -0
  370. package/Source/Shaders/Model/MaterialStageFS.glsl +46 -20
  371. package/Source/Shaders/Model/MaterialStageFS.js +46 -20
  372. package/Source/Shaders/Model/ModelFS.glsl +15 -0
  373. package/Source/Shaders/Model/ModelFS.js +15 -0
  374. package/Source/Shaders/Model/ModelVS.glsl +8 -0
  375. package/Source/Shaders/Model/ModelVS.js +8 -0
  376. package/Source/Shaders/PolygonSignedDistanceFS.glsl +64 -33
  377. package/Source/Shaders/PolygonSignedDistanceFS.js +64 -33
  378. package/Source/Shaders/PrimitiveGaussianSplatVS.glsl +9 -2
  379. package/Source/Shaders/PrimitiveGaussianSplatVS.js +9 -2
  380. package/Source/Shaders/Voxels/VoxelFS.glsl +1 -1
  381. package/Source/Shaders/Voxels/VoxelFS.js +1 -1
  382. package/Source/Shaders/Voxels/convertLocalToBoxUv.glsl +0 -1
  383. package/Source/Shaders/Voxels/convertLocalToBoxUv.js +0 -1
  384. package/Source/Shaders/Voxels/convertLocalToCylinderUv.glsl +7 -9
  385. package/Source/Shaders/Voxels/convertLocalToCylinderUv.js +7 -9
  386. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.glsl +7 -17
  387. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.js +7 -17
  388. package/Source/Widget/CesiumWidget.js +11 -4
  389. package/Source/Workers/decodeDraco.js +3 -0
  390. package/Source/Workers/decodeI3S.js +5 -2
  391. package/index.d.ts +1332 -402
  392. package/index.js +111 -81
  393. package/package.json +3 -3
  394. package/Build/Workers/chunk-54O3AGOA.js +0 -642
  395. package/Build/Workers/chunk-6U5QMZU3.js +0 -940
  396. package/Build/Workers/chunk-HNDE73JK.js +0 -1829
  397. package/Build/Workers/chunk-PAFMAR7A.js +0 -2357
  398. package/Build/Workers/chunk-S53HSRT6.js +0 -114
@@ -1,7 +1,24 @@
1
+ // @ts-check
2
+
1
3
  import Frozen from "../Core/Frozen.js";
2
4
  import defined from "../Core/defined.js";
3
5
  import PrimitiveType from "../Core/PrimitiveType.js";
4
6
 
7
+ /** @import Context from "./Context.js"; */
8
+ /** @import Framebuffer from "./Framebuffer.js"; */
9
+ /** @import Matrix4 from "../Core/Matrix4.js"; */
10
+ /** @import OrientedBoundingBox from "../Core/OrientedBoundingBox.js"; */
11
+ /** @import Pass from "./Pass.js"; */
12
+ /** @import PassState from "./PassState.js"; */
13
+ /** @import PickedMetadataInfo from "../Scene/PickedMetadataInfo.js"; */
14
+ /** @import RenderState from "./RenderState.js"; */
15
+ /** @import ShaderProgram from "./ShaderProgram.js"; */
16
+ /** @import VertexArray from "./VertexArray.js"; */
17
+
18
+ /**
19
+ * @enum {number}
20
+ * @ignore
21
+ */
5
22
  const Flags = {
6
23
  CULL: 1,
7
24
  OCCLUDE: 2,
@@ -14,69 +31,106 @@ const Flags = {
14
31
  };
15
32
 
16
33
  /**
17
- * Represents a command to the renderer for drawing.
34
+ * @typedef {object} DrawCommandOptions
35
+ * @property {object} [boundingVolume]
36
+ * @property {OrientedBoundingBox} [orientedBoundingBox]
37
+ * @property {Matrix4} [modelMatrix]
38
+ * @property {PrimitiveType} [primitiveType=PrimitiveType.TRIANGLES]
39
+ * @property {VertexArray} [vertexArray]
40
+ * @property {number} [count]
41
+ * @property {number} [offset]
42
+ * @property {number} [instanceCount]
43
+ * @property {ShaderProgram} [shaderProgram]
44
+ * @property {object} [uniformMap]
45
+ * @property {RenderState} [renderState]
46
+ * @property {Framebuffer} [framebuffer]
47
+ * @property {Pass} [pass]
48
+ * @property {object} [owner]
49
+ * @property {string} [pickId]
50
+ * @property {boolean} [pickMetadataAllowed=false]
51
+ * @property {boolean} [cull=true]
52
+ * @property {boolean} [occlude=true]
53
+ * @property {boolean} [executeInClosestFrustum=false]
54
+ * @property {boolean} [debugShowBoundingVolume=false]
55
+ * @property {boolean} [castShadows=false]
56
+ * @property {boolean} [receiveShadows=false]
57
+ * @property {boolean} [pickOnly=false]
58
+ * @property {boolean} [depthForTranslucentClassification=false]
18
59
  *
19
- * @alias DrawCommand
20
- * @constructor
60
+ * @ignore
61
+ */
62
+
63
+ /**
64
+ * Represents a command to the renderer for drawing.
21
65
  *
22
66
  * @private
23
67
  */
24
- function DrawCommand(options) {
25
- options = options ?? Frozen.EMPTY_OBJECT;
26
-
27
- this._boundingVolume = options.boundingVolume;
28
- this._orientedBoundingBox = options.orientedBoundingBox;
29
- this._modelMatrix = options.modelMatrix;
30
- this._primitiveType = options.primitiveType ?? PrimitiveType.TRIANGLES;
31
- this._vertexArray = options.vertexArray;
32
- this._count = options.count;
33
- this._offset = options.offset ?? 0;
34
- this._instanceCount = options.instanceCount ?? 0;
35
- this._shaderProgram = options.shaderProgram;
36
- this._uniformMap = options.uniformMap;
37
- this._renderState = options.renderState;
38
- this._framebuffer = options.framebuffer;
39
- this._pass = options.pass;
40
- this._owner = options.owner;
41
- this._debugOverlappingFrustums = 0;
42
- this._pickId = options.pickId;
43
- this._pickMetadataAllowed = options.pickMetadataAllowed === true;
44
- this._pickedMetadataInfo = undefined;
45
-
46
- // Set initial flags.
47
- this._flags = 0;
48
- this.cull = options.cull ?? true;
49
- this.occlude = options.occlude ?? true;
50
- this.executeInClosestFrustum = options.executeInClosestFrustum ?? false;
51
- this.debugShowBoundingVolume = options.debugShowBoundingVolume ?? false;
52
- this.castShadows = options.castShadows ?? false;
53
- this.receiveShadows = options.receiveShadows ?? false;
54
- this.pickOnly = options.pickOnly ?? false;
55
- this.depthForTranslucentClassification =
56
- options.depthForTranslucentClassification ?? false;
57
-
58
- this.dirty = true;
59
- this.lastDirtyTime = 0;
60
-
68
+ class DrawCommand {
61
69
  /**
62
- * @private
70
+ * @param {DrawCommandOptions} [options]
63
71
  */
64
- this.derivedCommands = {};
65
- }
66
-
67
- function hasFlag(command, flag) {
68
- return (command._flags & flag) === flag;
69
- }
70
-
71
- function setFlag(command, flag, value) {
72
- if (value) {
73
- command._flags |= flag;
74
- } else {
75
- command._flags &= ~flag;
72
+ constructor(options = Frozen.EMPTY_OBJECT) {
73
+ /** @private */
74
+ this._boundingVolume = options.boundingVolume;
75
+ /** @private */
76
+ this._orientedBoundingBox = options.orientedBoundingBox;
77
+ /** @private */
78
+ this._modelMatrix = options.modelMatrix;
79
+ /** @private */
80
+ this._primitiveType = options.primitiveType ?? PrimitiveType.TRIANGLES;
81
+ /** @private */
82
+ this._vertexArray = options.vertexArray;
83
+ /** @private */
84
+ this._count = options.count;
85
+ /** @private */
86
+ this._offset = options.offset ?? 0;
87
+ /** @private */
88
+ this._instanceCount = options.instanceCount ?? 0;
89
+ /** @private */
90
+ this._shaderProgram = options.shaderProgram;
91
+ /** @private */
92
+ this._uniformMap = options.uniformMap;
93
+ /** @private */
94
+ this._renderState = options.renderState;
95
+ /** @private */
96
+ this._framebuffer = options.framebuffer;
97
+ /** @private */
98
+ this._pass = options.pass;
99
+ /** @private */
100
+ this._owner = options.owner;
101
+ /** @private */
102
+ this._debugOverlappingFrustums = 0;
103
+ /** @private */
104
+ this._pickId = options.pickId;
105
+ /** @private */
106
+ this._pickMetadataAllowed = options.pickMetadataAllowed === true;
107
+ /**
108
+ * @type {PickedMetadataInfo|undefined}
109
+ * @private
110
+ */
111
+ this._pickedMetadataInfo = undefined;
112
+
113
+ // Set initial flags.
114
+ this._flags = 0;
115
+ this.cull = options.cull ?? true;
116
+ this.occlude = options.occlude ?? true;
117
+ this.executeInClosestFrustum = options.executeInClosestFrustum ?? false;
118
+ this.debugShowBoundingVolume = options.debugShowBoundingVolume ?? false;
119
+ this.castShadows = options.castShadows ?? false;
120
+ this.receiveShadows = options.receiveShadows ?? false;
121
+ this.pickOnly = options.pickOnly ?? false;
122
+ this.depthForTranslucentClassification =
123
+ options.depthForTranslucentClassification ?? false;
124
+
125
+ this.dirty = true;
126
+ this.lastDirtyTime = 0;
127
+
128
+ /**
129
+ * @private
130
+ */
131
+ this.derivedCommands = {};
76
132
  }
77
- }
78
133
 
79
- Object.defineProperties(DrawCommand.prototype, {
80
134
  /**
81
135
  * The bounding volume of the geometry in world space. This is used for culling and frustum selection.
82
136
  * <p>
@@ -86,85 +140,77 @@ Object.defineProperties(DrawCommand.prototype, {
86
140
  * minimize the number of frustums needed.
87
141
  * </p>
88
142
  *
89
- * @memberof DrawCommand.prototype
90
143
  * @type {object}
91
144
  * @default undefined
92
145
  *
93
146
  * @see DrawCommand#debugShowBoundingVolume
94
147
  */
95
- boundingVolume: {
96
- get: function () {
97
- return this._boundingVolume;
98
- },
99
- set: function (value) {
100
- if (this._boundingVolume !== value) {
101
- this._boundingVolume = value;
102
- this.dirty = true;
103
- }
104
- },
105
- },
148
+ get boundingVolume() {
149
+ return this._boundingVolume;
150
+ }
151
+
152
+ set boundingVolume(value) {
153
+ if (this._boundingVolume !== value) {
154
+ this._boundingVolume = value;
155
+ this.dirty = true;
156
+ }
157
+ }
106
158
 
107
159
  /**
108
160
  * The oriented bounding box of the geometry in world space. If this is defined, it is used instead of
109
161
  * {@link DrawCommand#boundingVolume} for plane intersection testing.
110
162
  *
111
- * @memberof DrawCommand.prototype
112
163
  * @type {OrientedBoundingBox}
113
164
  * @default undefined
114
165
  *
115
166
  * @see DrawCommand#debugShowBoundingVolume
116
167
  */
117
- orientedBoundingBox: {
118
- get: function () {
119
- return this._orientedBoundingBox;
120
- },
121
- set: function (value) {
122
- if (this._orientedBoundingBox !== value) {
123
- this._orientedBoundingBox = value;
124
- this.dirty = true;
125
- }
126
- },
127
- },
168
+ get orientedBoundingBox() {
169
+ return this._orientedBoundingBox;
170
+ }
171
+
172
+ set orientedBoundingBox(value) {
173
+ if (this._orientedBoundingBox !== value) {
174
+ this._orientedBoundingBox = value;
175
+ this.dirty = true;
176
+ }
177
+ }
128
178
 
129
179
  /**
130
180
  * When <code>true</code>, the renderer frustum and horizon culls the command based on its {@link DrawCommand#boundingVolume}.
131
181
  * If the command was already culled, set this to <code>false</code> for a performance improvement.
132
182
  *
133
- * @memberof DrawCommand.prototype
134
183
  * @type {boolean}
135
184
  * @default true
136
185
  */
137
- cull: {
138
- get: function () {
139
- return hasFlag(this, Flags.CULL);
140
- },
141
- set: function (value) {
142
- if (hasFlag(this, Flags.CULL) !== value) {
143
- setFlag(this, Flags.CULL, value);
144
- this.dirty = true;
145
- }
146
- },
147
- },
186
+ get cull() {
187
+ return hasFlag(this, Flags.CULL);
188
+ }
189
+
190
+ set cull(value) {
191
+ if (hasFlag(this, Flags.CULL) !== value) {
192
+ setFlag(this, Flags.CULL, value);
193
+ this.dirty = true;
194
+ }
195
+ }
148
196
 
149
197
  /**
150
198
  * When <code>true</code>, the horizon culls the command based on its {@link DrawCommand#boundingVolume}.
151
199
  * {@link DrawCommand#cull} must also be <code>true</code> in order for the command to be culled.
152
200
  *
153
- * @memberof DrawCommand.prototype
154
201
  * @type {boolean}
155
202
  * @default true
156
203
  */
157
- occlude: {
158
- get: function () {
159
- return hasFlag(this, Flags.OCCLUDE);
160
- },
161
- set: function (value) {
162
- if (hasFlag(this, Flags.OCCLUDE) !== value) {
163
- setFlag(this, Flags.OCCLUDE, value);
164
- this.dirty = true;
165
- }
166
- },
167
- },
204
+ get occlude() {
205
+ return hasFlag(this, Flags.OCCLUDE);
206
+ }
207
+
208
+ set occlude(value) {
209
+ if (hasFlag(this, Flags.OCCLUDE) !== value) {
210
+ setFlag(this, Flags.OCCLUDE, value);
211
+ this.dirty = true;
212
+ }
213
+ }
168
214
 
169
215
  /**
170
216
  * The transformation from the geometry in model space to world space.
@@ -172,270 +218,242 @@ Object.defineProperties(DrawCommand.prototype, {
172
218
  * When <code>undefined</code>, the geometry is assumed to be defined in world space.
173
219
  * </p>
174
220
  *
175
- * @memberof DrawCommand.prototype
176
221
  * @type {Matrix4}
177
222
  * @default undefined
178
223
  */
179
- modelMatrix: {
180
- get: function () {
181
- return this._modelMatrix;
182
- },
183
- set: function (value) {
184
- if (this._modelMatrix !== value) {
185
- this._modelMatrix = value;
186
- this.dirty = true;
187
- }
188
- },
189
- },
224
+ get modelMatrix() {
225
+ return this._modelMatrix;
226
+ }
227
+
228
+ set modelMatrix(value) {
229
+ if (this._modelMatrix !== value) {
230
+ this._modelMatrix = value;
231
+ this.dirty = true;
232
+ }
233
+ }
190
234
 
191
235
  /**
192
236
  * The type of geometry in the vertex array.
193
237
  *
194
- * @memberof DrawCommand.prototype
195
238
  * @type {PrimitiveType}
196
239
  * @default PrimitiveType.TRIANGLES
197
240
  */
198
- primitiveType: {
199
- get: function () {
200
- return this._primitiveType;
201
- },
202
- set: function (value) {
203
- if (this._primitiveType !== value) {
204
- this._primitiveType = value;
205
- this.dirty = true;
206
- }
207
- },
208
- },
241
+ get primitiveType() {
242
+ return this._primitiveType;
243
+ }
244
+
245
+ set primitiveType(value) {
246
+ if (this._primitiveType !== value) {
247
+ this._primitiveType = value;
248
+ this.dirty = true;
249
+ }
250
+ }
209
251
 
210
252
  /**
211
253
  * The vertex array.
212
254
  *
213
- * @memberof DrawCommand.prototype
214
255
  * @type {VertexArray}
215
256
  * @default undefined
216
257
  */
217
- vertexArray: {
218
- get: function () {
219
- return this._vertexArray;
220
- },
221
- set: function (value) {
222
- if (this._vertexArray !== value) {
223
- this._vertexArray = value;
224
- this.dirty = true;
225
- }
226
- },
227
- },
258
+ get vertexArray() {
259
+ return this._vertexArray;
260
+ }
261
+
262
+ set vertexArray(value) {
263
+ if (this._vertexArray !== value) {
264
+ this._vertexArray = value;
265
+ this.dirty = true;
266
+ }
267
+ }
228
268
 
229
269
  /**
230
270
  * The number of vertices to draw in the vertex array.
231
271
  *
232
- * @memberof DrawCommand.prototype
233
272
  * @type {number}
234
273
  * @default undefined
235
274
  */
236
- count: {
237
- get: function () {
238
- return this._count;
239
- },
240
- set: function (value) {
241
- if (this._count !== value) {
242
- this._count = value;
243
- this.dirty = true;
244
- }
245
- },
246
- },
275
+ get count() {
276
+ return this._count;
277
+ }
278
+
279
+ set count(value) {
280
+ if (this._count !== value) {
281
+ this._count = value;
282
+ this.dirty = true;
283
+ }
284
+ }
247
285
 
248
286
  /**
249
287
  * The offset to start drawing in the vertex array.
250
288
  *
251
- * @memberof DrawCommand.prototype
252
289
  * @type {number}
253
290
  * @default 0
254
291
  */
255
- offset: {
256
- get: function () {
257
- return this._offset;
258
- },
259
- set: function (value) {
260
- if (this._offset !== value) {
261
- this._offset = value;
262
- this.dirty = true;
263
- }
264
- },
265
- },
292
+ get offset() {
293
+ return this._offset;
294
+ }
295
+
296
+ set offset(value) {
297
+ if (this._offset !== value) {
298
+ this._offset = value;
299
+ this.dirty = true;
300
+ }
301
+ }
266
302
 
267
303
  /**
268
304
  * The number of instances to draw.
269
305
  *
270
- * @memberof DrawCommand.prototype
271
306
  * @type {number}
272
307
  * @default 0
273
308
  */
274
- instanceCount: {
275
- get: function () {
276
- return this._instanceCount;
277
- },
278
- set: function (value) {
279
- if (this._instanceCount !== value) {
280
- this._instanceCount = value;
281
- this.dirty = true;
282
- }
283
- },
284
- },
309
+ get instanceCount() {
310
+ return this._instanceCount;
311
+ }
312
+
313
+ set instanceCount(value) {
314
+ if (this._instanceCount !== value) {
315
+ this._instanceCount = value;
316
+ this.dirty = true;
317
+ }
318
+ }
285
319
 
286
320
  /**
287
321
  * The shader program to apply.
288
322
  *
289
- * @memberof DrawCommand.prototype
290
323
  * @type {ShaderProgram}
291
324
  * @default undefined
292
325
  */
293
- shaderProgram: {
294
- get: function () {
295
- return this._shaderProgram;
296
- },
297
- set: function (value) {
298
- if (this._shaderProgram !== value) {
299
- this._shaderProgram = value;
300
- this.dirty = true;
301
- }
302
- },
303
- },
326
+ get shaderProgram() {
327
+ return this._shaderProgram;
328
+ }
329
+
330
+ set shaderProgram(value) {
331
+ if (this._shaderProgram !== value) {
332
+ this._shaderProgram = value;
333
+ this.dirty = true;
334
+ }
335
+ }
304
336
 
305
337
  /**
306
338
  * Whether this command should cast shadows when shadowing is enabled.
307
339
  *
308
- * @memberof DrawCommand.prototype
309
340
  * @type {boolean}
310
341
  * @default false
311
342
  */
312
- castShadows: {
313
- get: function () {
314
- return hasFlag(this, Flags.CAST_SHADOWS);
315
- },
316
- set: function (value) {
317
- if (hasFlag(this, Flags.CAST_SHADOWS) !== value) {
318
- setFlag(this, Flags.CAST_SHADOWS, value);
319
- this.dirty = true;
320
- }
321
- },
322
- },
343
+ get castShadows() {
344
+ return hasFlag(this, Flags.CAST_SHADOWS);
345
+ }
346
+
347
+ set castShadows(value) {
348
+ if (hasFlag(this, Flags.CAST_SHADOWS) !== value) {
349
+ setFlag(this, Flags.CAST_SHADOWS, value);
350
+ this.dirty = true;
351
+ }
352
+ }
323
353
 
324
354
  /**
325
355
  * Whether this command should receive shadows when shadowing is enabled.
326
356
  *
327
- * @memberof DrawCommand.prototype
328
357
  * @type {boolean}
329
358
  * @default false
330
359
  */
331
- receiveShadows: {
332
- get: function () {
333
- return hasFlag(this, Flags.RECEIVE_SHADOWS);
334
- },
335
- set: function (value) {
336
- if (hasFlag(this, Flags.RECEIVE_SHADOWS) !== value) {
337
- setFlag(this, Flags.RECEIVE_SHADOWS, value);
338
- this.dirty = true;
339
- }
340
- },
341
- },
360
+ get receiveShadows() {
361
+ return hasFlag(this, Flags.RECEIVE_SHADOWS);
362
+ }
363
+
364
+ set receiveShadows(value) {
365
+ if (hasFlag(this, Flags.RECEIVE_SHADOWS) !== value) {
366
+ setFlag(this, Flags.RECEIVE_SHADOWS, value);
367
+ this.dirty = true;
368
+ }
369
+ }
342
370
 
343
371
  /**
344
372
  * An object with functions whose names match the uniforms in the shader program
345
373
  * and return values to set those uniforms.
346
374
  *
347
- * @memberof DrawCommand.prototype
348
375
  * @type {object}
349
376
  * @default undefined
350
377
  */
351
- uniformMap: {
352
- get: function () {
353
- return this._uniformMap;
354
- },
355
- set: function (value) {
356
- if (this._uniformMap !== value) {
357
- this._uniformMap = value;
358
- this.dirty = true;
359
- }
360
- },
361
- },
378
+ get uniformMap() {
379
+ return this._uniformMap;
380
+ }
381
+
382
+ set uniformMap(value) {
383
+ if (this._uniformMap !== value) {
384
+ this._uniformMap = value;
385
+ this.dirty = true;
386
+ }
387
+ }
362
388
 
363
389
  /**
364
390
  * The render state.
365
391
  *
366
- * @memberof DrawCommand.prototype
367
392
  * @type {RenderState}
368
393
  * @default undefined
369
394
  */
370
- renderState: {
371
- get: function () {
372
- return this._renderState;
373
- },
374
- set: function (value) {
375
- if (this._renderState !== value) {
376
- this._renderState = value;
377
- this.dirty = true;
378
- }
379
- },
380
- },
395
+ get renderState() {
396
+ return this._renderState;
397
+ }
398
+
399
+ set renderState(value) {
400
+ if (this._renderState !== value) {
401
+ this._renderState = value;
402
+ this.dirty = true;
403
+ }
404
+ }
381
405
 
382
406
  /**
383
407
  * The framebuffer to draw to.
384
408
  *
385
- * @memberof DrawCommand.prototype
386
409
  * @type {Framebuffer}
387
410
  * @default undefined
388
411
  */
389
- framebuffer: {
390
- get: function () {
391
- return this._framebuffer;
392
- },
393
- set: function (value) {
394
- if (this._framebuffer !== value) {
395
- this._framebuffer = value;
396
- this.dirty = true;
397
- }
398
- },
399
- },
412
+ get framebuffer() {
413
+ return this._framebuffer;
414
+ }
415
+
416
+ set framebuffer(value) {
417
+ if (this._framebuffer !== value) {
418
+ this._framebuffer = value;
419
+ this.dirty = true;
420
+ }
421
+ }
400
422
 
401
423
  /**
402
424
  * The pass when to render.
403
425
  *
404
- * @memberof DrawCommand.prototype
405
426
  * @type {Pass}
406
427
  * @default undefined
407
428
  */
408
- pass: {
409
- get: function () {
410
- return this._pass;
411
- },
412
- set: function (value) {
413
- if (this._pass !== value) {
414
- this._pass = value;
415
- this.dirty = true;
416
- }
417
- },
418
- },
429
+ get pass() {
430
+ return this._pass;
431
+ }
432
+
433
+ set pass(value) {
434
+ if (this._pass !== value) {
435
+ this._pass = value;
436
+ this.dirty = true;
437
+ }
438
+ }
419
439
 
420
440
  /**
421
441
  * Specifies if this command is only to be executed in the frustum closest
422
442
  * to the eye containing the bounding volume. Defaults to <code>false</code>.
423
443
  *
424
- * @memberof DrawCommand.prototype
425
444
  * @type {boolean}
426
445
  * @default false
427
446
  */
428
- executeInClosestFrustum: {
429
- get: function () {
430
- return hasFlag(this, Flags.EXECUTE_IN_CLOSEST_FRUSTUM);
431
- },
432
- set: function (value) {
433
- if (hasFlag(this, Flags.EXECUTE_IN_CLOSEST_FRUSTUM) !== value) {
434
- setFlag(this, Flags.EXECUTE_IN_CLOSEST_FRUSTUM, value);
435
- this.dirty = true;
436
- }
437
- },
438
- },
447
+ get executeInClosestFrustum() {
448
+ return hasFlag(this, Flags.EXECUTE_IN_CLOSEST_FRUSTUM);
449
+ }
450
+
451
+ set executeInClosestFrustum(value) {
452
+ if (hasFlag(this, Flags.EXECUTE_IN_CLOSEST_FRUSTUM) !== value) {
453
+ setFlag(this, Flags.EXECUTE_IN_CLOSEST_FRUSTUM, value);
454
+ this.dirty = true;
455
+ }
456
+ }
439
457
 
440
458
  /**
441
459
  * The object who created this command. This is useful for debugging command
@@ -443,23 +461,21 @@ Object.defineProperties(DrawCommand.prototype, {
443
461
  * reference to the command, and can be used to selectively execute commands
444
462
  * with {@link Scene#debugCommandFilter}.
445
463
  *
446
- * @memberof DrawCommand.prototype
447
464
  * @type {object}
448
465
  * @default undefined
449
466
  *
450
467
  * @see Scene#debugCommandFilter
451
468
  */
452
- owner: {
453
- get: function () {
454
- return this._owner;
455
- },
456
- set: function (value) {
457
- if (this._owner !== value) {
458
- this._owner = value;
459
- this.dirty = true;
460
- }
461
- },
462
- },
469
+ get owner() {
470
+ return this._owner;
471
+ }
472
+
473
+ set owner(value) {
474
+ if (this._owner !== value) {
475
+ this._owner = value;
476
+ this.dirty = true;
477
+ }
478
+ }
463
479
 
464
480
  /**
465
481
  * This property is for debugging only; it is not for production use nor is it optimized.
@@ -467,58 +483,54 @@ Object.defineProperties(DrawCommand.prototype, {
467
483
  * Draws the {@link DrawCommand#boundingVolume} for this command, assuming it is a sphere, when the command executes.
468
484
  * </p>
469
485
  *
470
- * @memberof DrawCommand.prototype
471
486
  * @type {boolean}
472
487
  * @default false
473
488
  *
474
489
  * @see DrawCommand#boundingVolume
475
490
  */
476
- debugShowBoundingVolume: {
477
- get: function () {
478
- return hasFlag(this, Flags.DEBUG_SHOW_BOUNDING_VOLUME);
479
- },
480
- set: function (value) {
481
- if (hasFlag(this, Flags.DEBUG_SHOW_BOUNDING_VOLUME) !== value) {
482
- setFlag(this, Flags.DEBUG_SHOW_BOUNDING_VOLUME, value);
483
- this.dirty = true;
484
- }
485
- },
486
- },
491
+ get debugShowBoundingVolume() {
492
+ return hasFlag(this, Flags.DEBUG_SHOW_BOUNDING_VOLUME);
493
+ }
494
+
495
+ set debugShowBoundingVolume(value) {
496
+ if (hasFlag(this, Flags.DEBUG_SHOW_BOUNDING_VOLUME) !== value) {
497
+ setFlag(this, Flags.DEBUG_SHOW_BOUNDING_VOLUME, value);
498
+ this.dirty = true;
499
+ }
500
+ }
487
501
 
488
502
  /**
489
503
  * Used to implement Scene.debugShowFrustums.
490
- * @private
504
+ * @ignore
491
505
  */
492
- debugOverlappingFrustums: {
493
- get: function () {
494
- return this._debugOverlappingFrustums;
495
- },
496
- set: function (value) {
497
- if (this._debugOverlappingFrustums !== value) {
498
- this._debugOverlappingFrustums = value;
499
- this.dirty = true;
500
- }
501
- },
502
- },
506
+ get debugOverlappingFrustums() {
507
+ return this._debugOverlappingFrustums;
508
+ }
509
+
510
+ set debugOverlappingFrustums(value) {
511
+ if (this._debugOverlappingFrustums !== value) {
512
+ this._debugOverlappingFrustums = value;
513
+ this.dirty = true;
514
+ }
515
+ }
516
+
503
517
  /**
504
518
  * A GLSL string that will evaluate to a pick id. When <code>undefined</code>, the command will only draw depth
505
519
  * during the pick pass.
506
520
  *
507
- * @memberof DrawCommand.prototype
508
521
  * @type {string|undefined}
509
522
  * @default undefined
510
523
  */
511
- pickId: {
512
- get: function () {
513
- return this._pickId;
514
- },
515
- set: function (value) {
516
- if (this._pickId !== value) {
517
- this._pickId = value;
518
- this.dirty = true;
519
- }
520
- },
521
- },
524
+ get pickId() {
525
+ return this._pickId;
526
+ }
527
+
528
+ set pickId(value) {
529
+ if (this._pickId !== value) {
530
+ this._pickId = value;
531
+ this.dirty = true;
532
+ }
533
+ }
522
534
 
523
535
  /**
524
536
  * Whether metadata picking is allowed.
@@ -527,118 +539,138 @@ Object.defineProperties(DrawCommand.prototype, {
527
539
  * part of a `ModelDrawCommand`, to check whether a derived command
528
540
  * for metadata picking has to be created.
529
541
  *
530
- * @memberof DrawCommand.prototype
531
542
  * @type {boolean}
532
543
  * @default undefined
533
544
  * @private
534
545
  */
535
- pickMetadataAllowed: {
536
- get: function () {
537
- return this._pickMetadataAllowed;
538
- },
539
- },
546
+ get pickMetadataAllowed() {
547
+ return this._pickMetadataAllowed;
548
+ }
540
549
 
541
550
  /**
542
551
  * Information about picked metadata.
543
552
  *
544
- * @memberof DrawCommand.prototype
545
553
  * @type {PickedMetadataInfo|undefined}
546
554
  * @default undefined
547
555
  */
548
- pickedMetadataInfo: {
549
- get: function () {
550
- return this._pickedMetadataInfo;
551
- },
552
- set: function (value) {
553
- if (this._pickedMetadataInfo !== value) {
554
- this._pickedMetadataInfo = value;
555
- this.dirty = true;
556
- }
557
- },
558
- },
556
+ get pickedMetadataInfo() {
557
+ return this._pickedMetadataInfo;
558
+ }
559
+
560
+ set pickedMetadataInfo(value) {
561
+ if (this._pickedMetadataInfo !== value) {
562
+ this._pickedMetadataInfo = value;
563
+ this.dirty = true;
564
+ }
565
+ }
559
566
 
560
567
  /**
561
568
  * Whether this command should be executed in the pick pass only.
562
569
  *
563
- * @memberof DrawCommand.prototype
564
570
  * @type {boolean}
565
571
  * @default false
566
572
  */
567
- pickOnly: {
568
- get: function () {
569
- return hasFlag(this, Flags.PICK_ONLY);
570
- },
571
- set: function (value) {
572
- if (hasFlag(this, Flags.PICK_ONLY) !== value) {
573
- setFlag(this, Flags.PICK_ONLY, value);
574
- this.dirty = true;
575
- }
576
- },
577
- },
573
+ get pickOnly() {
574
+ return hasFlag(this, Flags.PICK_ONLY);
575
+ }
576
+
577
+ set pickOnly(value) {
578
+ if (hasFlag(this, Flags.PICK_ONLY) !== value) {
579
+ setFlag(this, Flags.PICK_ONLY, value);
580
+ this.dirty = true;
581
+ }
582
+ }
583
+
578
584
  /**
579
585
  * Whether this command should be derived to draw depth for classification of translucent primitives.
580
586
  *
581
- * @memberof DrawCommand.prototype
582
587
  * @type {boolean}
583
588
  * @default false
584
589
  */
585
- depthForTranslucentClassification: {
586
- get: function () {
587
- return hasFlag(this, Flags.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION);
588
- },
589
- set: function (value) {
590
- if (hasFlag(this, Flags.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION) !== value) {
591
- setFlag(this, Flags.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION, value);
592
- this.dirty = true;
593
- }
594
- },
595
- },
596
- });
590
+ get depthForTranslucentClassification() {
591
+ return hasFlag(this, Flags.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION);
592
+ }
593
+
594
+ set depthForTranslucentClassification(value) {
595
+ if (hasFlag(this, Flags.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION) !== value) {
596
+ setFlag(this, Flags.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION, value);
597
+ this.dirty = true;
598
+ }
599
+ }
600
+
601
+ /**
602
+ * @param {DrawCommand} command
603
+ * @param {DrawCommand} result
604
+ * @returns {DrawCommand}
605
+ * @private
606
+ */
607
+ static shallowClone(command, result) {
608
+ if (!defined(command)) {
609
+ return undefined;
610
+ }
611
+ if (!defined(result)) {
612
+ result = new DrawCommand();
613
+ }
614
+
615
+ result._boundingVolume = command._boundingVolume;
616
+ result._orientedBoundingBox = command._orientedBoundingBox;
617
+ result._modelMatrix = command._modelMatrix;
618
+ result._primitiveType = command._primitiveType;
619
+ result._vertexArray = command._vertexArray;
620
+ result._count = command._count;
621
+ result._offset = command._offset;
622
+ result._instanceCount = command._instanceCount;
623
+ result._shaderProgram = command._shaderProgram;
624
+ result._uniformMap = command._uniformMap;
625
+ result._renderState = command._renderState;
626
+ result._framebuffer = command._framebuffer;
627
+ result._pass = command._pass;
628
+ result._owner = command._owner;
629
+ result._debugOverlappingFrustums = command._debugOverlappingFrustums;
630
+ result._pickId = command._pickId;
631
+ result._pickMetadataAllowed = command._pickMetadataAllowed;
632
+ result._pickedMetadataInfo = command._pickedMetadataInfo;
633
+ result._flags = command._flags;
634
+
635
+ result.dirty = true;
636
+ result.lastDirtyTime = 0;
637
+
638
+ return result;
639
+ }
640
+
641
+ /**
642
+ * Executes the draw command.
643
+ *
644
+ * @param {Context} context The renderer context in which to draw.
645
+ * @param {PassState} [passState] The state for the current render pass.
646
+ */
647
+ execute(context, passState) {
648
+ context.draw(this, passState);
649
+ }
650
+ }
597
651
 
598
652
  /**
599
- * @private
653
+ * @param {DrawCommand} command
654
+ * @param {Flags} flag
655
+ * @returns {boolean}
656
+ * @ignore
600
657
  */
601
- DrawCommand.shallowClone = function (command, result) {
602
- if (!defined(command)) {
603
- return undefined;
604
- }
605
- if (!defined(result)) {
606
- result = new DrawCommand();
607
- }
608
-
609
- result._boundingVolume = command._boundingVolume;
610
- result._orientedBoundingBox = command._orientedBoundingBox;
611
- result._modelMatrix = command._modelMatrix;
612
- result._primitiveType = command._primitiveType;
613
- result._vertexArray = command._vertexArray;
614
- result._count = command._count;
615
- result._offset = command._offset;
616
- result._instanceCount = command._instanceCount;
617
- result._shaderProgram = command._shaderProgram;
618
- result._uniformMap = command._uniformMap;
619
- result._renderState = command._renderState;
620
- result._framebuffer = command._framebuffer;
621
- result._pass = command._pass;
622
- result._owner = command._owner;
623
- result._debugOverlappingFrustums = command._debugOverlappingFrustums;
624
- result._pickId = command._pickId;
625
- result._pickMetadataAllowed = command._pickMetadataAllowed;
626
- result._pickedMetadataInfo = command._pickedMetadataInfo;
627
- result._flags = command._flags;
628
-
629
- result.dirty = true;
630
- result.lastDirtyTime = 0;
631
-
632
- return result;
633
- };
658
+ function hasFlag(command, flag) {
659
+ return (command._flags & flag) === flag;
660
+ }
634
661
 
635
662
  /**
636
- * Executes the draw command.
637
- *
638
- * @param {Context} context The renderer context in which to draw.
639
- * @param {PassState} [passState] The state for the current render pass.
663
+ * @param {DrawCommand} command
664
+ * @param {Flags} flag
665
+ * @param {boolean} value
666
+ * @ignore
640
667
  */
641
- DrawCommand.prototype.execute = function (context, passState) {
642
- context.draw(this, passState);
643
- };
668
+ function setFlag(command, flag, value) {
669
+ if (value) {
670
+ command._flags |= flag;
671
+ } else {
672
+ command._flags &= ~flag;
673
+ }
674
+ }
675
+
644
676
  export default DrawCommand;