@cesium/engine 24.0.0 → 26.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 (362) hide show
  1. package/Build/Workers/{chunk-6WLHJFD3.js → chunk-3VFEWOBI.js} +59 -32
  2. package/Build/Workers/{chunk-UQU4RXLT.js → chunk-424RNO3D.js} +50 -45
  3. package/Build/Workers/chunk-4MGMYHOO.js +147 -0
  4. package/Build/Workers/{chunk-AMIHNSST.js → chunk-4S7IE3LB.js} +2 -2
  5. package/Build/Workers/{chunk-J6AW5YHS.js → chunk-52JDLOEM.js} +14 -14
  6. package/Build/Workers/{chunk-6RMS4S72.js → chunk-54I6Y66F.js} +6 -6
  7. package/Build/Workers/{chunk-C6P4IG5P.js → chunk-6YEE6JDR.js} +6 -6
  8. package/Build/Workers/{chunk-72VYSVEW.js → chunk-7J2HKPRH.js} +11 -10
  9. package/Build/Workers/{chunk-7O5XJTVE.js → chunk-7WM2PX4V.js} +5 -5
  10. package/Build/Workers/{chunk-5A2SW66E.js → chunk-ACXQXN46.js} +16 -16
  11. package/Build/Workers/{chunk-VLDEUTOP.js → chunk-AYKR4VBR.js} +2 -2
  12. package/Build/Workers/{chunk-YQFTYQMZ.js → chunk-C6J67V5A.js} +3 -2
  13. package/Build/Workers/{chunk-D4EJ2NXG.js → chunk-C6KNZ7T4.js} +17 -17
  14. package/Build/Workers/{chunk-7MDYBRYJ.js → chunk-CFQP6LYM.js} +4 -4
  15. package/Build/Workers/{chunk-YAOZMOFL.js → chunk-CXOYE2WM.js} +5 -5
  16. package/Build/Workers/{chunk-B6SCUUFP.js → chunk-CZEYZU4N.js} +10 -10
  17. package/Build/Workers/{chunk-NPF7SSHZ.js → chunk-DBOEKL43.js} +7 -7
  18. package/Build/Workers/{chunk-44EMEGKW.js → chunk-DDWSZVMY.js} +5 -5
  19. package/Build/Workers/{chunk-7X322WP2.js → chunk-DOBXCNC3.js} +13 -13
  20. package/Build/Workers/{chunk-JCI63T3K.js → chunk-E7VQ76KE.js} +6 -6
  21. package/Build/Workers/{chunk-7TYLCBGK.js → chunk-EBSIOBXY.js} +12 -10
  22. package/Build/Workers/{chunk-GQUNK2XC.js → chunk-EF2QYXGA.js} +14 -14
  23. package/Build/Workers/{chunk-BJD6QGXZ.js → chunk-EPYXRCDB.js} +12 -12
  24. package/Build/Workers/{chunk-63SIWPLS.js → chunk-F6QDY6HU.js} +13 -13
  25. package/Build/Workers/{chunk-XY6HMDGI.js → chunk-FRQZECAO.js} +5 -5
  26. package/Build/Workers/{chunk-VMVOUQ5J.js → chunk-G7PXZRVF.js} +7 -7
  27. package/Build/Workers/{chunk-N65BAKSH.js → chunk-INUEEEQA.js} +8 -8
  28. package/Build/Workers/{chunk-7QRFIKWQ.js → chunk-IRBKFCEJ.js} +2 -2
  29. package/Build/Workers/{chunk-UIGVOKKI.js → chunk-IYOUHCZB.js} +3 -2
  30. package/Build/Workers/{chunk-5GXYJQ2K.js → chunk-J6BWOHUF.js} +3 -3
  31. package/Build/Workers/{chunk-A47HVBC5.js → chunk-KFSTQKNM.js} +7 -7
  32. package/Build/Workers/{chunk-EV3VGO6Y.js → chunk-KKOSKAZB.js} +17 -17
  33. package/Build/Workers/{chunk-6MPGQEHA.js → chunk-KSSWJIZW.js} +2 -2
  34. package/Build/Workers/{chunk-DHKPFLSJ.js → chunk-M3B5JKSM.js} +3 -2
  35. package/Build/Workers/chunk-MPZHGZU6.js +2342 -0
  36. package/Build/Workers/{chunk-YJZGW74L.js → chunk-MYP774IS.js} +2213 -1349
  37. package/Build/Workers/{chunk-LIB2H534.js → chunk-O3EA5HS7.js} +12 -11
  38. package/Build/Workers/{chunk-ILMFADZA.js → chunk-P3CK7MCY.js} +27 -5
  39. package/Build/Workers/chunk-Q3PY526V.js +3201 -0
  40. package/Build/Workers/chunk-QN67VG36.js +973 -0
  41. package/Build/Workers/{chunk-XJRBB253.js → chunk-QRWGUWI6.js} +11 -11
  42. package/Build/Workers/{chunk-AF3MU2RL.js → chunk-S4MCOY6I.js} +7 -6
  43. package/Build/Workers/{chunk-Y7HNNPNK.js → chunk-SMQZZOW6.js} +10 -10
  44. package/Build/Workers/{chunk-PVV64VFW.js → chunk-TKKIREQ6.js} +3 -2
  45. package/Build/Workers/{chunk-MKM27KGV.js → chunk-U3ZA64U7.js} +2 -2
  46. package/Build/Workers/{chunk-2N4KDHS3.js → chunk-UA25D5MX.js} +12 -11
  47. package/Build/Workers/{chunk-RQNJD3O4.js → chunk-UOOIQ3KX.js} +12 -12
  48. package/Build/Workers/{chunk-GOQBUCXH.js → chunk-V7VQKN6N.js} +709 -431
  49. package/Build/Workers/{chunk-LXMCPFFS.js → chunk-VQYETPWC.js} +4 -4
  50. package/Build/Workers/{chunk-NKT5K3K3.js → chunk-VWV2IJRB.js} +13 -12
  51. package/Build/Workers/chunk-XZMBNNDX.js +1287 -0
  52. package/Build/Workers/{chunk-ISY4EZCA.js → chunk-Y57HREW5.js} +4 -4
  53. package/Build/Workers/{chunk-EDXL4W76.js → chunk-Y5BF6AFU.js} +2 -2
  54. package/Build/Workers/{chunk-Q3C6VQH6.js → chunk-YLY7NKAB.js} +4 -4
  55. package/Build/Workers/{chunk-4TIG36AW.js → chunk-ZK3CF7ZD.js} +12 -12
  56. package/Build/Workers/{chunk-AJLTU6PF.js → chunk-ZP7JMQV4.js} +4 -1
  57. package/Build/Workers/{chunk-HXJMS2ZI.js → chunk-ZZ46LWL6.js} +1 -1
  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 +24 -24
  100. package/Build/Workers/createWallOutlineGeometry.js +23 -23
  101. package/Build/Workers/decodeDraco.js +10 -10
  102. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  103. package/Build/Workers/decodeI3S.js +10 -10
  104. package/Build/Workers/gaussianSplatSorter.js +4 -4
  105. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  106. package/Build/Workers/incrementallyBuildTerrainPicker.js +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 +1 -1
  116. package/Source/Core/Cartesian3.js +2 -3
  117. package/Source/Core/Cartesian4.js +1 -1
  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 +844 -835
  122. package/Source/Core/ComponentDatatype.js +39 -1
  123. package/Source/Core/CornerType.js +6 -1
  124. package/Source/Core/Credit.js +121 -124
  125. package/Source/Core/Ellipsoid.js +637 -660
  126. package/Source/Core/ExtrapolationType.js +6 -1
  127. package/Source/Core/GeocodeType.js +6 -1
  128. package/Source/Core/GeographicProjection.js +74 -74
  129. package/Source/Core/GeographicTilingScheme.js +179 -198
  130. package/Source/Core/GeometryOffsetAttribute.js +7 -1
  131. package/Source/Core/GeometryType.js +7 -1
  132. package/Source/Core/HeightmapEncoding.js +6 -1
  133. package/Source/Core/Iau2006XysData.js +24 -13
  134. package/Source/Core/IndexDatatype.js +3 -1
  135. package/Source/Core/InterpolationType.js +5 -1
  136. package/Source/Core/Intersect.js +6 -1
  137. package/Source/Core/Ion.js +1 -1
  138. package/Source/Core/IonGeocodeProviderType.js +5 -1
  139. package/Source/Core/JulianDate.js +850 -848
  140. package/Source/Core/KeyboardEventModifier.js +6 -1
  141. package/Source/Core/MapProjection.js +40 -44
  142. package/Source/Core/Matrix2.js +906 -893
  143. package/Source/Core/Matrix3.js +1643 -1575
  144. package/Source/Core/Matrix4.js +2903 -2872
  145. package/Source/Core/PixelFormat.js +3 -1
  146. package/Source/Core/PrimitiveType.js +11 -1
  147. package/Source/Core/Ray.js +62 -60
  148. package/Source/Core/Rectangle.js +913 -904
  149. package/Source/Core/ReferenceFrame.js +6 -1
  150. package/Source/Core/RequestScheduler.js +8 -3
  151. package/Source/Core/RequestState.js +6 -1
  152. package/Source/Core/RequestType.js +6 -1
  153. package/Source/Core/Resource.js +1 -1
  154. package/Source/Core/ScreenSpaceEventHandler.js +51 -41
  155. package/Source/Core/ScreenSpaceEventType.js +6 -1
  156. package/Source/Core/TerrainQuantization.js +6 -1
  157. package/Source/Core/TilingScheme.js +100 -98
  158. package/Source/Core/TimeConstants.js +6 -1
  159. package/Source/Core/TimeStandard.js +6 -1
  160. package/Source/Core/TrackingReferenceFrame.js +6 -1
  161. package/Source/Core/Visibility.js +6 -1
  162. package/Source/Core/VulkanConstants.js +6 -1
  163. package/Source/Core/WebGLConstants.js +6 -1
  164. package/Source/Core/WebMercatorProjection.js +108 -109
  165. package/Source/Core/WebMercatorTilingScheme.js +246 -242
  166. package/Source/Core/WindingOrder.js +3 -1
  167. package/Source/Core/createColorRamp.js +37 -0
  168. package/Source/Core/globalTypes.js +25 -0
  169. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +1 -0
  170. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +1 -0
  171. package/Source/DataSources/StripeOrientation.js +6 -1
  172. package/Source/Renderer/BufferUsage.js +20 -9
  173. package/Source/Renderer/Context.js +2 -29
  174. package/Source/Renderer/DrawCommand.js +435 -403
  175. package/Source/Renderer/MipmapHint.js +5 -1
  176. package/Source/Renderer/Pass.js +10 -3
  177. package/Source/Renderer/PickId.js +44 -0
  178. package/Source/Renderer/PixelDatatype.js +3 -1
  179. package/Source/Renderer/RenderbufferFormat.js +5 -1
  180. package/Source/Renderer/ShaderDestination.js +4 -1
  181. package/Source/Renderer/TextureMagnificationFilter.js +3 -1
  182. package/Source/Renderer/TextureMinificationFilter.js +3 -1
  183. package/Source/Renderer/TextureWrap.js +5 -1
  184. package/Source/Renderer/createUniform.js +346 -239
  185. package/Source/Renderer/createUniformArray.js +494 -381
  186. package/Source/Scene/AlphaMode.js +5 -1
  187. package/Source/Scene/ArcGisBaseMapType.js +6 -1
  188. package/Source/Scene/ArcGisMapService.js +1 -1
  189. package/Source/Scene/AttributeType.js +3 -1
  190. package/Source/Scene/Axis.js +3 -1
  191. package/Source/Scene/BingMapsStyle.js +6 -1
  192. package/Source/Scene/BlendEquation.js +6 -1
  193. package/Source/Scene/BlendFunction.js +6 -1
  194. package/Source/Scene/BlendOption.js +6 -1
  195. package/Source/Scene/BlendingState.js +6 -1
  196. package/Source/Scene/BufferLoader.js +0 -2
  197. package/Source/Scene/BufferPoint.js +1 -0
  198. package/Source/Scene/BufferPointCollection.js +17 -1
  199. package/Source/Scene/BufferPolygon.js +3 -2
  200. package/Source/Scene/BufferPolygonCollection.js +13 -1
  201. package/Source/Scene/BufferPolyline.js +1 -0
  202. package/Source/Scene/BufferPolylineCollection.js +5 -1
  203. package/Source/Scene/BufferPrimitiveCollection.js +210 -43
  204. package/Source/Scene/CameraEventAggregator.js +30 -18
  205. package/Source/Scene/CameraEventType.js +6 -1
  206. package/Source/Scene/Cesium3DTile.js +54 -1
  207. package/Source/Scene/Cesium3DTileColorBlendMode.js +6 -1
  208. package/Source/Scene/Cesium3DTileContent.js +195 -254
  209. package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
  210. package/Source/Scene/Cesium3DTileContentState.js +6 -1
  211. package/Source/Scene/Cesium3DTileContentType.js +3 -1
  212. package/Source/Scene/Cesium3DTileFeature.js +289 -306
  213. package/Source/Scene/Cesium3DTileOptimizationHint.js +6 -1
  214. package/Source/Scene/Cesium3DTilePass.js +5 -1
  215. package/Source/Scene/Cesium3DTilePointFeature.js +433 -511
  216. package/Source/Scene/Cesium3DTileRefine.js +6 -1
  217. package/Source/Scene/Cesium3DTileVectorFeature.js +586 -0
  218. package/Source/Scene/Cesium3DTileset.js +46 -6
  219. package/Source/Scene/ClassificationType.js +3 -1
  220. package/Source/Scene/CloudType.js +3 -1
  221. package/Source/Scene/ColorBlendMode.js +4 -1
  222. package/Source/Scene/Composite3DTileContent.js +254 -292
  223. package/Source/Scene/CullFace.js +6 -1
  224. package/Source/Scene/DepthFunction.js +6 -1
  225. package/Source/Scene/DynamicAtmosphereLightingType.js +3 -1
  226. package/Source/Scene/EdgeDisplayMode.js +50 -0
  227. package/Source/Scene/Empty3DTileContent.js +100 -132
  228. package/Source/Scene/EquirectangularPanorama.js +1 -0
  229. package/Source/Scene/ExpressionNodeType.js +6 -1
  230. package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
  231. package/Source/Scene/GeoJsonPrimitive.js +874 -0
  232. package/Source/Scene/Geometry3DTileContent.js +151 -185
  233. package/Source/Scene/GltfBufferViewLoader.js +0 -2
  234. package/Source/Scene/GltfDracoLoader.js +0 -2
  235. package/Source/Scene/GltfImageLoader.js +0 -3
  236. package/Source/Scene/GltfIndexBufferLoader.js +0 -4
  237. package/Source/Scene/GltfJsonLoader.js +0 -2
  238. package/Source/Scene/GltfLoader.js +109 -5
  239. package/Source/Scene/GltfLoaderUtil.js +14 -0
  240. package/Source/Scene/GltfSpzLoader.js +0 -2
  241. package/Source/Scene/GltfStructuralMetadataLoader.js +0 -2
  242. package/Source/Scene/GltfTextureLoader.js +0 -2
  243. package/Source/Scene/GltfVertexBufferLoader.js +0 -4
  244. package/Source/Scene/HeightReference.js +5 -1
  245. package/Source/Scene/HorizontalOrigin.js +6 -1
  246. package/Source/Scene/ImageryProvider.js +1 -1
  247. package/Source/Scene/ImageryState.js +6 -1
  248. package/Source/Scene/Implicit3DTileContent.js +179 -214
  249. package/Source/Scene/ImplicitSubdivisionScheme.js +3 -1
  250. package/Source/Scene/InstanceAttributeSemantic.js +3 -1
  251. package/Source/Scene/IonWorldImageryStyle.js +6 -1
  252. package/Source/Scene/JobType.js +6 -1
  253. package/Source/Scene/LabelStyle.js +6 -1
  254. package/Source/Scene/MVTDataProvider.js +147 -0
  255. package/Source/Scene/MapMode2D.js +6 -1
  256. package/Source/Scene/MetadataComponentType.js +3 -1
  257. package/Source/Scene/MetadataSchemaLoader.js +0 -2
  258. package/Source/Scene/MetadataSemantic.js +6 -2
  259. package/Source/Scene/MetadataType.js +3 -1
  260. package/Source/Scene/Model/B3dmLoader.js +0 -3
  261. package/Source/Scene/Model/CustomShaderMode.js +3 -1
  262. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +5 -1
  263. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +78 -337
  264. package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +5 -1
  265. package/Source/Scene/Model/Extensions/Gpm/StorageType.js +5 -1
  266. package/Source/Scene/Model/GeoJsonLoader.js +0 -2
  267. package/Source/Scene/Model/I3dmLoader.js +0 -3
  268. package/Source/Scene/Model/InstancingPipelineStage.js +1 -1
  269. package/Source/Scene/Model/LightingModel.js +5 -1
  270. package/Source/Scene/Model/MaterialPipelineStage.js +184 -3
  271. package/Source/Scene/Model/Model.js +34 -0
  272. package/Source/Scene/Model/Model3DTileContent.js +424 -458
  273. package/Source/Scene/Model/ModelDrawCommand.js +31 -3
  274. package/Source/Scene/Model/ModelReader.js +474 -3
  275. package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -1
  276. package/Source/Scene/Model/ModelType.js +3 -1
  277. package/Source/Scene/Model/ModelUtility.js +4 -0
  278. package/Source/Scene/Model/PntsLoader.js +4 -3
  279. package/Source/Scene/Model/StyleCommandsNeeded.js +3 -1
  280. package/Source/Scene/Model/UniformType.js +5 -1
  281. package/Source/Scene/Model/VaryingType.js +5 -1
  282. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +500 -139
  283. package/Source/Scene/Model/pickModel.js +94 -299
  284. package/Source/Scene/ModelAnimationLoop.js +6 -1
  285. package/Source/Scene/ModelAnimationState.js +6 -1
  286. package/Source/Scene/ModelComponents.js +47 -2
  287. package/Source/Scene/Multiple3DTileContent.js +291 -334
  288. package/Source/Scene/PrimitiveState.js +7 -1
  289. package/Source/Scene/QuadtreeOccluders.js +20 -15
  290. package/Source/Scene/QuadtreeTile.js +547 -541
  291. package/Source/Scene/QuadtreeTileLoadState.js +6 -1
  292. package/Source/Scene/QuadtreeTileProvider.js +159 -175
  293. package/Source/Scene/ResourceLoader.js +0 -1
  294. package/Source/Scene/ResourceLoaderState.js +7 -1
  295. package/Source/Scene/Scene.js +26 -0
  296. package/Source/Scene/SceneMode.js +4 -1
  297. package/Source/Scene/ShadowMode.js +3 -1
  298. package/Source/Scene/SkyBox.js +1 -1
  299. package/Source/Scene/SplitDirection.js +6 -1
  300. package/Source/Scene/StencilFunction.js +6 -1
  301. package/Source/Scene/StencilOperation.js +6 -1
  302. package/Source/Scene/TerrainState.js +7 -1
  303. package/Source/Scene/TileState.js +7 -1
  304. package/Source/Scene/Tileset3DTileContent.js +113 -146
  305. package/Source/Scene/Tonemapper.js +5 -1
  306. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +499 -0
  307. package/Source/Scene/Vector3DTileContent.js +205 -234
  308. package/Source/Scene/VectorGltf3DTileContent.js +131 -61
  309. package/Source/Scene/VertexAttributeSemantic.js +3 -1
  310. package/Source/Scene/VerticalOrigin.js +6 -1
  311. package/Source/Scene/VoxelBoxShape.js +12 -6
  312. package/Source/Scene/VoxelContent.js +2 -0
  313. package/Source/Scene/VoxelCylinderShape.js +39 -38
  314. package/Source/Scene/VoxelEllipsoidShape.js +46 -96
  315. package/Source/Scene/VoxelMetadataOrder.js +6 -1
  316. package/Source/Scene/VoxelPrimitive.js +159 -175
  317. package/Source/Scene/VoxelProvider.js +64 -90
  318. package/Source/Scene/VoxelShapeType.js +3 -1
  319. package/Source/Scene/buildVectorGltfFromMVT.js +1059 -0
  320. package/Source/Scene/buildVoxelCustomShader.js +199 -0
  321. package/Source/Scene/decodeMVT.js +634 -0
  322. package/Source/Scene/renderBufferPointCollection.js +124 -127
  323. package/Source/Scene/renderBufferPolygonCollection.js +122 -122
  324. package/Source/Scene/renderBufferPolylineCollection.js +386 -238
  325. package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
  326. package/Source/Shaders/BufferPointMaterialFS.js +1 -0
  327. package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
  328. package/Source/Shaders/BufferPointMaterialVS.js +20 -10
  329. package/Source/Shaders/BufferPolygonMaterialVS.glsl +13 -4
  330. package/Source/Shaders/BufferPolygonMaterialVS.js +14 -5
  331. package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
  332. package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
  333. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
  334. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
  335. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  336. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  337. package/Source/Shaders/Builtin/CzmBuiltins.js +4 -0
  338. package/Source/Shaders/Builtin/Functions/computeTextureTransform.glsl +24 -0
  339. package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
  340. package/Source/Shaders/Model/ConstantLodStageFS.glsl +60 -0
  341. package/Source/Shaders/Model/ConstantLodStageFS.js +62 -0
  342. package/Source/Shaders/Model/ConstantLodStageVS.glsl +12 -0
  343. package/Source/Shaders/Model/ConstantLodStageVS.js +13 -0
  344. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +0 -1
  345. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
  346. package/Source/Shaders/Model/MaterialStageFS.glsl +46 -20
  347. package/Source/Shaders/Model/MaterialStageFS.js +46 -20
  348. package/Source/Shaders/Voxels/convertLocalToBoxUv.glsl +0 -1
  349. package/Source/Shaders/Voxels/convertLocalToBoxUv.js +0 -1
  350. package/Source/Shaders/Voxels/convertLocalToCylinderUv.glsl +7 -9
  351. package/Source/Shaders/Voxels/convertLocalToCylinderUv.js +7 -9
  352. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.glsl +7 -17
  353. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.js +7 -17
  354. package/Source/Widget/CesiumWidget.js +11 -4
  355. package/index.d.ts +595 -343
  356. package/index.js +392 -378
  357. package/package.json +3 -3
  358. package/Build/Workers/chunk-DVB56LG7.js +0 -114
  359. package/Build/Workers/chunk-HKUES6UG.js +0 -2357
  360. package/Build/Workers/chunk-HRHRYFHS.js +0 -940
  361. package/Build/Workers/chunk-KLPGTXS3.js +0 -642
  362. package/Build/Workers/chunk-ZBZRTRJB.js +0 -1829
@@ -1,3 +1,4 @@
1
+ import buildVoxelCustomShader from "./buildVoxelCustomShader.js";
1
2
  import buildVoxelDrawCommands from "./buildVoxelDrawCommands.js";
2
3
  import Cartesian2 from "../Core/Cartesian2.js";
3
4
  import Cartesian3 from "../Core/Cartesian3.js";
@@ -51,6 +52,13 @@ import VoxelMetadataOrder from "./VoxelMetadataOrder.js";
51
52
  */
52
53
  function VoxelPrimitive(options) {
53
54
  options = options ?? Frozen.EMPTY_OBJECT;
55
+ const {
56
+ provider = VoxelPrimitive.DefaultProvider,
57
+ modelMatrix = Matrix4.IDENTITY,
58
+ customShader = buildVoxelCustomShader(provider),
59
+ clock,
60
+ calculateStatistics = false,
61
+ } = options;
54
62
 
55
63
  /**
56
64
  * @type {boolean}
@@ -62,10 +70,10 @@ function VoxelPrimitive(options) {
62
70
  * @type {VoxelProvider}
63
71
  * @private
64
72
  */
65
- this._provider = options.provider ?? VoxelPrimitive.DefaultProvider;
73
+ this._provider = provider;
66
74
 
67
75
  /**
68
- * This member is not created until the provider and shape are ready.
76
+ * This member is not created until the first update loop.
69
77
  *
70
78
  * @type {VoxelTraversal}
71
79
  * @private
@@ -82,73 +90,64 @@ function VoxelPrimitive(options) {
82
90
  * @type {boolean}
83
91
  * @private
84
92
  */
85
- this._calculateStatistics = options.calculateStatistics ?? false;
86
-
87
- /**
88
- * This member is not created until the provider is ready.
89
- *
90
- * @type {VoxelShape}
91
- * @private
92
- */
93
- this._shape = undefined;
93
+ this._calculateStatistics = calculateStatistics;
94
94
 
95
- /**
96
- * @type {boolean}
97
- * @private
98
- */
99
- this._shapeVisible = false;
95
+ const {
96
+ shape: shapeType,
97
+ minBounds = VoxelShapeType.getMinBounds(shapeType),
98
+ maxBounds = VoxelShapeType.getMaxBounds(shapeType),
99
+ dimensions,
100
+ paddingBefore = Cartesian3.ZERO,
101
+ paddingAfter = Cartesian3.ZERO,
102
+ metadataOrder,
103
+ availableLevels = 1,
104
+ } = provider;
100
105
 
101
106
  /**
102
- * This member is not created until the provider is ready.
103
- *
104
107
  * @type {Cartesian3}
108
+ * @readonly
109
+ * @constant
105
110
  * @private
106
111
  */
107
- this._dimensions = new Cartesian3();
112
+ this._dimensions = Cartesian3.clone(dimensions);
108
113
 
109
114
  /**
110
- * This member is not created until the provider is ready.
111
- *
112
115
  * @type {Cartesian3}
113
116
  * @private
114
117
  */
115
- this._inputDimensions = new Cartesian3();
118
+ this._paddingBefore = Cartesian3.clone(paddingBefore);
116
119
 
117
120
  /**
118
- * This member is not created until the provider is ready.
119
- *
120
121
  * @type {Cartesian3}
121
122
  * @private
122
123
  */
123
- this._paddingBefore = new Cartesian3();
124
+ this._paddingAfter = Cartesian3.clone(paddingAfter);
124
125
 
125
126
  /**
126
- * This member is not created until the provider is ready.
127
- *
128
127
  * @type {Cartesian3}
129
128
  * @private
130
129
  */
131
- this._paddingAfter = new Cartesian3();
130
+ this._inputDimensions = computeInputDimensions(
131
+ dimensions,
132
+ paddingBefore,
133
+ paddingAfter,
134
+ metadataOrder,
135
+ );
132
136
 
133
137
  /**
134
- * This member is not known until the provider is ready.
135
- *
136
138
  * @type {number}
137
139
  * @private
138
140
  */
139
- this._availableLevels = 1;
141
+ this._availableLevels = availableLevels;
140
142
 
141
143
  /**
142
- * This member is not known until the provider is ready.
143
- *
144
144
  * @type {Cartesian3}
145
145
  * @private
146
146
  */
147
- this._minBounds = new Cartesian3();
147
+ this._minBounds = minBounds.clone();
148
148
 
149
149
  /**
150
150
  * Used to detect if the shape is dirty.
151
- * This member is not known until the provider is ready.
152
151
  *
153
152
  * @type {Cartesian3}
154
153
  * @private
@@ -156,16 +155,13 @@ function VoxelPrimitive(options) {
156
155
  this._minBoundsOld = new Cartesian3();
157
156
 
158
157
  /**
159
- * This member is not known until the provider is ready.
160
- *
161
158
  * @type {Cartesian3}
162
159
  * @private
163
160
  */
164
- this._maxBounds = new Cartesian3();
161
+ this._maxBounds = maxBounds.clone();
165
162
 
166
163
  /**
167
164
  * Used to detect if the shape is dirty.
168
- * This member is not known until the provider is ready.
169
165
  *
170
166
  * @type {Cartesian3}
171
167
  * @private
@@ -173,16 +169,13 @@ function VoxelPrimitive(options) {
173
169
  this._maxBoundsOld = new Cartesian3();
174
170
 
175
171
  /**
176
- * This member is not known until the provider is ready.
177
- *
178
172
  * @type {Cartesian3}
179
173
  * @private
180
174
  */
181
- this._minClippingBounds = new Cartesian3();
175
+ this._minClippingBounds = minBounds.clone();
182
176
 
183
177
  /**
184
178
  * Used to detect if the clipping is dirty.
185
- * This member is not known until the provider is ready.
186
179
  *
187
180
  * @type {Cartesian3}
188
181
  * @private
@@ -190,16 +183,13 @@ function VoxelPrimitive(options) {
190
183
  this._minClippingBoundsOld = new Cartesian3();
191
184
 
192
185
  /**
193
- * This member is not known until the provider is ready.
194
- *
195
186
  * @type {Cartesian3}
196
187
  * @private
197
188
  */
198
- this._maxClippingBounds = new Cartesian3();
189
+ this._maxClippingBounds = maxBounds.clone();
199
190
 
200
191
  /**
201
192
  * Used to detect if the clipping is dirty.
202
- * This member is not known until the provider is ready.
203
193
  *
204
194
  * @type {Cartesian3}
205
195
  * @private
@@ -252,7 +242,7 @@ function VoxelPrimitive(options) {
252
242
  * @type {Matrix4}
253
243
  * @private
254
244
  */
255
- this._modelMatrix = Matrix4.clone(options.modelMatrix ?? Matrix4.IDENTITY);
245
+ this._modelMatrix = Matrix4.clone(modelMatrix);
256
246
 
257
247
  /**
258
248
  * Used to detect if the model matrix is dirty.
@@ -266,8 +256,7 @@ function VoxelPrimitive(options) {
266
256
  * @type {CustomShader}
267
257
  * @private
268
258
  */
269
- this._customShader =
270
- options.customShader ?? VoxelPrimitive.DefaultCustomShader;
259
+ this._customShader = customShader ?? VoxelPrimitive.DefaultCustomShader;
271
260
 
272
261
  /**
273
262
  * @type {Event}
@@ -303,7 +292,7 @@ function VoxelPrimitive(options) {
303
292
  * @type {Clock}
304
293
  * @private
305
294
  */
306
- this._clock = options.clock;
295
+ this._clock = clock;
307
296
 
308
297
  // Transforms and other values that are computed when the shape changes
309
298
  /**
@@ -393,6 +382,22 @@ function VoxelPrimitive(options) {
393
382
  */
394
383
  this._disableUpdate = false;
395
384
 
385
+ const ShapeConstructor = VoxelShapeType.getShapeConstructor(shapeType);
386
+
387
+ /**
388
+ * @type {VoxelShape}
389
+ * @private
390
+ */
391
+ this._shape = new ShapeConstructor();
392
+
393
+ checkTransformAndBounds(this);
394
+
395
+ /**
396
+ * @type {boolean}
397
+ * @private
398
+ */
399
+ this._shapeVisible = updateShapeAndTransforms(this);
400
+
396
401
  /**
397
402
  * @type {Object<string, any>}
398
403
  * @private
@@ -406,10 +411,10 @@ function VoxelPrimitive(options) {
406
411
  octreeLeafNodeTexelSizeUv: new Cartesian2(),
407
412
  megatextureTextures: [],
408
413
  megatextureTileCounts: new Cartesian3(),
409
- dimensions: new Cartesian3(),
410
- inputDimensions: new Cartesian3(),
411
- paddingBefore: new Cartesian3(),
412
- paddingAfter: new Cartesian3(),
414
+ dimensions: this._dimensions,
415
+ inputDimensions: this._inputDimensions,
416
+ paddingBefore: this._paddingBefore,
417
+ paddingAfter: this._paddingAfter,
413
418
  transformPositionViewToLocal: new Matrix4(),
414
419
  transformDirectionViewToLocal: new Matrix3(),
415
420
  cameraPositionLocal: new Cartesian3(),
@@ -420,7 +425,7 @@ function VoxelPrimitive(options) {
420
425
  clippingPlanesTexture: undefined,
421
426
  clippingPlanesMatrix: new Matrix4(),
422
427
  renderBoundPlanesTexture: undefined,
423
- stepSize: 0,
428
+ stepSize: this._stepSizeMultiplier,
424
429
  pickColor: new Color(),
425
430
  };
426
431
 
@@ -449,6 +454,8 @@ function VoxelPrimitive(options) {
449
454
  }
450
455
  }
451
456
 
457
+ setupShapeUniformsAndDefines(this, this._shape);
458
+
452
459
  /**
453
460
  * The event fired to indicate that a tile's content was loaded.
454
461
  * <p>
@@ -565,31 +572,68 @@ function VoxelPrimitive(options) {
565
572
  * @see Cesium3DTileset#allTilesLoaded
566
573
  */
567
574
  this.initialTilesLoaded = new Event();
568
-
569
- // If the provider fails to initialize the primitive will fail too.
570
- const provider = this._provider;
571
- initialize(this, provider);
572
575
  }
573
576
 
574
- function initialize(primitive, provider) {
575
- // Set the bounds
576
- const {
577
- shape: shapeType,
578
- minBounds = VoxelShapeType.getMinBounds(shapeType),
579
- maxBounds = VoxelShapeType.getMaxBounds(shapeType),
580
- } = provider;
577
+ /**
578
+ * Computes the dimensions of the input voxel data, including padding and in the input orientation.
579
+ *
580
+ * @param {Cartesian3} dimensions The dimensions of the voxel data, not including padding, in z-up orientation.
581
+ * @param {Cartesian3} paddingBefore The padding before the voxel data.
582
+ * @param {Cartesian3} paddingAfter The padding after the voxel data.
583
+ * @param {VoxelMetadataOrder} metadataOrder The ordering of the input metadata dimensions.
584
+ *
585
+ * @private
586
+ */
587
+ function computeInputDimensions(
588
+ dimensions,
589
+ paddingBefore,
590
+ paddingAfter,
591
+ metadataOrder,
592
+ ) {
593
+ const inputDimensions = Cartesian3.add(
594
+ dimensions,
595
+ paddingBefore,
596
+ new Cartesian3(),
597
+ );
598
+ Cartesian3.add(inputDimensions, paddingAfter, inputDimensions);
599
+ if (metadataOrder === VoxelMetadataOrder.Y_UP) {
600
+ const inputDimensionsY = inputDimensions.y;
601
+ inputDimensions.y = inputDimensions.z;
602
+ inputDimensions.z = inputDimensionsY;
603
+ }
604
+ return inputDimensions;
605
+ }
581
606
 
582
- primitive.minBounds = minBounds;
583
- primitive.maxBounds = maxBounds;
584
- primitive.minClippingBounds = minBounds.clone();
585
- primitive.maxClippingBounds = maxBounds.clone();
607
+ /**
608
+ * Combine uniforms from the shape with the primitive uniform map, and
609
+ * setup change tracking for shape defines to know when to rebuild the shader.
610
+ *
611
+ * @param {VoxelPrimitive} primitive The primitive with which the shape uniforms are associated.
612
+ * @param {VoxelShape} shape The shape from which to pull the shader uniforms and defines.
613
+ *
614
+ * @private
615
+ */
616
+ function setupShapeUniformsAndDefines(primitive, shape) {
617
+ const uniformMap = primitive._uniformMap;
618
+ const { shaderUniforms, shaderDefines } = shape;
619
+ for (const uniformName in shaderUniforms) {
620
+ if (shaderUniforms.hasOwnProperty(uniformName)) {
621
+ const name = `u_${uniformName}`;
586
622
 
587
- checkTransformAndBounds(primitive);
623
+ //>>includeStart('debug', pragmas.debug);
624
+ if (defined(uniformMap[name])) {
625
+ oneTimeWarning(
626
+ `VoxelPrimitive: Uniform name "${name}" is already defined`,
627
+ );
628
+ }
629
+ //>>includeEnd('debug');
588
630
 
589
- // Create the shape object, and update it so it is valid for VoxelTraversal
590
- const ShapeConstructor = VoxelShapeType.getShapeConstructor(shapeType);
591
- primitive._shape = new ShapeConstructor();
592
- primitive._shapeVisible = updateShapeAndTransforms(primitive);
631
+ uniformMap[name] = function () {
632
+ return shaderUniforms[uniformName];
633
+ };
634
+ }
635
+ }
636
+ primitive._shapeDefinesOld = clone(shaderDefines, true);
593
637
  }
594
638
 
595
639
  Object.defineProperties(VoxelPrimitive.prototype, {
@@ -685,6 +729,7 @@ Object.defineProperties(VoxelPrimitive.prototype, {
685
729
  * @memberof VoxelPrimitive.prototype
686
730
  * @type {Cartesian3}
687
731
  * @readonly
732
+ * @constant
688
733
  */
689
734
  dimensions: {
690
735
  get: function () {
@@ -698,6 +743,7 @@ Object.defineProperties(VoxelPrimitive.prototype, {
698
743
  * @memberof VoxelPrimitive.prototype
699
744
  * @type {Cartesian3}
700
745
  * @readonly
746
+ * @constant
701
747
  */
702
748
  inputDimensions: {
703
749
  get: function () {
@@ -711,6 +757,7 @@ Object.defineProperties(VoxelPrimitive.prototype, {
711
757
  * @memberof VoxelPrimitive.prototype
712
758
  * @type {Cartesian3}
713
759
  * @readonly
760
+ * @constant
714
761
  */
715
762
  paddingBefore: {
716
763
  get: function () {
@@ -724,6 +771,7 @@ Object.defineProperties(VoxelPrimitive.prototype, {
724
771
  * @memberof VoxelPrimitive.prototype
725
772
  * @type {Cartesian3}
726
773
  * @readonly
774
+ * @constant
727
775
  */
728
776
  paddingAfter: {
729
777
  get: function () {
@@ -737,6 +785,7 @@ Object.defineProperties(VoxelPrimitive.prototype, {
737
785
  * @memberof VoxelPrimitive.prototype
738
786
  * @type {number[][]}
739
787
  * @readonly
788
+ * @constant
740
789
  */
741
790
  minimumValues: {
742
791
  get: function () {
@@ -750,6 +799,7 @@ Object.defineProperties(VoxelPrimitive.prototype, {
750
799
  * @memberof VoxelPrimitive.prototype
751
800
  * @type {number[][]}
752
801
  * @readonly
802
+ * @constant
753
803
  */
754
804
  maximumValues: {
755
805
  get: function () {
@@ -1023,7 +1073,8 @@ Object.defineProperties(VoxelPrimitive.prototype, {
1023
1073
  },
1024
1074
 
1025
1075
  /**
1026
- * Gets or sets the custom shader. If undefined, {@link VoxelPrimitive.DefaultCustomShader} is set.
1076
+ * Gets or sets the custom shader. If undefined, attempt to build a default custom shader
1077
+ * appropriate to the metadata type. If that fails, use {@link VoxelPrimitive.DefaultCustomShader}.
1027
1078
  *
1028
1079
  * @memberof VoxelPrimitive.prototype
1029
1080
  * @type {CustomShader}
@@ -1034,28 +1085,28 @@ Object.defineProperties(VoxelPrimitive.prototype, {
1034
1085
  return this._customShader;
1035
1086
  },
1036
1087
  set: function (customShader) {
1037
- if (this._customShader !== customShader) {
1038
- // Delete old custom shader entries from the uniform map
1039
- const uniformMap = this._uniformMap;
1040
- const oldCustomShader = this._customShader;
1041
- const oldCustomShaderUniformMap = oldCustomShader.uniformMap;
1042
- for (const uniformName in oldCustomShaderUniformMap) {
1043
- if (oldCustomShaderUniformMap.hasOwnProperty(uniformName)) {
1044
- // If the custom shader was set but the voxel shader was never
1045
- // built, the custom shader uniforms wouldn't have been added to
1046
- // the uniform map. But it doesn't matter because the delete
1047
- // operator ignores if the key doesn't exist.
1048
- delete uniformMap[uniformName];
1049
- }
1088
+ if (customShader === this._customShader) {
1089
+ return;
1090
+ }
1091
+ // Delete old custom shader entries from the uniform map
1092
+ // (they were added in VoxelRenderResources when the shader was built)
1093
+ const uniformMap = this._uniformMap;
1094
+ const oldCustomShader = this._customShader;
1095
+ const oldCustomShaderUniformMap = oldCustomShader.uniformMap;
1096
+ for (const uniformName in oldCustomShaderUniformMap) {
1097
+ if (oldCustomShaderUniformMap.hasOwnProperty(uniformName)) {
1098
+ delete uniformMap[uniformName];
1050
1099
  }
1100
+ }
1051
1101
 
1052
- if (!defined(customShader)) {
1053
- this._customShader = VoxelPrimitive.DefaultCustomShader;
1054
- } else {
1055
- this._customShader = customShader;
1056
- }
1057
- this._shaderDirty = true;
1102
+ if (!defined(customShader)) {
1103
+ const defaultShader = buildVoxelCustomShader(this._provider);
1104
+ this._customShader =
1105
+ defaultShader ?? VoxelPrimitive.DefaultCustomShader;
1106
+ } else {
1107
+ this._customShader = customShader;
1058
1108
  }
1109
+ this._shaderDirty = true;
1059
1110
  },
1060
1111
  },
1061
1112
 
@@ -1073,8 +1124,8 @@ Object.defineProperties(VoxelPrimitive.prototype, {
1073
1124
  },
1074
1125
 
1075
1126
  /**
1076
- * Loading and rendering information for requested content
1077
- * To use `visited` and `numberOfTilesWithContentReady` statistics, set options._calculateStatistics` to `true` in the constructor.
1127
+ * Loading and rendering information for requested content.
1128
+ * To use `visited` and `numberOfTilesWithContentReady` statistics, set options.calculateStatistics` to `true` in the constructor.
1078
1129
  * @type {Cesium3DTilesetStatistics}
1079
1130
  * @readonly
1080
1131
  * @private
@@ -1106,12 +1157,13 @@ VoxelPrimitive.prototype.update = function (frameState) {
1106
1157
  // Update the custom shader in case it has texture uniforms.
1107
1158
  this._customShader.update(frameState);
1108
1159
 
1109
- // Initialize from the ready provider. This only happens once.
1160
+ // Initialize from the provider. This only happens once.
1110
1161
  const context = frameState.context;
1111
1162
  if (!this._ready) {
1112
- initFromProvider(this, provider, context);
1113
- // Set the primitive as ready after the first frame render since the user might set up events subscribed to
1114
- // the post render event, and the primitive may not be ready for those past the first frame.
1163
+ initializeFromContext(this, provider, context);
1164
+ // Set the primitive as ready after the first frame render since
1165
+ // the user might set up events subscribed to the post render event,
1166
+ // and the primitive may not be ready for those past the first frame.
1115
1167
  frameState.afterRender.push(() => {
1116
1168
  this._ready = true;
1117
1169
  return true;
@@ -1368,82 +1420,12 @@ function updateVerticalExaggeration(primitive, frameState) {
1368
1420
  * @param {Context} context
1369
1421
  * @private
1370
1422
  */
1371
- function initFromProvider(primitive, provider, context) {
1423
+ function initializeFromContext(primitive, provider, context) {
1372
1424
  const uniforms = primitive._uniforms;
1373
1425
 
1374
1426
  primitive._pickId = context.createPickId({ primitive });
1375
1427
  uniforms.pickColor = Color.clone(primitive._pickId.color, uniforms.pickColor);
1376
1428
 
1377
- const { shaderDefines, shaderUniforms: shapeUniforms } = primitive._shape;
1378
- primitive._shapeDefinesOld = clone(shaderDefines, true);
1379
-
1380
- // Add shape uniforms to the uniform map
1381
- const uniformMap = primitive._uniformMap;
1382
- for (const key in shapeUniforms) {
1383
- if (shapeUniforms.hasOwnProperty(key)) {
1384
- const name = `u_${key}`;
1385
-
1386
- //>>includeStart('debug', pragmas.debug);
1387
- if (defined(uniformMap[name])) {
1388
- oneTimeWarning(
1389
- `VoxelPrimitive: Uniform name "${name}" is already defined`,
1390
- );
1391
- }
1392
- //>>includeEnd('debug');
1393
-
1394
- uniformMap[name] = function () {
1395
- return shapeUniforms[key];
1396
- };
1397
- }
1398
- }
1399
-
1400
- // Set uniforms that come from the provider.
1401
- // Note that minBounds and maxBounds can be set dynamically, so their uniforms aren't set here.
1402
- primitive._dimensions = Cartesian3.clone(
1403
- provider.dimensions,
1404
- primitive._dimensions,
1405
- );
1406
- uniforms.dimensions = Cartesian3.clone(
1407
- primitive._dimensions,
1408
- uniforms.dimensions,
1409
- );
1410
- primitive._paddingBefore = Cartesian3.clone(
1411
- provider.paddingBefore ?? Cartesian3.ZERO,
1412
- primitive._paddingBefore,
1413
- );
1414
- uniforms.paddingBefore = Cartesian3.clone(
1415
- primitive._paddingBefore,
1416
- uniforms.paddingBefore,
1417
- );
1418
- primitive._paddingAfter = Cartesian3.clone(
1419
- provider.paddingAfter ?? Cartesian3.ZERO,
1420
- primitive._paddingAfter,
1421
- );
1422
- uniforms.paddingAfter = Cartesian3.clone(
1423
- primitive._paddingAfter,
1424
- uniforms.paddingAfter,
1425
- );
1426
- primitive._inputDimensions = Cartesian3.add(
1427
- primitive._dimensions,
1428
- primitive._paddingBefore,
1429
- primitive._inputDimensions,
1430
- );
1431
- primitive._inputDimensions = Cartesian3.add(
1432
- primitive._inputDimensions,
1433
- primitive._paddingAfter,
1434
- primitive._inputDimensions,
1435
- );
1436
- if (provider.metadataOrder === VoxelMetadataOrder.Y_UP) {
1437
- const inputDimensionsY = primitive._inputDimensions.y;
1438
- primitive._inputDimensions.y = primitive._inputDimensions.z;
1439
- primitive._inputDimensions.z = inputDimensionsY;
1440
- }
1441
- uniforms.inputDimensions = Cartesian3.clone(
1442
- primitive._inputDimensions,
1443
- uniforms.inputDimensions,
1444
- );
1445
- primitive._availableLevels = provider.availableLevels ?? 1;
1446
-
1447
1429
  // Create the VoxelTraversal, and set related uniforms
1448
1430
  const keyframeCount = provider.keyframeCount ?? 1;
1449
1431
  primitive._traversal = new VoxelTraversal(primitive, context, keyframeCount);
@@ -2122,13 +2104,15 @@ function debugDraw(that, frameState) {
2122
2104
  VoxelPrimitive.DefaultCustomShader = new CustomShader({
2123
2105
  fragmentShaderText: `void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material)
2124
2106
  {
2125
- material.diffuse = vec3(1.0);
2107
+ vec3 voxelNormal = fsInput.attributes.normalEC;
2108
+ float diffuse = max(0.0, dot(voxelNormal, czm_lightDirectionEC));
2109
+ float lighting = 0.5 + 0.5 * diffuse;
2110
+ material.diffuse = vec3(lighting);
2126
2111
  material.alpha = 1.0;
2127
2112
  }`,
2128
2113
  });
2129
2114
 
2130
2115
  function DefaultVoxelProvider() {
2131
- this.ready = true;
2132
2116
  this.shape = VoxelShapeType.BOX;
2133
2117
  this.dimensions = new Cartesian3(1, 1, 1);
2134
2118
  this.names = ["data"];