@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
@@ -0,0 +1,100 @@
1
+ //This file is automatically rebuilt by the Cesium build process.
2
+ export default "#ifdef HAS_EDGE_VISIBILITY\n\
3
+ void edgeVisibilityStageVS() {\n\
4
+ if (!u_isEdgePass) {\n\
5
+ return;\n\
6
+ }\n\
7
+ \n\
8
+ v_edgeType = a_edgeType;\n\
9
+ v_silhouetteNormalView = czm_normal * a_silhouetteNormal;\n\
10
+ v_faceNormalAView = czm_normal * a_faceNormalA;\n\
11
+ v_faceNormalBView = czm_normal * a_faceNormalB;\n\
12
+ v_edgeOffset = a_edgeOffset;\n\
13
+ \n\
14
+ // Silhouette detection: check both endpoints of the edge\n\
15
+ v_shouldDiscard = 0.0;\n\
16
+ float edgeTypeInt = a_edgeType * 255.0;\n\
17
+ if (edgeTypeInt > 0.5 && edgeTypeInt < 1.5) {\n\
18
+ vec3 normalA = normalize(v_faceNormalAView);\n\
19
+ vec3 normalB = normalize(v_faceNormalBView);\n\
20
+ const float perpTol = 2.5e-4;\n\
21
+ \n\
22
+ // Check at current vertex (first endpoint)\n\
23
+ vec4 currentPosEC = czm_modelView * vec4(v_positionMC, 1.0);\n\
24
+ vec3 toEye1 = normalize(-currentPosEC.xyz);\n\
25
+ float dotA1 = dot(normalA, toEye1);\n\
26
+ float dotB1 = dot(normalB, toEye1);\n\
27
+ \n\
28
+ // Check at other vertex (second endpoint)\n\
29
+ vec4 otherPosEC = czm_modelView * vec4(a_edgeOtherPos, 1.0);\n\
30
+ vec3 toEye2 = normalize(-otherPosEC.xyz);\n\
31
+ float dotA2 = dot(normalA, toEye2);\n\
32
+ float dotB2 = dot(normalB, toEye2);\n\
33
+ \n\
34
+ // Discard if EITHER endpoint is non-silhouette\n\
35
+ if (dotA1 * dotB1 > perpTol || dotA2 * dotB2 > perpTol) {\n\
36
+ v_shouldDiscard = 1.0;\n\
37
+ }\n\
38
+ }\n\
39
+ \n\
40
+ #ifdef HAS_EDGE_FEATURE_ID\n\
41
+ v_featureId_0 = a_edgeFeatureId;\n\
42
+ #endif\n\
43
+ \n\
44
+ #ifdef HAS_EDGE_COLOR_ATTRIBUTE\n\
45
+ v_edgeColor = a_edgeColor;\n\
46
+ #endif\n\
47
+ \n\
48
+ #ifdef HAS_LINE_PATTERN\n\
49
+ #ifdef HAS_EDGE_CUMULATIVE_DISTANCE\n\
50
+ v_lineCoord = a_edgeCumulativeDistance * u_pixelsPerWorld;\n\
51
+ #else\n\
52
+ vec4 currentClip = czm_modelViewProjection * vec4(v_positionMC, 1.0);\n\
53
+ vec2 currentScreen = ((currentClip.xy / currentClip.w) * 0.5 + 0.5) * czm_viewport.zw;\n\
54
+ \n\
55
+ vec4 otherClip = czm_modelViewProjection * vec4(a_edgeOtherPos, 1.0);\n\
56
+ vec2 otherScreen = ((otherClip.xy / otherClip.w) * 0.5 + 0.5) * czm_viewport.zw;\n\
57
+ vec2 windowDir = otherScreen - currentScreen;\n\
58
+ \n\
59
+ const float textureCoordinateBase = 8192.0;\n\
60
+ if (abs(windowDir.x) > abs(windowDir.y)) {\n\
61
+ v_lineCoord = textureCoordinateBase + currentScreen.x;\n\
62
+ } else {\n\
63
+ v_lineCoord = textureCoordinateBase + currentScreen.y;\n\
64
+ }\n\
65
+ #endif\n\
66
+ #endif\n\
67
+ \n\
68
+ // Expand vertex to form quad\n\
69
+ vec4 posClip = gl_Position;\n\
70
+ \n\
71
+ if (length(a_edgeOtherPos) > 0.0 && abs(a_edgeOffset) > 0.0) {\n\
72
+ vec4 currentClip = posClip;\n\
73
+ vec4 otherClip = czm_modelViewProjection * vec4(a_edgeOtherPos, 1.0);\n\
74
+ \n\
75
+ vec2 currentNDC = currentClip.xy / currentClip.w;\n\
76
+ vec2 otherNDC = otherClip.xy / otherClip.w;\n\
77
+ \n\
78
+ vec2 edgeDirNDC = otherNDC - currentNDC;\n\
79
+ \n\
80
+ // Ensure consistent edge direction\n\
81
+ if (edgeDirNDC.x < 0.0 || (abs(edgeDirNDC.x) < 0.001 && edgeDirNDC.y < 0.0)) {\n\
82
+ edgeDirNDC = -edgeDirNDC;\n\
83
+ }\n\
84
+ \n\
85
+ edgeDirNDC = normalize(edgeDirNDC);\n\
86
+ vec2 perpNDC = vec2(-edgeDirNDC.y, edgeDirNDC.x);\n\
87
+ \n\
88
+ // Convert line width from pixels to clip space\n\
89
+ float lineWidthPixels = u_lineWidth;\n\
90
+ vec2 viewportSize = czm_viewport.zw;\n\
91
+ vec2 clipPerPixel = (2.0 / viewportSize) * currentClip.w;\n\
92
+ vec2 offsetClip = perpNDC * lineWidthPixels * clipPerPixel * 0.5 * a_edgeOffset;\n\
93
+ \n\
94
+ posClip.xy += offsetClip;\n\
95
+ }\n\
96
+ \n\
97
+ gl_Position = posClip;\n\
98
+ }\n\
99
+ #endif\n\
100
+ ";
@@ -11,17 +11,12 @@ vec3 blend(vec3 sourceColor, vec3 styleColor, float styleColorBlend)
11
11
  return color;
12
12
  }
13
13
 
14
- vec2 computeTextureTransform(vec2 texCoord, mat3 textureTransform)
15
- {
16
- return vec2(textureTransform * vec3(texCoord, 1.0));
17
- }
18
-
19
14
  #ifdef HAS_NORMAL_TEXTURE
20
15
  vec2 getNormalTexCoords()
21
16
  {
22
17
  vec2 texCoord = TEXCOORD_NORMAL;
23
18
  #ifdef HAS_NORMAL_TEXTURE_TRANSFORM
24
- texCoord = vec2(u_normalTextureTransform * vec3(texCoord, 1.0));
19
+ texCoord = czm_computeTextureTransform(texCoord, u_normalTextureTransform);
25
20
  #endif
26
21
  return texCoord;
27
22
  }
@@ -64,7 +59,18 @@ NormalInfo getNormalInfo(ProcessedAttributes attributes)
64
59
 
65
60
  #ifdef HAS_NORMAL_TEXTURE
66
61
  mat3 tbn = mat3(tangent, bitangent, geometryNormal);
67
- vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb;
62
+
63
+ vec3 normalSample;
64
+ #if defined(HAS_NORMAL_CONSTANT_LOD) && defined(HAS_CONSTANT_LOD)
65
+ #ifdef HAS_NORMAL_TEXTURE_TRANSFORM
66
+ normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams, u_normalTextureTransform).rgb;
67
+ #else
68
+ normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams).rgb;
69
+ #endif
70
+ #else
71
+ normalSample = texture(u_normalTexture, normalTexCoords).rgb;
72
+ #endif
73
+
68
74
  normalSample = 2.0 * normalSample - 1.0;
69
75
  #ifdef HAS_NORMAL_TEXTURE_SCALE
70
76
  normalSample.xy *= u_normalTextureScale;
@@ -109,7 +115,18 @@ vec3 getNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal)
109
115
  #endif
110
116
 
111
117
  mat3 tbn = mat3(t, b, geometryNormal);
112
- vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb;
118
+
119
+ vec3 normalSample;
120
+ #if defined(HAS_NORMAL_CONSTANT_LOD) && defined(HAS_CONSTANT_LOD)
121
+ #ifdef HAS_NORMAL_TEXTURE_TRANSFORM
122
+ normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams, u_normalTextureTransform).rgb;
123
+ #else
124
+ normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams).rgb;
125
+ #endif
126
+ #else
127
+ normalSample = texture(u_normalTexture, normalTexCoords).rgb;
128
+ #endif
129
+
113
130
  normalSample = 2.0 * normalSample - 1.0;
114
131
  #ifdef HAS_NORMAL_TEXTURE_SCALE
115
132
  normalSample.xy *= u_normalTextureScale;
@@ -171,10 +188,19 @@ vec4 getBaseColorFromTexture()
171
188
  {
172
189
  vec2 baseColorTexCoords = TEXCOORD_BASE_COLOR;
173
190
  #ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM
174
- baseColorTexCoords = computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform);
191
+ baseColorTexCoords = czm_computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform);
175
192
  #endif
176
193
 
177
- vec4 baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords));
194
+ vec4 baseColorWithAlpha;
195
+ #if defined(HAS_BASE_COLOR_CONSTANT_LOD) && defined(HAS_CONSTANT_LOD)
196
+ #ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM
197
+ baseColorWithAlpha = czm_srgbToLinear(constantLodTextureLookup(u_baseColorTexture, u_baseColorTextureConstantLodParams, u_baseColorTextureTransform));
198
+ #else
199
+ baseColorWithAlpha = czm_srgbToLinear(constantLodTextureLookup(u_baseColorTexture, u_baseColorTextureConstantLodParams));
200
+ #endif
201
+ #else
202
+ baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords));
203
+ #endif
178
204
 
179
205
  #ifdef HAS_BASE_COLOR_FACTOR
180
206
  baseColorWithAlpha *= u_baseColorFactor;
@@ -189,7 +215,7 @@ vec3 getEmissiveFromTexture()
189
215
  {
190
216
  vec2 emissiveTexCoords = TEXCOORD_EMISSIVE;
191
217
  #ifdef HAS_EMISSIVE_TEXTURE_TRANSFORM
192
- emissiveTexCoords = computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform);
218
+ emissiveTexCoords = czm_computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform);
193
219
  #endif
194
220
 
195
221
  vec3 emissive = czm_srgbToLinear(texture(u_emissiveTexture, emissiveTexCoords).rgb);
@@ -207,7 +233,7 @@ void setSpecularGlossiness(inout czm_modelMaterial material)
207
233
  #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE
208
234
  vec2 specularGlossinessTexCoords = TEXCOORD_SPECULAR_GLOSSINESS;
209
235
  #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE_TRANSFORM
210
- specularGlossinessTexCoords = computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform);
236
+ specularGlossinessTexCoords = czm_computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform);
211
237
  #endif
212
238
 
213
239
  vec4 specularGlossiness = czm_srgbToLinear(texture(u_specularGlossinessTexture, specularGlossinessTexCoords));
@@ -237,7 +263,7 @@ void setSpecularGlossiness(inout czm_modelMaterial material)
237
263
  #ifdef HAS_DIFFUSE_TEXTURE
238
264
  vec2 diffuseTexCoords = TEXCOORD_DIFFUSE;
239
265
  #ifdef HAS_DIFFUSE_TEXTURE_TRANSFORM
240
- diffuseTexCoords = computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform);
266
+ diffuseTexCoords = czm_computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform);
241
267
  #endif
242
268
 
243
269
  vec4 diffuse = czm_srgbToLinear(texture(u_diffuseTexture, diffuseTexCoords));
@@ -266,7 +292,7 @@ float setMetallicRoughness(inout czm_modelMaterial material)
266
292
  #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE
267
293
  vec2 metallicRoughnessTexCoords = TEXCOORD_METALLIC_ROUGHNESS;
268
294
  #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE_TRANSFORM
269
- metallicRoughnessTexCoords = computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform);
295
+ metallicRoughnessTexCoords = czm_computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform);
270
296
  #endif
271
297
 
272
298
  vec3 metallicRoughness = texture(u_metallicRoughnessTexture, metallicRoughnessTexCoords).rgb;
@@ -313,7 +339,7 @@ void setSpecular(inout czm_modelMaterial material, in float metalness)
313
339
  #ifdef HAS_SPECULAR_TEXTURE
314
340
  vec2 specularTexCoords = TEXCOORD_SPECULAR;
315
341
  #ifdef HAS_SPECULAR_TEXTURE_TRANSFORM
316
- specularTexCoords = computeTextureTransform(specularTexCoords, u_specularTextureTransform);
342
+ specularTexCoords = czm_computeTextureTransform(specularTexCoords, u_specularTextureTransform);
317
343
  #endif
318
344
  float specularWeight = texture(u_specularTexture, specularTexCoords).a;
319
345
  #ifdef HAS_SPECULAR_FACTOR
@@ -330,7 +356,7 @@ void setSpecular(inout czm_modelMaterial material, in float metalness)
330
356
  #ifdef HAS_SPECULAR_COLOR_TEXTURE
331
357
  vec2 specularColorTexCoords = TEXCOORD_SPECULAR_COLOR;
332
358
  #ifdef HAS_SPECULAR_COLOR_TEXTURE_TRANSFORM
333
- specularColorTexCoords = computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform);
359
+ specularColorTexCoords = czm_computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform);
334
360
  #endif
335
361
  vec3 specularColorSample = texture(u_specularColorTexture, specularColorTexCoords).rgb;
336
362
  vec3 specularColorFactor = czm_srgbToLinear(specularColorSample);
@@ -360,7 +386,7 @@ void setAnisotropy(inout czm_modelMaterial material, in NormalInfo normalInfo)
360
386
  #ifdef HAS_ANISOTROPY_TEXTURE
361
387
  vec2 anisotropyTexCoords = TEXCOORD_ANISOTROPY;
362
388
  #ifdef HAS_ANISOTROPY_TEXTURE_TRANSFORM
363
- anisotropyTexCoords = computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform);
389
+ anisotropyTexCoords = czm_computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform);
364
390
  #endif
365
391
  vec3 anisotropySample = texture(u_anisotropyTexture, anisotropyTexCoords).rgb;
366
392
  direction = anisotropySample.rg * 2.0 - vec2(1.0);
@@ -383,7 +409,7 @@ void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attri
383
409
  #ifdef HAS_CLEARCOAT_TEXTURE
384
410
  vec2 clearcoatTexCoords = TEXCOORD_CLEARCOAT;
385
411
  #ifdef HAS_CLEARCOAT_TEXTURE_TRANSFORM
386
- clearcoatTexCoords = computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform);
412
+ clearcoatTexCoords = czm_computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform);
387
413
  #endif
388
414
  float clearcoatFactor = texture(u_clearcoatTexture, clearcoatTexCoords).r;
389
415
  #ifdef HAS_CLEARCOAT_FACTOR
@@ -401,7 +427,7 @@ void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attri
401
427
  #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE
402
428
  vec2 clearcoatRoughnessTexCoords = TEXCOORD_CLEARCOAT_ROUGHNESS;
403
429
  #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE_TRANSFORM
404
- clearcoatRoughnessTexCoords = computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform);
430
+ clearcoatRoughnessTexCoords = czm_computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform);
405
431
  #endif
406
432
  float clearcoatRoughness = texture(u_clearcoatRoughnessTexture, clearcoatRoughnessTexCoords).g;
407
433
  #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR
@@ -469,7 +495,7 @@ void materialStage(inout czm_modelMaterial material, ProcessedAttributes attribu
469
495
  #ifdef HAS_OCCLUSION_TEXTURE
470
496
  vec2 occlusionTexCoords = TEXCOORD_OCCLUSION;
471
497
  #ifdef HAS_OCCLUSION_TEXTURE_TRANSFORM
472
- occlusionTexCoords = computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform);
498
+ occlusionTexCoords = czm_computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform);
473
499
  #endif
474
500
  material.occlusion = texture(u_occlusionTexture, occlusionTexCoords).r;
475
501
  #endif
@@ -12,17 +12,12 @@ vec3 blend(vec3 sourceColor, vec3 styleColor, float styleColorBlend)\n\
12
12
  return color;\n\
13
13
  }\n\
14
14
  \n\
15
- vec2 computeTextureTransform(vec2 texCoord, mat3 textureTransform)\n\
16
- {\n\
17
- return vec2(textureTransform * vec3(texCoord, 1.0));\n\
18
- }\n\
19
- \n\
20
15
  #ifdef HAS_NORMAL_TEXTURE\n\
21
16
  vec2 getNormalTexCoords()\n\
22
17
  {\n\
23
18
  vec2 texCoord = TEXCOORD_NORMAL;\n\
24
19
  #ifdef HAS_NORMAL_TEXTURE_TRANSFORM\n\
25
- texCoord = vec2(u_normalTextureTransform * vec3(texCoord, 1.0));\n\
20
+ texCoord = czm_computeTextureTransform(texCoord, u_normalTextureTransform);\n\
26
21
  #endif\n\
27
22
  return texCoord;\n\
28
23
  }\n\
@@ -65,7 +60,18 @@ NormalInfo getNormalInfo(ProcessedAttributes attributes)\n\
65
60
  \n\
66
61
  #ifdef HAS_NORMAL_TEXTURE\n\
67
62
  mat3 tbn = mat3(tangent, bitangent, geometryNormal);\n\
68
- vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb;\n\
63
+ \n\
64
+ vec3 normalSample;\n\
65
+ #if defined(HAS_NORMAL_CONSTANT_LOD) && defined(HAS_CONSTANT_LOD)\n\
66
+ #ifdef HAS_NORMAL_TEXTURE_TRANSFORM\n\
67
+ normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams, u_normalTextureTransform).rgb;\n\
68
+ #else\n\
69
+ normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams).rgb;\n\
70
+ #endif\n\
71
+ #else\n\
72
+ normalSample = texture(u_normalTexture, normalTexCoords).rgb;\n\
73
+ #endif\n\
74
+ \n\
69
75
  normalSample = 2.0 * normalSample - 1.0;\n\
70
76
  #ifdef HAS_NORMAL_TEXTURE_SCALE\n\
71
77
  normalSample.xy *= u_normalTextureScale;\n\
@@ -110,7 +116,18 @@ vec3 getNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal)\n
110
116
  #endif\n\
111
117
  \n\
112
118
  mat3 tbn = mat3(t, b, geometryNormal);\n\
113
- vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb;\n\
119
+ \n\
120
+ vec3 normalSample;\n\
121
+ #if defined(HAS_NORMAL_CONSTANT_LOD) && defined(HAS_CONSTANT_LOD)\n\
122
+ #ifdef HAS_NORMAL_TEXTURE_TRANSFORM\n\
123
+ normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams, u_normalTextureTransform).rgb;\n\
124
+ #else\n\
125
+ normalSample = constantLodTextureLookup(u_normalTexture, u_normalTextureConstantLodParams).rgb;\n\
126
+ #endif\n\
127
+ #else\n\
128
+ normalSample = texture(u_normalTexture, normalTexCoords).rgb;\n\
129
+ #endif\n\
130
+ \n\
114
131
  normalSample = 2.0 * normalSample - 1.0;\n\
115
132
  #ifdef HAS_NORMAL_TEXTURE_SCALE\n\
116
133
  normalSample.xy *= u_normalTextureScale;\n\
@@ -172,10 +189,19 @@ vec4 getBaseColorFromTexture()\n\
172
189
  {\n\
173
190
  vec2 baseColorTexCoords = TEXCOORD_BASE_COLOR;\n\
174
191
  #ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM\n\
175
- baseColorTexCoords = computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform);\n\
192
+ baseColorTexCoords = czm_computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform);\n\
176
193
  #endif\n\
177
194
  \n\
178
- vec4 baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords));\n\
195
+ vec4 baseColorWithAlpha;\n\
196
+ #if defined(HAS_BASE_COLOR_CONSTANT_LOD) && defined(HAS_CONSTANT_LOD)\n\
197
+ #ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM\n\
198
+ baseColorWithAlpha = czm_srgbToLinear(constantLodTextureLookup(u_baseColorTexture, u_baseColorTextureConstantLodParams, u_baseColorTextureTransform));\n\
199
+ #else\n\
200
+ baseColorWithAlpha = czm_srgbToLinear(constantLodTextureLookup(u_baseColorTexture, u_baseColorTextureConstantLodParams));\n\
201
+ #endif\n\
202
+ #else\n\
203
+ baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords));\n\
204
+ #endif\n\
179
205
  \n\
180
206
  #ifdef HAS_BASE_COLOR_FACTOR\n\
181
207
  baseColorWithAlpha *= u_baseColorFactor;\n\
@@ -190,7 +216,7 @@ vec3 getEmissiveFromTexture()\n\
190
216
  {\n\
191
217
  vec2 emissiveTexCoords = TEXCOORD_EMISSIVE;\n\
192
218
  #ifdef HAS_EMISSIVE_TEXTURE_TRANSFORM\n\
193
- emissiveTexCoords = computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform);\n\
219
+ emissiveTexCoords = czm_computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform);\n\
194
220
  #endif\n\
195
221
  \n\
196
222
  vec3 emissive = czm_srgbToLinear(texture(u_emissiveTexture, emissiveTexCoords).rgb);\n\
@@ -208,7 +234,7 @@ void setSpecularGlossiness(inout czm_modelMaterial material)\n\
208
234
  #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE\n\
209
235
  vec2 specularGlossinessTexCoords = TEXCOORD_SPECULAR_GLOSSINESS;\n\
210
236
  #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE_TRANSFORM\n\
211
- specularGlossinessTexCoords = computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform);\n\
237
+ specularGlossinessTexCoords = czm_computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform);\n\
212
238
  #endif\n\
213
239
  \n\
214
240
  vec4 specularGlossiness = czm_srgbToLinear(texture(u_specularGlossinessTexture, specularGlossinessTexCoords));\n\
@@ -238,7 +264,7 @@ void setSpecularGlossiness(inout czm_modelMaterial material)\n\
238
264
  #ifdef HAS_DIFFUSE_TEXTURE\n\
239
265
  vec2 diffuseTexCoords = TEXCOORD_DIFFUSE;\n\
240
266
  #ifdef HAS_DIFFUSE_TEXTURE_TRANSFORM\n\
241
- diffuseTexCoords = computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform);\n\
267
+ diffuseTexCoords = czm_computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform);\n\
242
268
  #endif\n\
243
269
  \n\
244
270
  vec4 diffuse = czm_srgbToLinear(texture(u_diffuseTexture, diffuseTexCoords));\n\
@@ -267,7 +293,7 @@ float setMetallicRoughness(inout czm_modelMaterial material)\n\
267
293
  #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE\n\
268
294
  vec2 metallicRoughnessTexCoords = TEXCOORD_METALLIC_ROUGHNESS;\n\
269
295
  #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE_TRANSFORM\n\
270
- metallicRoughnessTexCoords = computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform);\n\
296
+ metallicRoughnessTexCoords = czm_computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform);\n\
271
297
  #endif\n\
272
298
  \n\
273
299
  vec3 metallicRoughness = texture(u_metallicRoughnessTexture, metallicRoughnessTexCoords).rgb;\n\
@@ -314,7 +340,7 @@ void setSpecular(inout czm_modelMaterial material, in float metalness)\n\
314
340
  #ifdef HAS_SPECULAR_TEXTURE\n\
315
341
  vec2 specularTexCoords = TEXCOORD_SPECULAR;\n\
316
342
  #ifdef HAS_SPECULAR_TEXTURE_TRANSFORM\n\
317
- specularTexCoords = computeTextureTransform(specularTexCoords, u_specularTextureTransform);\n\
343
+ specularTexCoords = czm_computeTextureTransform(specularTexCoords, u_specularTextureTransform);\n\
318
344
  #endif\n\
319
345
  float specularWeight = texture(u_specularTexture, specularTexCoords).a;\n\
320
346
  #ifdef HAS_SPECULAR_FACTOR\n\
@@ -331,7 +357,7 @@ void setSpecular(inout czm_modelMaterial material, in float metalness)\n\
331
357
  #ifdef HAS_SPECULAR_COLOR_TEXTURE\n\
332
358
  vec2 specularColorTexCoords = TEXCOORD_SPECULAR_COLOR;\n\
333
359
  #ifdef HAS_SPECULAR_COLOR_TEXTURE_TRANSFORM\n\
334
- specularColorTexCoords = computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform);\n\
360
+ specularColorTexCoords = czm_computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform);\n\
335
361
  #endif\n\
336
362
  vec3 specularColorSample = texture(u_specularColorTexture, specularColorTexCoords).rgb;\n\
337
363
  vec3 specularColorFactor = czm_srgbToLinear(specularColorSample);\n\
@@ -361,7 +387,7 @@ void setAnisotropy(inout czm_modelMaterial material, in NormalInfo normalInfo)\n
361
387
  #ifdef HAS_ANISOTROPY_TEXTURE\n\
362
388
  vec2 anisotropyTexCoords = TEXCOORD_ANISOTROPY;\n\
363
389
  #ifdef HAS_ANISOTROPY_TEXTURE_TRANSFORM\n\
364
- anisotropyTexCoords = computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform);\n\
390
+ anisotropyTexCoords = czm_computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform);\n\
365
391
  #endif\n\
366
392
  vec3 anisotropySample = texture(u_anisotropyTexture, anisotropyTexCoords).rgb;\n\
367
393
  direction = anisotropySample.rg * 2.0 - vec2(1.0);\n\
@@ -384,7 +410,7 @@ void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attri
384
410
  #ifdef HAS_CLEARCOAT_TEXTURE\n\
385
411
  vec2 clearcoatTexCoords = TEXCOORD_CLEARCOAT;\n\
386
412
  #ifdef HAS_CLEARCOAT_TEXTURE_TRANSFORM\n\
387
- clearcoatTexCoords = computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform);\n\
413
+ clearcoatTexCoords = czm_computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform);\n\
388
414
  #endif\n\
389
415
  float clearcoatFactor = texture(u_clearcoatTexture, clearcoatTexCoords).r;\n\
390
416
  #ifdef HAS_CLEARCOAT_FACTOR\n\
@@ -402,7 +428,7 @@ void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attri
402
428
  #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE\n\
403
429
  vec2 clearcoatRoughnessTexCoords = TEXCOORD_CLEARCOAT_ROUGHNESS;\n\
404
430
  #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE_TRANSFORM\n\
405
- clearcoatRoughnessTexCoords = computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform);\n\
431
+ clearcoatRoughnessTexCoords = czm_computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform);\n\
406
432
  #endif\n\
407
433
  float clearcoatRoughness = texture(u_clearcoatRoughnessTexture, clearcoatRoughnessTexCoords).g;\n\
408
434
  #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR\n\
@@ -470,7 +496,7 @@ void materialStage(inout czm_modelMaterial material, ProcessedAttributes attribu
470
496
  #ifdef HAS_OCCLUSION_TEXTURE\n\
471
497
  vec2 occlusionTexCoords = TEXCOORD_OCCLUSION;\n\
472
498
  #ifdef HAS_OCCLUSION_TEXTURE_TRANSFORM\n\
473
- occlusionTexCoords = computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform);\n\
499
+ occlusionTexCoords = czm_computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform);\n\
474
500
  #endif\n\
475
501
  material.occlusion = texture(u_occlusionTexture, occlusionTexCoords).r;\n\
476
502
  #endif\n\
@@ -25,6 +25,19 @@ vec4 handleAlpha(vec3 color, float alpha)
25
25
  return vec4(color, alpha);
26
26
  }
27
27
 
28
+ void lineStyleStage()
29
+ {
30
+ #if defined(HAS_LINE_PATTERN) && !defined(HAS_EDGE_VISIBILITY)
31
+ const float maskLength = 16.0;
32
+ float dashPosition = fract(v_lineCoord / maskLength);
33
+ float maskIndex = floor(dashPosition * maskLength);
34
+ float maskTest = floor(u_linePattern / pow(2.0, maskIndex));
35
+ if (mod(maskTest, 2.0) < 1.0) {
36
+ discard;
37
+ }
38
+ #endif
39
+ }
40
+
28
41
  SelectedFeature selectedFeature;
29
42
 
30
43
  void main()
@@ -107,6 +120,8 @@ void main()
107
120
  // When picking metadata END
108
121
  //========================================================================
109
122
 
123
+ lineStyleStage();
124
+
110
125
  #ifdef HAS_CLIPPING_PLANES
111
126
  modelClippingPlanesStage(color);
112
127
  #endif
@@ -26,6 +26,19 @@ vec4 handleAlpha(vec3 color, float alpha)\n\
26
26
  return vec4(color, alpha);\n\
27
27
  }\n\
28
28
  \n\
29
+ void lineStyleStage()\n\
30
+ {\n\
31
+ #if defined(HAS_LINE_PATTERN) && !defined(HAS_EDGE_VISIBILITY)\n\
32
+ const float maskLength = 16.0;\n\
33
+ float dashPosition = fract(v_lineCoord / maskLength);\n\
34
+ float maskIndex = floor(dashPosition * maskLength);\n\
35
+ float maskTest = floor(u_linePattern / pow(2.0, maskIndex));\n\
36
+ if (mod(maskTest, 2.0) < 1.0) {\n\
37
+ discard;\n\
38
+ }\n\
39
+ #endif\n\
40
+ }\n\
41
+ \n\
29
42
  SelectedFeature selectedFeature;\n\
30
43
  \n\
31
44
  void main()\n\
@@ -107,6 +120,8 @@ void main()\n\
107
120
  #endif\n\
108
121
  // When picking metadata END\n\
109
122
  //========================================================================\n\
123
+ \n\
124
+ lineStyleStage();\n\
110
125
  \n\
111
126
  #ifdef HAS_CLIPPING_PLANES\n\
112
127
  modelClippingPlanesStage(color);\n\
@@ -110,6 +110,10 @@ void main()
110
110
  // This returns the value that will be assigned to gl_Position.
111
111
  vec4 positionClip = geometryStage(attributes, modelView, normal);
112
112
 
113
+ #if defined(HAS_LINE_CUMULATIVE_DISTANCE) || defined(HAS_LINE_PATTERN)
114
+ lineStyleStageVS(attributes);
115
+ #endif
116
+
113
117
  // This must go after the geometry stage as it needs v_positionWC
114
118
  #ifdef HAS_ATMOSPHERE
115
119
  atmosphereStage(attributes);
@@ -157,6 +161,10 @@ void main()
157
161
  // We will discard points with v_pointCloudShow == 0 in the fragment shader.
158
162
  gl_Position = positionClip;
159
163
 
164
+ #ifdef HAS_EDGE_VISIBILITY
165
+ edgeVisibilityStageVS();
166
+ #endif
167
+
160
168
  #ifdef HAS_POINT_CLOUD_SHOW_STYLE
161
169
  v_pointCloudShow = show;
162
170
  #endif
@@ -110,6 +110,10 @@ void main()\n\
110
110
  // Compute the final position in each coordinate system needed.\n\
111
111
  // This returns the value that will be assigned to gl_Position.\n\
112
112
  vec4 positionClip = geometryStage(attributes, modelView, normal);\n\
113
+ \n\
114
+ #if defined(HAS_LINE_CUMULATIVE_DISTANCE) || defined(HAS_LINE_PATTERN)\n\
115
+ lineStyleStageVS(attributes);\n\
116
+ #endif\n\
113
117
  \n\
114
118
  // This must go after the geometry stage as it needs v_positionWC\n\
115
119
  #ifdef HAS_ATMOSPHERE\n\
@@ -157,6 +161,10 @@ void main()\n\
157
161
  //\n\
158
162
  // We will discard points with v_pointCloudShow == 0 in the fragment shader.\n\
159
163
  gl_Position = positionClip;\n\
164
+ \n\
165
+ #ifdef HAS_EDGE_VISIBILITY\n\
166
+ edgeVisibilityStageVS();\n\
167
+ #endif\n\
160
168
  \n\
161
169
  #ifdef HAS_POINT_CLOUD_SHOW_STYLE\n\
162
170
  v_pointCloudShow = show;\n\
@@ -52,48 +52,79 @@ void main() {
52
52
  }
53
53
  int regionIndex = getPolygonIndex(dimension, v_textureCoordinates);
54
54
 
55
+ if (regionIndex >= u_extentsLength) {
56
+ return; // done (no polygons in this region)
57
+ }
58
+
55
59
  for (int polygonIndex = 0; polygonIndex < u_polygonsLength; polygonIndex++) {
56
60
  ivec2 positionsLengthAndExtents = getPositionsLengthAndExtentsIndex(lastPolygonIndex);
57
61
  int positionsLength = positionsLengthAndExtents.x;
58
62
  int polygonExtentsIndex = positionsLengthAndExtents.y;
59
63
  lastPolygonIndex += 1;
60
64
 
65
+ // Read the individual polygon extent (2 pixels: south/west, latRange/lonRange)
66
+ vec2 extentsSouthWest = getPolygonPosition(lastPolygonIndex);
67
+ vec2 extentsRange = getPolygonPosition(lastPolygonIndex + 1);
68
+ vec4 polygonExtent = vec4(extentsSouthWest, extentsRange);
69
+ lastPolygonIndex += 2;
70
+
71
+ if (polygonExtentsIndex < regionIndex) {
72
+ lastPolygonIndex += positionsLength;
73
+ continue; // skip to next (TODO: could optimize further if we knew how many polygons to skip)
74
+ } else if (polygonExtentsIndex > regionIndex) {
75
+ break; // done (we know polygons are sorted by regionIndex)
76
+ }
77
+
61
78
  // Only compute signed distance for the relevant part of the atlas
62
- if (polygonExtentsIndex == regionIndex) {
63
- float clipAmount = czm_infinity;
64
- vec4 extents = getExtents(polygonExtentsIndex);
65
- vec2 textureOffset = vec2(mod(float(polygonExtentsIndex), dimension), floor(float(polygonExtentsIndex) / dimension)) / dimension;
66
- vec2 p = getCoordinates((v_textureCoordinates - textureOffset) * dimension, extents);
67
- float s = 1.0;
68
-
69
- // Check each edge for absolute distance
70
- for (int i = 0, j = positionsLength - 1; i < positionsLength; j = i, i++) {
71
- vec2 a = getPolygonPosition(lastPolygonIndex + i);
72
- vec2 b = getPolygonPosition(lastPolygonIndex + j);
73
-
74
- vec2 ab = b - a;
75
- vec2 pa = p - a;
76
- float t = dot(pa, ab) / dot(ab, ab);
77
- t = clamp(t, 0.0, 1.0);
78
-
79
- vec2 pq = pa - t * ab;
80
- float d = length(pq);
81
-
82
- // Inside / outside computation to determine sign
83
- bvec3 cond = bvec3(p.y >= a.y,
84
- p.y < b.y,
85
- ab.x * pa.y > ab.y * pa.x);
86
- if (all(cond) || all(not(cond))) s = -s;
87
- if (abs(d) < abs(clipAmount)) {
88
- clipAmount = d;
89
- }
79
+ float clipAmount = czm_infinity;
80
+ vec4 extents = getExtents(polygonExtentsIndex);
81
+ vec2 textureOffset = vec2(mod(float(polygonExtentsIndex), dimension), floor(float(polygonExtentsIndex) / dimension)) / dimension;
82
+ vec2 p = getCoordinates((v_textureCoordinates - textureOffset) * dimension, extents); // current pixel position
83
+
84
+ // Only consider polygons whos boundingbox includes current pixel (with a slight padding)
85
+ float padding = 0.05; // 5% of polygon extents
86
+ float polygonNorth = polygonExtent.x + polygonExtent.z;
87
+ float polygonEast = polygonExtent.y + polygonExtent.w;
88
+ float latPadding = padding * polygonExtent.z; // padding as fraction of latitude range
89
+ float lonPadding = padding * polygonExtent.w; // padding as fraction of longitude range
90
+ if (p.x < polygonExtent.x - latPadding || p.x > polygonNorth + latPadding ||
91
+ p.y < polygonExtent.y - lonPadding || p.y > polygonEast + lonPadding) {
92
+ lastPolygonIndex += positionsLength;
93
+ continue; // skip to next
94
+ }
95
+
96
+ float s = 1.0;
97
+
98
+ // Check each edge for absolute distance.
99
+ // Cache the previous vertex to halve the texture reads per iteration.
100
+ vec2 prev = getPolygonPosition(lastPolygonIndex + positionsLength - 1);
101
+ for (int i = 0; i < positionsLength; i++) {
102
+ vec2 a = getPolygonPosition(lastPolygonIndex + i);
103
+ vec2 b = prev;
104
+ prev = a;
105
+
106
+ vec2 ab = b - a;
107
+ vec2 pa = p - a;
108
+ float t = dot(pa, ab) / dot(ab, ab);
109
+ t = clamp(t, 0.0, 1.0);
110
+
111
+ vec2 pq = pa - t * ab;
112
+ float d = length(pq);
113
+
114
+ // Inside / outside computation to determine sign
115
+ bvec3 cond = bvec3(p.y >= a.y,
116
+ p.y < b.y,
117
+ ab.x * pa.y > ab.y * pa.x);
118
+ if (all(cond) || all(not(cond))) s = -s;
119
+ if (abs(d) < abs(clipAmount)) {
120
+ clipAmount = d;
90
121
  }
122
+ }
91
123
 
92
- // Normalize the range to [0,1]
93
- vec4 result = (s * vec4(clipAmount * length(extents.zw))) / 2.0 + 0.5;
94
- // In the case where we've iterated through multiple polygons, take the minimum
95
- out_FragColor = min(out_FragColor, result);
96
- }
124
+ // Normalize the range to [0,1]
125
+ vec4 result = (s * vec4(clipAmount * length(extents.zw))) / 2.0 + 0.5;
126
+ // In the case where we've iterated through multiple polygons, take the minimum
127
+ out_FragColor = min(out_FragColor, result);
97
128
 
98
129
  lastPolygonIndex += positionsLength;
99
130
  }