@cesium/engine 1.0.0 → 2.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 (472) hide show
  1. package/Build/Workers/{AttributeCompression-4589338a.js → AttributeCompression-b646d393.js} +1 -1
  2. package/Build/Workers/{AxisAlignedBoundingBox-bfb1234f.js → AxisAlignedBoundingBox-47525601.js} +1 -1
  3. package/Build/Workers/{BoundingRectangle-7ffc2153.js → BoundingRectangle-93b263ac.js} +1 -1
  4. package/Build/Workers/{BoxGeometry-93f344a3.js → BoxGeometry-8c4b4125.js} +1 -1
  5. package/Build/Workers/{Color-0c5aaf47.js → Color-52c60ed7.js} +1 -1
  6. package/Build/Workers/{CoplanarPolygonGeometryLibrary-6597982a.js → CoplanarPolygonGeometryLibrary-33c4c1f8.js} +1 -1
  7. package/Build/Workers/{CorridorGeometryLibrary-2119580e.js → CorridorGeometryLibrary-5039cd8e.js} +1 -1
  8. package/Build/Workers/{CylinderGeometry-f9503c6d.js → CylinderGeometry-3ac44974.js} +1 -1
  9. package/Build/Workers/{EllipseGeometry-fedf72d5.js → EllipseGeometry-a9c9b3be.js} +1 -1
  10. package/Build/Workers/{EllipseGeometryLibrary-4ea68687.js → EllipseGeometryLibrary-855d4681.js} +1 -1
  11. package/Build/Workers/{EllipseOutlineGeometry-e2ae6a35.js → EllipseOutlineGeometry-017a5929.js} +1 -1
  12. package/Build/Workers/{EllipsoidGeodesic-16de63ea.js → EllipsoidGeodesic-98c62a56.js} +1 -1
  13. package/Build/Workers/{EllipsoidGeometry-95c0330e.js → EllipsoidGeometry-826e7bce.js} +1 -1
  14. package/Build/Workers/{EllipsoidOutlineGeometry-d6d2ceec.js → EllipsoidOutlineGeometry-784dcdb5.js} +1 -1
  15. package/Build/Workers/{EllipsoidRhumbLine-ae5e65e0.js → EllipsoidRhumbLine-19756602.js} +1 -1
  16. package/Build/Workers/{EllipsoidTangentPlane-bfc674bf.js → EllipsoidTangentPlane-ed9443a1.js} +1 -1
  17. package/Build/Workers/{EncodedCartesian3-f473ea18.js → EncodedCartesian3-81f70735.js} +1 -1
  18. package/Build/Workers/{FrustumGeometry-3bf2e4eb.js → FrustumGeometry-9f1ee4d8.js} +1 -1
  19. package/Build/Workers/{GeometryAttribute-df5f473e.js → GeometryAttribute-334718f8.js} +1 -1
  20. package/Build/Workers/{GeometryInstance-aa75b4cf.js → GeometryInstance-451dc1cd.js} +1 -1
  21. package/Build/Workers/{GeometryPipeline-f0e46c42.js → GeometryPipeline-8fb0db69.js} +1 -1
  22. package/Build/Workers/{IntersectionTests-9de29d51.js → IntersectionTests-27d49265.js} +1 -1
  23. package/Build/Workers/{Matrix2-ce637455.js → Matrix2-13178034.js} +4 -2
  24. package/Build/Workers/{Matrix3-4f4df527.js → Matrix3-315394f6.js} +2 -1
  25. package/Build/Workers/{OrientedBoundingBox-d3ff3d4d.js → OrientedBoundingBox-79ee7cbb.js} +5 -5
  26. package/Build/Workers/{Plane-b81241c2.js → Plane-900aa728.js} +1 -1
  27. package/Build/Workers/{PolygonGeometryLibrary-6f4937bb.js → PolygonGeometryLibrary-6b5a29e9.js} +1 -1
  28. package/Build/Workers/PolygonPipeline-21668b3f.js +1345 -0
  29. package/Build/Workers/{PolylinePipeline-2e2b015c.js → PolylinePipeline-5e2e1b21.js} +1 -1
  30. package/Build/Workers/{PolylineVolumeGeometryLibrary-7ee1d449.js → PolylineVolumeGeometryLibrary-97f0b94e.js} +1 -1
  31. package/Build/Workers/{PrimitivePipeline-a9b7aae0.js → PrimitivePipeline-5640850a.js} +1 -1
  32. package/Build/Workers/{RectangleGeometryLibrary-9aa6c8f6.js → RectangleGeometryLibrary-d5457f7b.js} +1 -1
  33. package/Build/Workers/{TerrainEncoding-b52dcfc5.js → TerrainEncoding-bfdf2021.js} +1 -1
  34. package/Build/Workers/{Transforms-2f755df8.js → Transforms-a05e5e6e.js} +114 -83
  35. package/Build/Workers/{WallGeometryLibrary-ab19a93d.js → WallGeometryLibrary-6db0ebb6.js} +1 -1
  36. package/Build/Workers/{WebMercatorProjection-9f25de49.js → WebMercatorProjection-13a90d41.js} +1 -1
  37. package/Build/Workers/cesiumWorkerBootstrapper.js +92 -2
  38. package/Build/Workers/combineGeometry.js +1 -1
  39. package/Build/Workers/createBoxGeometry.js +1 -1
  40. package/Build/Workers/createBoxOutlineGeometry.js +1 -1
  41. package/Build/Workers/createCircleGeometry.js +1 -1
  42. package/Build/Workers/createCircleOutlineGeometry.js +1 -1
  43. package/Build/Workers/createCoplanarPolygonGeometry.js +1 -1
  44. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
  45. package/Build/Workers/createCorridorGeometry.js +1 -1
  46. package/Build/Workers/createCorridorOutlineGeometry.js +1 -1
  47. package/Build/Workers/createCylinderGeometry.js +1 -1
  48. package/Build/Workers/createCylinderOutlineGeometry.js +1 -1
  49. package/Build/Workers/createEllipseGeometry.js +1 -1
  50. package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
  51. package/Build/Workers/createEllipsoidGeometry.js +1 -1
  52. package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
  53. package/Build/Workers/createFrustumGeometry.js +1 -1
  54. package/Build/Workers/createFrustumOutlineGeometry.js +1 -1
  55. package/Build/Workers/createGeometry.js +1 -1
  56. package/Build/Workers/createGroundPolylineGeometry.js +1 -1
  57. package/Build/Workers/createPlaneGeometry.js +1 -1
  58. package/Build/Workers/createPlaneOutlineGeometry.js +1 -1
  59. package/Build/Workers/createPolygonGeometry.js +1 -1
  60. package/Build/Workers/createPolygonOutlineGeometry.js +1 -1
  61. package/Build/Workers/createPolylineGeometry.js +1 -1
  62. package/Build/Workers/createPolylineVolumeGeometry.js +1 -1
  63. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
  64. package/Build/Workers/createRectangleGeometry.js +1 -1
  65. package/Build/Workers/createRectangleOutlineGeometry.js +1 -1
  66. package/Build/Workers/createSimplePolylineGeometry.js +1 -1
  67. package/Build/Workers/createSphereGeometry.js +1 -1
  68. package/Build/Workers/createSphereOutlineGeometry.js +1 -1
  69. package/Build/Workers/createVectorTileClampedPolylines.js +1 -1
  70. package/Build/Workers/createVectorTileGeometries.js +1 -1
  71. package/Build/Workers/createVectorTilePoints.js +1 -1
  72. package/Build/Workers/createVectorTilePolygons.js +1 -1
  73. package/Build/Workers/createVectorTilePolylines.js +1 -1
  74. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  75. package/Build/Workers/createVerticesFromHeightmap.js +7 -3
  76. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +1 -1
  77. package/Build/Workers/createWallGeometry.js +1 -1
  78. package/Build/Workers/createWallOutlineGeometry.js +1 -1
  79. package/Build/Workers/decodeDraco.js +9 -1
  80. package/Build/Workers/decodeI3S.js +1 -1
  81. package/Build/Workers/package.js +25 -1
  82. package/Build/Workers/transcodeKTX2.js +22 -2
  83. package/Build/Workers/transferTypedArrayTest.js +25 -1
  84. package/Build/Workers/upsampleQuantizedTerrainMesh.js +1 -1
  85. package/README.md +14 -16
  86. package/Source/Core/EarthOrientationParameters.js +67 -63
  87. package/Source/Core/FeatureDetection.js +18 -0
  88. package/Source/Core/Ion.js +1 -2
  89. package/Source/Core/Matrix2.js +2 -1
  90. package/Source/Core/Matrix3.js +2 -1
  91. package/Source/Core/Matrix4.js +1 -0
  92. package/Source/Core/OrientedBoundingBox.js +4 -4
  93. package/Source/Core/PixelFormat.js +22 -2
  94. package/Source/Core/S2Cell.js +3 -3
  95. package/Source/Core/Transforms.js +3 -7
  96. package/Source/Core/sampleTerrain.js +5 -0
  97. package/Source/DataSources/GpxDataSource.js +4 -6
  98. package/Source/DataSources/KmlDataSource.js +3 -5
  99. package/Source/Renderer/AutomaticUniforms.js +3 -3
  100. package/Source/Renderer/Context.js +20 -12
  101. package/Source/Renderer/Pass.js +3 -2
  102. package/Source/Renderer/ShaderBuilder.js +13 -12
  103. package/Source/Renderer/ShaderSource.js +31 -26
  104. package/Source/Renderer/demodernizeShader.js +76 -0
  105. package/Source/Scene/AutoExposure.js +5 -5
  106. package/Source/Scene/BatchTable.js +5 -5
  107. package/Source/Scene/BillboardCollection.js +2 -2
  108. package/Source/Scene/BingMapsImageryProvider.js +1 -1
  109. package/Source/Scene/Cesium3DTile.js +8 -2
  110. package/Source/Scene/Cesium3DTileBatchTable.js +28 -28
  111. package/Source/Scene/Cesium3DTileContentType.js +19 -0
  112. package/Source/Scene/Cesium3DTilesVoxelProvider.js +494 -0
  113. package/Source/Scene/Cesium3DTileset.js +6 -1
  114. package/Source/Scene/Cesium3DTilesetMetadata.js +2 -2
  115. package/Source/Scene/ClassificationPrimitive.js +3 -8
  116. package/Source/Scene/ContentMetadata.js +2 -2
  117. package/Source/Scene/DebugAppearance.js +7 -9
  118. package/Source/Scene/DebugInspector.js +5 -5
  119. package/Source/Scene/DepthPlane.js +0 -6
  120. package/Source/Scene/DerivedCommand.js +15 -22
  121. package/Source/Scene/EllipsoidPrimitive.js +0 -7
  122. package/Source/Scene/Expression.js +1 -1
  123. package/Source/Scene/Globe.js +10 -0
  124. package/Source/Scene/GlobeSurfaceTileProvider.js +7 -0
  125. package/Source/Scene/GlobeTranslucencyState.js +6 -6
  126. package/Source/Scene/GltfImageLoader.js +1 -1
  127. package/Source/Scene/GltfVertexBufferLoader.js +10 -2
  128. package/Source/Scene/GroundPolylinePrimitive.js +2 -4
  129. package/Source/Scene/GroupMetadata.js +2 -2
  130. package/Source/Scene/ImplicitMetadataView.js +2 -2
  131. package/Source/Scene/ImplicitSubtreeCache.js +127 -0
  132. package/Source/Scene/ImplicitSubtreeMetadata.js +2 -2
  133. package/Source/Scene/ImplicitTileset.js +3 -2
  134. package/Source/Scene/InvertClassification.js +9 -10
  135. package/Source/Scene/KeyframeNode.js +47 -0
  136. package/Source/Scene/Material.js +6 -6
  137. package/Source/Scene/Megatexture.js +490 -0
  138. package/Source/Scene/MetadataClass.js +60 -25
  139. package/Source/Scene/MetadataClassProperty.js +132 -68
  140. package/Source/Scene/MetadataComponentType.js +78 -57
  141. package/Source/Scene/MetadataEnum.js +59 -23
  142. package/Source/Scene/MetadataEnumValue.js +49 -15
  143. package/Source/Scene/MetadataSchema.js +53 -24
  144. package/Source/Scene/MetadataSchemaLoader.js +2 -2
  145. package/Source/Scene/MetadataSemantic.js +8 -0
  146. package/Source/Scene/MetadataTableProperty.js +2 -2
  147. package/Source/Scene/MetadataType.js +6 -14
  148. package/Source/Scene/Model/CustomShader.js +1 -1
  149. package/Source/Scene/Model/FeatureIdPipelineStage.js +4 -4
  150. package/Source/Scene/Model/GeoJsonLoader.js +1 -1
  151. package/Source/Scene/Model/LightingModel.js +1 -1
  152. package/Source/Scene/Model/MetadataPipelineStage.js +1 -1
  153. package/Source/Scene/Model/Model.js +2 -3
  154. package/Source/Scene/Model/PickingPipelineStage.js +1 -1
  155. package/Source/Scene/Model/buildDrawCommand.js +19 -11
  156. package/Source/Scene/OIT.js +211 -119
  157. package/Source/Scene/PickDepth.js +2 -2
  158. package/Source/Scene/PointCloud.js +12 -12
  159. package/Source/Scene/PointCloudEyeDomeLighting.js +9 -4
  160. package/Source/Scene/PolylineCollection.js +2 -7
  161. package/Source/Scene/PolylineMaterialAppearance.js +2 -3
  162. package/Source/Scene/PostProcessStage.js +13 -13
  163. package/Source/Scene/PostProcessStageLibrary.js +3 -3
  164. package/Source/Scene/Primitive.js +22 -31
  165. package/Source/Scene/PropertyAttribute.js +2 -2
  166. package/Source/Scene/PropertyAttributeProperty.js +2 -2
  167. package/Source/Scene/PropertyTable.js +2 -2
  168. package/Source/Scene/PropertyTexture.js +2 -2
  169. package/Source/Scene/PropertyTextureProperty.js +2 -2
  170. package/Source/Scene/ResourceCache.js +9 -1
  171. package/Source/Scene/ResourceCacheKey.js +9 -1
  172. package/Source/Scene/Scene.js +17 -0
  173. package/Source/Scene/ShadowMap.js +7 -7
  174. package/Source/Scene/ShadowMapShader.js +9 -9
  175. package/Source/Scene/ShadowVolumeAppearance.js +1 -1
  176. package/Source/Scene/SpatialNode.js +375 -0
  177. package/Source/Scene/StructuralMetadata.js +2 -2
  178. package/Source/Scene/TextureAtlas.js +5 -3
  179. package/Source/Scene/TileMetadata.js +2 -2
  180. package/Source/Scene/TilesetMetadata.js +2 -2
  181. package/Source/Scene/Vector3DTilePolylines.js +1 -1
  182. package/Source/Scene/Vector3DTilePrimitive.js +2 -2
  183. package/Source/Scene/VoxelBoxShape.js +527 -0
  184. package/Source/Scene/VoxelContent.js +169 -0
  185. package/Source/Scene/VoxelCylinderShape.js +937 -0
  186. package/Source/Scene/VoxelEllipsoidShape.js +945 -0
  187. package/Source/Scene/VoxelPrimitive.js +1919 -0
  188. package/Source/Scene/VoxelProvider.js +255 -0
  189. package/Source/Scene/VoxelRenderResources.js +224 -0
  190. package/Source/Scene/VoxelShape.js +152 -0
  191. package/Source/Scene/VoxelShapeType.js +105 -0
  192. package/Source/Scene/VoxelTraversal.js +1144 -0
  193. package/Source/Scene/buildVoxelDrawCommands.js +116 -0
  194. package/Source/Scene/computeFlyToLocationForRectangle.js +10 -1
  195. package/Source/Scene/createElevationBandMaterial.js +10 -15
  196. package/Source/Scene/getClipAndStyleCode.js +1 -1
  197. package/Source/Scene/getClippingFunction.js +3 -3
  198. package/Source/Scene/parseBatchTable.js +18 -2
  199. package/Source/Scene/preprocess3DTileContent.js +8 -0
  200. package/Source/Scene/processVoxelProperties.js +455 -0
  201. package/Source/Shaders/AdjustTranslucentFS.glsl +9 -6
  202. package/Source/Shaders/AdjustTranslucentFS.js +9 -6
  203. package/Source/Shaders/Appearances/AllMaterialAppearanceFS.glsl +7 -7
  204. package/Source/Shaders/Appearances/AllMaterialAppearanceFS.js +7 -7
  205. package/Source/Shaders/Appearances/AllMaterialAppearanceVS.glsl +12 -12
  206. package/Source/Shaders/Appearances/AllMaterialAppearanceVS.js +12 -12
  207. package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.glsl +4 -4
  208. package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.js +4 -4
  209. package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.glsl +6 -6
  210. package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.js +6 -6
  211. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.glsl +5 -5
  212. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.js +5 -5
  213. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.glsl +7 -7
  214. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.js +7 -7
  215. package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.glsl +4 -4
  216. package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.js +4 -4
  217. package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.glsl +8 -8
  218. package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.js +8 -8
  219. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.glsl +2 -2
  220. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.js +2 -2
  221. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.glsl +5 -5
  222. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.js +5 -5
  223. package/Source/Shaders/Appearances/PolylineColorAppearanceVS.glsl +10 -10
  224. package/Source/Shaders/Appearances/PolylineColorAppearanceVS.js +10 -10
  225. package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.glsl +12 -12
  226. package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.js +12 -12
  227. package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.glsl +5 -5
  228. package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.js +5 -5
  229. package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.glsl +8 -8
  230. package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.js +8 -8
  231. package/Source/Shaders/BillboardCollectionFS.glsl +15 -15
  232. package/Source/Shaders/BillboardCollectionFS.js +15 -15
  233. package/Source/Shaders/BillboardCollectionVS.glsl +24 -24
  234. package/Source/Shaders/BillboardCollectionVS.js +24 -24
  235. package/Source/Shaders/BrdfLutGeneratorFS.glsl +2 -2
  236. package/Source/Shaders/BrdfLutGeneratorFS.js +2 -2
  237. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  238. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  239. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +9 -0
  240. package/Source/Shaders/Builtin/Constants/passVoxels.js +11 -0
  241. package/Source/Shaders/Builtin/CzmBuiltins.js +19 -15
  242. package/Source/Shaders/Builtin/Functions/depthClamp.glsl +3 -3
  243. package/Source/Shaders/Builtin/Functions/depthClamp.js +3 -3
  244. package/Source/Shaders/Builtin/Functions/getWaterNoise.glsl +4 -4
  245. package/Source/Shaders/Builtin/Functions/getWaterNoise.js +4 -4
  246. package/Source/Shaders/Builtin/Functions/phong.glsl +1 -1
  247. package/Source/Shaders/Builtin/Functions/phong.js +1 -1
  248. package/Source/Shaders/Builtin/Functions/readDepth.glsl +1 -1
  249. package/Source/Shaders/Builtin/Functions/readDepth.js +1 -1
  250. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.glsl +5 -5
  251. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.js +5 -5
  252. package/Source/Shaders/Builtin/Functions/shadowDepthCompare.glsl +3 -3
  253. package/Source/Shaders/Builtin/Functions/shadowDepthCompare.js +3 -3
  254. package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.glsl +1 -1
  255. package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.js +1 -1
  256. package/Source/Shaders/Builtin/Functions/textureCube.glsl +17 -0
  257. package/Source/Shaders/Builtin/Functions/textureCube.js +18 -0
  258. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.glsl +2 -2
  259. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.js +2 -2
  260. package/Source/Shaders/Builtin/Functions/vertexLogDepth.glsl +2 -2
  261. package/Source/Shaders/Builtin/Functions/vertexLogDepth.js +2 -2
  262. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.glsl +55 -43
  263. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.js +55 -43
  264. package/Source/Shaders/Builtin/Functions/writeDepthClamp.glsl +5 -8
  265. package/Source/Shaders/Builtin/Functions/writeDepthClamp.js +5 -8
  266. package/Source/Shaders/Builtin/Functions/writeLogDepth.glsl +6 -6
  267. package/Source/Shaders/Builtin/Functions/writeLogDepth.js +6 -6
  268. package/Source/Shaders/CloudCollectionFS.glsl +18 -18
  269. package/Source/Shaders/CloudCollectionFS.js +18 -18
  270. package/Source/Shaders/CloudCollectionVS.glsl +11 -11
  271. package/Source/Shaders/CloudCollectionVS.js +11 -11
  272. package/Source/Shaders/CloudNoiseFS.glsl +5 -5
  273. package/Source/Shaders/CloudNoiseFS.js +5 -5
  274. package/Source/Shaders/CloudNoiseVS.glsl +2 -2
  275. package/Source/Shaders/CloudNoiseVS.js +2 -2
  276. package/Source/Shaders/CompareAndPackTranslucentDepth.glsl +4 -4
  277. package/Source/Shaders/CompareAndPackTranslucentDepth.js +4 -4
  278. package/Source/Shaders/CompositeOITFS.glsl +6 -6
  279. package/Source/Shaders/CompositeOITFS.js +6 -6
  280. package/Source/Shaders/DepthPlaneFS.glsl +2 -2
  281. package/Source/Shaders/DepthPlaneFS.js +2 -2
  282. package/Source/Shaders/DepthPlaneVS.glsl +2 -2
  283. package/Source/Shaders/DepthPlaneVS.js +2 -2
  284. package/Source/Shaders/EllipsoidFS.glsl +5 -13
  285. package/Source/Shaders/EllipsoidFS.js +6 -14
  286. package/Source/Shaders/EllipsoidVS.glsl +2 -2
  287. package/Source/Shaders/EllipsoidVS.js +2 -2
  288. package/Source/Shaders/FXAA3_11.glsl +4 -4
  289. package/Source/Shaders/FXAA3_11.js +4 -4
  290. package/Source/Shaders/GlobeFS.glsl +17 -16
  291. package/Source/Shaders/GlobeFS.js +17 -16
  292. package/Source/Shaders/GlobeVS.glsl +17 -17
  293. package/Source/Shaders/GlobeVS.js +17 -17
  294. package/Source/Shaders/Materials/AspectRampMaterial.glsl +1 -1
  295. package/Source/Shaders/Materials/AspectRampMaterial.js +1 -1
  296. package/Source/Shaders/Materials/BumpMapMaterial.glsl +3 -3
  297. package/Source/Shaders/Materials/BumpMapMaterial.js +3 -3
  298. package/Source/Shaders/Materials/ElevationBandMaterial.glsl +3 -3
  299. package/Source/Shaders/Materials/ElevationBandMaterial.js +3 -3
  300. package/Source/Shaders/Materials/ElevationContourMaterial.glsl +2 -1
  301. package/Source/Shaders/Materials/ElevationContourMaterial.js +2 -1
  302. package/Source/Shaders/Materials/ElevationRampMaterial.glsl +1 -1
  303. package/Source/Shaders/Materials/ElevationRampMaterial.js +1 -1
  304. package/Source/Shaders/Materials/GridMaterial.glsl +3 -2
  305. package/Source/Shaders/Materials/GridMaterial.js +3 -2
  306. package/Source/Shaders/Materials/NormalMapMaterial.glsl +1 -1
  307. package/Source/Shaders/Materials/NormalMapMaterial.js +1 -1
  308. package/Source/Shaders/Materials/PolylineArrowMaterial.glsl +3 -2
  309. package/Source/Shaders/Materials/PolylineArrowMaterial.js +3 -2
  310. package/Source/Shaders/Materials/PolylineDashMaterial.glsl +1 -1
  311. package/Source/Shaders/Materials/PolylineDashMaterial.js +1 -1
  312. package/Source/Shaders/Materials/PolylineOutlineMaterial.glsl +1 -1
  313. package/Source/Shaders/Materials/PolylineOutlineMaterial.js +1 -1
  314. package/Source/Shaders/Materials/SlopeRampMaterial.glsl +1 -1
  315. package/Source/Shaders/Materials/SlopeRampMaterial.js +1 -1
  316. package/Source/Shaders/Materials/Water.glsl +1 -1
  317. package/Source/Shaders/Materials/Water.js +1 -1
  318. package/Source/Shaders/Model/ImageBasedLightingStageFS.glsl +3 -3
  319. package/Source/Shaders/Model/ImageBasedLightingStageFS.js +3 -3
  320. package/Source/Shaders/Model/MaterialStageFS.glsl +10 -10
  321. package/Source/Shaders/Model/MaterialStageFS.js +10 -10
  322. package/Source/Shaders/Model/ModelClippingPlanesStageFS.glsl +3 -3
  323. package/Source/Shaders/Model/ModelClippingPlanesStageFS.js +3 -3
  324. package/Source/Shaders/Model/ModelFS.glsl +1 -1
  325. package/Source/Shaders/Model/ModelFS.js +1 -1
  326. package/Source/Shaders/Model/PrimitiveOutlineStageFS.glsl +3 -3
  327. package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +3 -3
  328. package/Source/Shaders/Model/SelectedFeatureIdStageCommon.glsl +1 -1
  329. package/Source/Shaders/Model/SelectedFeatureIdStageCommon.js +1 -1
  330. package/Source/Shaders/OctahedralProjectionAtlasFS.glsl +8 -8
  331. package/Source/Shaders/OctahedralProjectionAtlasFS.js +8 -8
  332. package/Source/Shaders/OctahedralProjectionFS.glsl +4 -4
  333. package/Source/Shaders/OctahedralProjectionFS.js +4 -4
  334. package/Source/Shaders/OctahedralProjectionVS.glsl +3 -3
  335. package/Source/Shaders/OctahedralProjectionVS.js +3 -3
  336. package/Source/Shaders/PointPrimitiveCollectionFS.glsl +6 -6
  337. package/Source/Shaders/PointPrimitiveCollectionFS.js +6 -6
  338. package/Source/Shaders/PointPrimitiveCollectionVS.glsl +17 -14
  339. package/Source/Shaders/PointPrimitiveCollectionVS.js +17 -14
  340. package/Source/Shaders/PolylineFS.glsl +3 -3
  341. package/Source/Shaders/PolylineFS.js +3 -3
  342. package/Source/Shaders/PolylineShadowVolumeFS.glsl +12 -16
  343. package/Source/Shaders/PolylineShadowVolumeFS.js +12 -16
  344. package/Source/Shaders/PolylineShadowVolumeMorphFS.glsl +8 -8
  345. package/Source/Shaders/PolylineShadowVolumeMorphFS.js +8 -8
  346. package/Source/Shaders/PolylineShadowVolumeMorphVS.glsl +20 -20
  347. package/Source/Shaders/PolylineShadowVolumeMorphVS.js +20 -20
  348. package/Source/Shaders/PolylineShadowVolumeVS.glsl +20 -20
  349. package/Source/Shaders/PolylineShadowVolumeVS.js +20 -20
  350. package/Source/Shaders/PolylineVS.glsl +17 -17
  351. package/Source/Shaders/PolylineVS.js +17 -17
  352. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.glsl +4 -4
  353. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.js +4 -4
  354. package/Source/Shaders/PostProcessStages/AdditiveBlend.glsl +4 -4
  355. package/Source/Shaders/PostProcessStages/AdditiveBlend.js +4 -4
  356. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +4 -4
  357. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +4 -4
  358. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.glsl +4 -4
  359. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.js +4 -4
  360. package/Source/Shaders/PostProcessStages/BlackAndWhite.glsl +4 -4
  361. package/Source/Shaders/PostProcessStages/BlackAndWhite.js +4 -4
  362. package/Source/Shaders/PostProcessStages/BloomComposite.glsl +5 -5
  363. package/Source/Shaders/PostProcessStages/BloomComposite.js +5 -5
  364. package/Source/Shaders/PostProcessStages/BrightPass.glsl +3 -3
  365. package/Source/Shaders/PostProcessStages/BrightPass.js +3 -3
  366. package/Source/Shaders/PostProcessStages/Brightness.glsl +3 -3
  367. package/Source/Shaders/PostProcessStages/Brightness.js +3 -3
  368. package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.glsl +5 -5
  369. package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.js +5 -5
  370. package/Source/Shaders/PostProcessStages/ContrastBias.glsl +3 -3
  371. package/Source/Shaders/PostProcessStages/ContrastBias.js +3 -3
  372. package/Source/Shaders/PostProcessStages/DepthOfField.glsl +2 -2
  373. package/Source/Shaders/PostProcessStages/DepthOfField.js +2 -2
  374. package/Source/Shaders/PostProcessStages/DepthView.glsl +2 -2
  375. package/Source/Shaders/PostProcessStages/DepthView.js +2 -2
  376. package/Source/Shaders/PostProcessStages/DepthViewPacked.glsl +3 -3
  377. package/Source/Shaders/PostProcessStages/DepthViewPacked.js +3 -3
  378. package/Source/Shaders/PostProcessStages/EdgeDetection.glsl +7 -7
  379. package/Source/Shaders/PostProcessStages/EdgeDetection.js +7 -7
  380. package/Source/Shaders/PostProcessStages/FXAA.glsl +3 -3
  381. package/Source/Shaders/PostProcessStages/FXAA.js +3 -3
  382. package/Source/Shaders/PostProcessStages/FilmicTonemapping.glsl +4 -4
  383. package/Source/Shaders/PostProcessStages/FilmicTonemapping.js +4 -4
  384. package/Source/Shaders/PostProcessStages/GaussianBlur1D.glsl +5 -5
  385. package/Source/Shaders/PostProcessStages/GaussianBlur1D.js +5 -5
  386. package/Source/Shaders/PostProcessStages/LensFlare.glsl +13 -13
  387. package/Source/Shaders/PostProcessStages/LensFlare.js +13 -13
  388. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.glsl +4 -4
  389. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.js +4 -4
  390. package/Source/Shaders/PostProcessStages/NightVision.glsl +3 -3
  391. package/Source/Shaders/PostProcessStages/NightVision.js +3 -3
  392. package/Source/Shaders/PostProcessStages/PassThrough.glsl +2 -2
  393. package/Source/Shaders/PostProcessStages/PassThrough.js +2 -2
  394. package/Source/Shaders/PostProcessStages/PassThroughDepth.glsl +2 -2
  395. package/Source/Shaders/PostProcessStages/PassThroughDepth.js +2 -2
  396. package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.glsl +7 -9
  397. package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.js +8 -10
  398. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.glsl +4 -4
  399. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.js +4 -4
  400. package/Source/Shaders/PostProcessStages/Silhouette.glsl +4 -4
  401. package/Source/Shaders/PostProcessStages/Silhouette.js +4 -4
  402. package/Source/Shaders/ReprojectWebMercatorFS.glsl +2 -2
  403. package/Source/Shaders/ReprojectWebMercatorFS.js +2 -2
  404. package/Source/Shaders/ReprojectWebMercatorVS.glsl +3 -3
  405. package/Source/Shaders/ReprojectWebMercatorVS.js +3 -3
  406. package/Source/Shaders/ShadowVolumeAppearanceFS.glsl +19 -23
  407. package/Source/Shaders/ShadowVolumeAppearanceFS.js +20 -24
  408. package/Source/Shaders/ShadowVolumeAppearanceVS.glsl +12 -12
  409. package/Source/Shaders/ShadowVolumeAppearanceVS.js +12 -12
  410. package/Source/Shaders/ShadowVolumeFS.glsl +2 -6
  411. package/Source/Shaders/ShadowVolumeFS.js +3 -7
  412. package/Source/Shaders/SkyAtmosphereFS.glsl +6 -6
  413. package/Source/Shaders/SkyAtmosphereFS.js +6 -6
  414. package/Source/Shaders/SkyAtmosphereVS.glsl +6 -6
  415. package/Source/Shaders/SkyAtmosphereVS.js +6 -6
  416. package/Source/Shaders/SkyBoxFS.glsl +3 -3
  417. package/Source/Shaders/SkyBoxFS.js +3 -3
  418. package/Source/Shaders/SkyBoxVS.glsl +2 -2
  419. package/Source/Shaders/SkyBoxVS.js +2 -2
  420. package/Source/Shaders/SunFS.glsl +3 -3
  421. package/Source/Shaders/SunFS.js +3 -3
  422. package/Source/Shaders/SunTextureFS.glsl +2 -2
  423. package/Source/Shaders/SunTextureFS.js +2 -2
  424. package/Source/Shaders/SunVS.glsl +2 -2
  425. package/Source/Shaders/SunVS.js +2 -2
  426. package/Source/Shaders/Vector3DTileClampedPolylinesFS.glsl +9 -13
  427. package/Source/Shaders/Vector3DTileClampedPolylinesFS.js +9 -13
  428. package/Source/Shaders/Vector3DTileClampedPolylinesVS.glsl +12 -12
  429. package/Source/Shaders/Vector3DTileClampedPolylinesVS.js +12 -12
  430. package/Source/Shaders/Vector3DTilePolylinesVS.glsl +5 -5
  431. package/Source/Shaders/Vector3DTilePolylinesVS.js +5 -5
  432. package/Source/Shaders/VectorTileVS.glsl +2 -2
  433. package/Source/Shaders/VectorTileVS.js +2 -2
  434. package/Source/Shaders/ViewportQuadFS.glsl +2 -2
  435. package/Source/Shaders/ViewportQuadFS.js +2 -2
  436. package/Source/Shaders/ViewportQuadVS.glsl +3 -3
  437. package/Source/Shaders/ViewportQuadVS.js +3 -3
  438. package/Source/Shaders/Voxels/IntersectBox.glsl +79 -0
  439. package/Source/Shaders/Voxels/IntersectBox.js +81 -0
  440. package/Source/Shaders/Voxels/IntersectClippingPlanes.glsl +70 -0
  441. package/Source/Shaders/Voxels/IntersectClippingPlanes.js +72 -0
  442. package/Source/Shaders/Voxels/IntersectCylinder.glsl +273 -0
  443. package/Source/Shaders/Voxels/IntersectCylinder.js +275 -0
  444. package/Source/Shaders/Voxels/IntersectDepth.glsl +23 -0
  445. package/Source/Shaders/Voxels/IntersectDepth.js +25 -0
  446. package/Source/Shaders/Voxels/IntersectEllipsoid.glsl +347 -0
  447. package/Source/Shaders/Voxels/IntersectEllipsoid.js +349 -0
  448. package/Source/Shaders/Voxels/Intersection.glsl +54 -0
  449. package/Source/Shaders/Voxels/Intersection.js +56 -0
  450. package/Source/Shaders/Voxels/IntersectionUtils.glsl +151 -0
  451. package/Source/Shaders/Voxels/IntersectionUtils.js +153 -0
  452. package/Source/Shaders/Voxels/Megatexture.glsl +136 -0
  453. package/Source/Shaders/Voxels/Megatexture.js +138 -0
  454. package/Source/Shaders/Voxels/Octree.glsl +221 -0
  455. package/Source/Shaders/Voxels/Octree.js +223 -0
  456. package/Source/Shaders/Voxels/VoxelFS.glsl +150 -0
  457. package/Source/Shaders/Voxels/VoxelFS.js +152 -0
  458. package/Source/Shaders/Voxels/VoxelVS.glsl +11 -0
  459. package/Source/Shaders/Voxels/VoxelVS.js +13 -0
  460. package/Source/Shaders/Voxels/convertUvToBox.glsl +16 -0
  461. package/Source/Shaders/Voxels/convertUvToBox.js +18 -0
  462. package/Source/Shaders/Voxels/convertUvToCylinder.glsl +75 -0
  463. package/Source/Shaders/Voxels/convertUvToCylinder.js +77 -0
  464. package/Source/Shaders/Voxels/convertUvToEllipsoid.glsl +130 -0
  465. package/Source/Shaders/Voxels/convertUvToEllipsoid.js +132 -0
  466. package/Source/ThirdParty/Workers/z-worker-pako.js +0 -0
  467. package/Source/WorkersES6/decodeDraco.js +9 -1
  468. package/index.d.ts +3148 -2297
  469. package/index.js +1118 -1085
  470. package/package.json +3 -4
  471. package/Build/Workers/PolygonPipeline-774a8aaf.js +0 -1341
  472. package/Source/Renderer/modernizeShader.js +0 -242
@@ -0,0 +1,455 @@
1
+ import defined from "../Core/defined.js";
2
+ import MetadataType from "./MetadataType.js";
3
+ import ShaderDestination from "../Renderer/ShaderDestination.js";
4
+
5
+ /**
6
+ * Update the shader with defines, structs, and functions to handle
7
+ * voxel properties and statistics
8
+ * @function
9
+ *
10
+ * @param {VoxelRenderResources} renderResources
11
+ * @param {VoxelPrimitive} primitive
12
+ *
13
+ * @private
14
+ */
15
+ function processVoxelProperties(renderResources, primitive) {
16
+ const { shaderBuilder } = renderResources;
17
+
18
+ const {
19
+ names,
20
+ types,
21
+ componentTypes,
22
+ minimumValues,
23
+ maximumValues,
24
+ } = primitive._provider;
25
+
26
+ const attributeLength = types.length;
27
+ const hasStatistics = defined(minimumValues) && defined(maximumValues);
28
+
29
+ shaderBuilder.addDefine(
30
+ "METADATA_COUNT",
31
+ attributeLength,
32
+ ShaderDestination.FRAGMENT
33
+ );
34
+
35
+ if (hasStatistics) {
36
+ shaderBuilder.addDefine(
37
+ "STATISTICS",
38
+ undefined,
39
+ ShaderDestination.FRAGMENT
40
+ );
41
+ }
42
+
43
+ // PropertyStatistics structs
44
+ for (let i = 0; i < attributeLength; i++) {
45
+ const name = names[i];
46
+ const type = types[i];
47
+ const propertyStatisticsStructId = `PropertyStatistics_${name}`;
48
+ const propertyStatisticsStructName = `PropertyStatistics_${name}`;
49
+ shaderBuilder.addStruct(
50
+ propertyStatisticsStructId,
51
+ propertyStatisticsStructName,
52
+ ShaderDestination.FRAGMENT
53
+ );
54
+ const glslType = getGlslType(type);
55
+ shaderBuilder.addStructField(propertyStatisticsStructId, glslType, "min");
56
+ shaderBuilder.addStructField(propertyStatisticsStructId, glslType, "max");
57
+ }
58
+
59
+ // Statistics struct
60
+ const statisticsStructId = "Statistics";
61
+ const statisticsStructName = "Statistics";
62
+ const statisticsFieldName = "statistics";
63
+ shaderBuilder.addStruct(
64
+ statisticsStructId,
65
+ statisticsStructName,
66
+ ShaderDestination.FRAGMENT
67
+ );
68
+ for (let i = 0; i < attributeLength; i++) {
69
+ const name = names[i];
70
+ const propertyStructName = `PropertyStatistics_${name}`;
71
+ const propertyFieldName = name;
72
+ shaderBuilder.addStructField(
73
+ statisticsStructId,
74
+ propertyStructName,
75
+ propertyFieldName
76
+ );
77
+ }
78
+
79
+ // Metadata struct
80
+ const metadataStructId = "Metadata";
81
+ const metadataStructName = "Metadata";
82
+ const metadataFieldName = "metadata";
83
+ shaderBuilder.addStruct(
84
+ metadataStructId,
85
+ metadataStructName,
86
+ ShaderDestination.FRAGMENT
87
+ );
88
+ shaderBuilder.addStructField(
89
+ metadataStructId,
90
+ statisticsStructName,
91
+ statisticsFieldName
92
+ );
93
+ for (let i = 0; i < attributeLength; i++) {
94
+ const name = names[i];
95
+ const type = types[i];
96
+ const glslType = getGlslType(type);
97
+ shaderBuilder.addStructField(metadataStructId, glslType, name);
98
+ }
99
+
100
+ // VoxelProperty structs
101
+ for (let i = 0; i < attributeLength; i++) {
102
+ const name = names[i];
103
+ const type = types[i];
104
+ const glslType = getGlslPartialDerivativeType(type);
105
+ const voxelPropertyStructId = `VoxelProperty_${name}`;
106
+ const voxelPropertyStructName = `VoxelProperty_${name}`;
107
+ shaderBuilder.addStruct(
108
+ voxelPropertyStructId,
109
+ voxelPropertyStructName,
110
+ ShaderDestination.FRAGMENT
111
+ );
112
+ shaderBuilder.addStructField(
113
+ voxelPropertyStructId,
114
+ glslType,
115
+ "partialDerivativeLocal"
116
+ );
117
+ shaderBuilder.addStructField(
118
+ voxelPropertyStructId,
119
+ glslType,
120
+ "partialDerivativeWorld"
121
+ );
122
+ shaderBuilder.addStructField(
123
+ voxelPropertyStructId,
124
+ glslType,
125
+ "partialDerivativeView"
126
+ );
127
+ shaderBuilder.addStructField(
128
+ voxelPropertyStructId,
129
+ glslType,
130
+ "partialDerivativeValid"
131
+ );
132
+ }
133
+
134
+ // Voxel struct
135
+ const voxelStructId = "Voxel";
136
+ const voxelStructName = "Voxel";
137
+ const voxelFieldName = "voxel";
138
+ shaderBuilder.addStruct(
139
+ voxelStructId,
140
+ voxelStructName,
141
+ ShaderDestination.FRAGMENT
142
+ );
143
+ for (let i = 0; i < attributeLength; i++) {
144
+ const name = names[i];
145
+ const voxelPropertyStructName = `VoxelProperty_${name}`;
146
+ shaderBuilder.addStructField(voxelStructId, voxelPropertyStructName, name);
147
+ }
148
+ shaderBuilder.addStructField(voxelStructId, "vec3", "positionEC");
149
+ shaderBuilder.addStructField(voxelStructId, "vec3", "positionUv");
150
+ shaderBuilder.addStructField(voxelStructId, "vec3", "positionShapeUv");
151
+ shaderBuilder.addStructField(voxelStructId, "vec3", "positionUvLocal");
152
+ shaderBuilder.addStructField(voxelStructId, "vec3", "viewDirUv");
153
+ shaderBuilder.addStructField(voxelStructId, "vec3", "viewDirWorld");
154
+ shaderBuilder.addStructField(voxelStructId, "float", "travelDistance");
155
+
156
+ // FragmentInput struct
157
+ const fragmentInputStructId = "FragmentInput";
158
+ const fragmentInputStructName = "FragmentInput";
159
+ shaderBuilder.addStruct(
160
+ fragmentInputStructId,
161
+ fragmentInputStructName,
162
+ ShaderDestination.FRAGMENT
163
+ );
164
+ shaderBuilder.addStructField(
165
+ fragmentInputStructId,
166
+ metadataStructName,
167
+ metadataFieldName
168
+ );
169
+ shaderBuilder.addStructField(
170
+ fragmentInputStructId,
171
+ voxelStructName,
172
+ voxelFieldName
173
+ );
174
+
175
+ // Properties struct
176
+ const propertiesStructId = "Properties";
177
+ const propertiesStructName = "Properties";
178
+ const propertiesFieldName = "properties";
179
+ shaderBuilder.addStruct(
180
+ propertiesStructId,
181
+ propertiesStructName,
182
+ ShaderDestination.FRAGMENT
183
+ );
184
+ for (let i = 0; i < attributeLength; i++) {
185
+ const name = names[i];
186
+ const type = types[i];
187
+ const glslType = getGlslType(type);
188
+ shaderBuilder.addStructField(propertiesStructId, glslType, name);
189
+ }
190
+
191
+ // Fragment shader functions
192
+
193
+ // clearProperties function
194
+ {
195
+ const functionId = "clearProperties";
196
+ shaderBuilder.addFunction(
197
+ functionId,
198
+ `${propertiesStructName} clearProperties()`,
199
+ ShaderDestination.FRAGMENT
200
+ );
201
+ shaderBuilder.addFunctionLines(functionId, [
202
+ `${propertiesStructName} ${propertiesFieldName};`,
203
+ ]);
204
+ for (let i = 0; i < attributeLength; i++) {
205
+ const name = names[i];
206
+ const type = types[i];
207
+ const componentType = componentTypes[i];
208
+ const glslType = getGlslType(type, componentType);
209
+ shaderBuilder.addFunctionLines(functionId, [
210
+ `${propertiesFieldName}.${name} = ${glslType}(0.0);`,
211
+ ]);
212
+ }
213
+ shaderBuilder.addFunctionLines(functionId, [
214
+ `return ${propertiesFieldName};`,
215
+ ]);
216
+ }
217
+
218
+ // sumProperties function
219
+ {
220
+ const functionId = "sumProperties";
221
+ shaderBuilder.addFunction(
222
+ functionId,
223
+ `${propertiesStructName} sumProperties(${propertiesStructName} propertiesA, ${propertiesStructName} propertiesB)`,
224
+ ShaderDestination.FRAGMENT
225
+ );
226
+ shaderBuilder.addFunctionLines(functionId, [
227
+ `${propertiesStructName} ${propertiesFieldName};`,
228
+ ]);
229
+ for (let i = 0; i < attributeLength; i++) {
230
+ const name = names[i];
231
+ shaderBuilder.addFunctionLines(functionId, [
232
+ `${propertiesFieldName}.${name} = propertiesA.${name} + propertiesB.${name};`,
233
+ ]);
234
+ }
235
+ shaderBuilder.addFunctionLines(functionId, [
236
+ `return ${propertiesFieldName};`,
237
+ ]);
238
+ }
239
+
240
+ // scaleProperties function
241
+ {
242
+ const functionId = "scaleProperties";
243
+ shaderBuilder.addFunction(
244
+ functionId,
245
+ `${propertiesStructName} scaleProperties(${propertiesStructName} ${propertiesFieldName}, float scale)`,
246
+ ShaderDestination.FRAGMENT
247
+ );
248
+ shaderBuilder.addFunctionLines(functionId, [
249
+ `${propertiesStructName} scaledProperties = ${propertiesFieldName};`,
250
+ ]);
251
+ for (let i = 0; i < attributeLength; i++) {
252
+ const name = names[i];
253
+ shaderBuilder.addFunctionLines(functionId, [
254
+ `scaledProperties.${name} *= scale;`,
255
+ ]);
256
+ }
257
+ shaderBuilder.addFunctionLines(functionId, [`return scaledProperties;`]);
258
+ }
259
+
260
+ // mixProperties
261
+ {
262
+ const functionId = "mixProperties";
263
+ shaderBuilder.addFunction(
264
+ functionId,
265
+ `${propertiesStructName} mixProperties(${propertiesStructName} propertiesA, ${propertiesStructName} propertiesB, float mixFactor)`,
266
+ ShaderDestination.FRAGMENT
267
+ );
268
+ shaderBuilder.addFunctionLines(functionId, [
269
+ `${propertiesStructName} ${propertiesFieldName};`,
270
+ ]);
271
+ for (let i = 0; i < attributeLength; i++) {
272
+ const name = names[i];
273
+ shaderBuilder.addFunctionLines(functionId, [
274
+ `${propertiesFieldName}.${name} = mix(propertiesA.${name}, propertiesB.${name}, mixFactor);`,
275
+ ]);
276
+ }
277
+ shaderBuilder.addFunctionLines(functionId, [
278
+ `return ${propertiesFieldName};`,
279
+ ]);
280
+ }
281
+
282
+ // copyPropertiesToMetadata
283
+ {
284
+ const functionId = "copyPropertiesToMetadata";
285
+ shaderBuilder.addFunction(
286
+ functionId,
287
+ `void copyPropertiesToMetadata(in ${propertiesStructName} ${propertiesFieldName}, inout ${metadataStructName} ${metadataFieldName})`,
288
+ ShaderDestination.FRAGMENT
289
+ );
290
+ for (let i = 0; i < attributeLength; i++) {
291
+ const name = names[i];
292
+ shaderBuilder.addFunctionLines(functionId, [
293
+ `${metadataFieldName}.${name} = ${propertiesFieldName}.${name};`,
294
+ ]);
295
+ }
296
+ }
297
+
298
+ // setStatistics function
299
+ if (hasStatistics) {
300
+ const functionId = "setStatistics";
301
+ shaderBuilder.addFunction(
302
+ functionId,
303
+ `void setStatistics(inout ${statisticsStructName} ${statisticsFieldName})`,
304
+ ShaderDestination.FRAGMENT
305
+ );
306
+ for (let i = 0; i < attributeLength; i++) {
307
+ const name = names[i];
308
+ const type = types[i];
309
+ const componentCount = MetadataType.getComponentCount(type);
310
+ for (let j = 0; j < componentCount; j++) {
311
+ const glslField = getGlslField(type, j);
312
+ const minimumValue = minimumValues[i][j];
313
+ const maximumValue = maximumValues[i][j];
314
+ shaderBuilder.addFunctionLines(functionId, [
315
+ `${statisticsFieldName}.${name}.min${glslField} = ${getGlslNumberAsFloat(
316
+ minimumValue
317
+ )};`,
318
+ `${statisticsFieldName}.${name}.max${glslField} = ${getGlslNumberAsFloat(
319
+ maximumValue
320
+ )};`,
321
+ ]);
322
+ }
323
+ }
324
+ }
325
+
326
+ // getPropertiesFromMegatextureAtUv
327
+ {
328
+ const functionId = "getPropertiesFromMegatextureAtUv";
329
+ shaderBuilder.addFunction(
330
+ functionId,
331
+ `${propertiesStructName} getPropertiesFromMegatextureAtUv(vec2 texcoord)`,
332
+ ShaderDestination.FRAGMENT
333
+ );
334
+ shaderBuilder.addFunctionLines(functionId, [
335
+ `${propertiesStructName} ${propertiesFieldName};`,
336
+ ]);
337
+ for (let i = 0; i < attributeLength; i++) {
338
+ const name = names[i];
339
+ const type = types[i];
340
+ const componentType = componentTypes[i];
341
+ const glslTextureSwizzle = getGlslTextureSwizzle(type, componentType);
342
+ shaderBuilder.addFunctionLines(functionId, [
343
+ `properties.${name} = texture(u_megatextureTextures[${i}], texcoord)${glslTextureSwizzle};`,
344
+ ]);
345
+ }
346
+ shaderBuilder.addFunctionLines(functionId, [
347
+ `return ${propertiesFieldName};`,
348
+ ]);
349
+ }
350
+ }
351
+
352
+ /**
353
+ * Converts a {@link MetadataType} to a GLSL type.
354
+ *
355
+ * @function
356
+ *
357
+ * @param {MetadataType} type The {@link MetadataType}.
358
+ * @returns {String} The GLSL type.
359
+ *
360
+ * @private
361
+ */
362
+ function getGlslType(type) {
363
+ if (type === MetadataType.SCALAR) {
364
+ return "float";
365
+ } else if (type === MetadataType.VEC2) {
366
+ return "vec2";
367
+ } else if (type === MetadataType.VEC3) {
368
+ return "vec3";
369
+ } else if (type === MetadataType.VEC4) {
370
+ return "vec4";
371
+ }
372
+ }
373
+
374
+ /**
375
+ * Gets the GLSL swizzle when reading data from a texture.
376
+ *
377
+ * @function
378
+ *
379
+ * @param {MetadataType} type The {@link MetadataType}.
380
+ * @returns {String} The GLSL swizzle.
381
+ *
382
+ * @private
383
+ */
384
+ function getGlslTextureSwizzle(type) {
385
+ if (type === MetadataType.SCALAR) {
386
+ return ".r";
387
+ } else if (type === MetadataType.VEC2) {
388
+ return ".ra";
389
+ } else if (type === MetadataType.VEC3) {
390
+ return ".rgb";
391
+ } else if (type === MetadataType.VEC4) {
392
+ return "";
393
+ }
394
+ }
395
+
396
+ /**
397
+ * Gets the GLSL type of the partial derivative of {@link MetadataType}.
398
+ *
399
+ * @function
400
+ *
401
+ * @param {MetadataType} type The {@link MetadataType}.
402
+ * @returns {String} The GLSL type.
403
+ *
404
+ * @private
405
+ */
406
+ function getGlslPartialDerivativeType(type) {
407
+ if (type === MetadataType.SCALAR) {
408
+ return "vec3";
409
+ } else if (type === MetadataType.VEC2) {
410
+ return "mat2";
411
+ } else if (type === MetadataType.VEC3) {
412
+ return "mat3";
413
+ } else if (type === MetadataType.VEC4) {
414
+ return "mat4";
415
+ }
416
+ }
417
+
418
+ /**
419
+ * GLSL needs to have `.0` at the end of whole number floats or else it's
420
+ * treated like an integer.
421
+ *
422
+ * @function
423
+ *
424
+ * @param {Number} number The number to convert.
425
+ * @returns {String} The number as floating point in GLSL.
426
+ *
427
+ * @private
428
+ */
429
+ function getGlslNumberAsFloat(number) {
430
+ let numberString = number.toString();
431
+ if (numberString.indexOf(".") === -1) {
432
+ numberString = `${number}.0`;
433
+ }
434
+ return numberString;
435
+ }
436
+
437
+ /**
438
+ * Gets the GLSL field
439
+ *
440
+ * @function
441
+ *
442
+ * @param {MetadataType} type
443
+ * @param {Number} index
444
+ * @returns {String}
445
+ *
446
+ * @private
447
+ */
448
+ function getGlslField(type, index) {
449
+ if (type === MetadataType.SCALAR) {
450
+ return "";
451
+ }
452
+ return `[${index}]`;
453
+ }
454
+
455
+ export default processVoxelProperties;
@@ -1,21 +1,24 @@
1
1
  #ifdef MRT
2
- #extension GL_EXT_draw_buffers : enable
2
+ layout (location = 0) out vec4 out_FragData_0;
3
+ layout (location = 1) out vec4 out_FragData_1;
4
+ #else
5
+ layout (location = 0) out vec4 out_FragColor;
3
6
  #endif
4
7
 
5
8
  uniform vec4 u_bgColor;
6
9
  uniform sampler2D u_depthTexture;
7
10
 
8
- varying vec2 v_textureCoordinates;
11
+ in vec2 v_textureCoordinates;
9
12
 
10
13
  void main()
11
14
  {
12
- if (texture2D(u_depthTexture, v_textureCoordinates).r < 1.0)
15
+ if (texture(u_depthTexture, v_textureCoordinates).r < 1.0)
13
16
  {
14
17
  #ifdef MRT
15
- gl_FragData[0] = u_bgColor;
16
- gl_FragData[1] = vec4(u_bgColor.a);
18
+ out_FragData_0 = u_bgColor;
19
+ out_FragData_1 = vec4(u_bgColor.a);
17
20
  #else
18
- gl_FragColor = u_bgColor;
21
+ out_FragColor = u_bgColor;
19
22
  #endif
20
23
  return;
21
24
  }
@@ -1,22 +1,25 @@
1
1
  //This file is automatically rebuilt by the Cesium build process.
2
2
  export default "#ifdef MRT\n\
3
- #extension GL_EXT_draw_buffers : enable\n\
3
+ layout (location = 0) out vec4 out_FragData_0;\n\
4
+ layout (location = 1) out vec4 out_FragData_1;\n\
5
+ #else\n\
6
+ layout (location = 0) out vec4 out_FragColor;\n\
4
7
  #endif\n\
5
8
  \n\
6
9
  uniform vec4 u_bgColor;\n\
7
10
  uniform sampler2D u_depthTexture;\n\
8
11
  \n\
9
- varying vec2 v_textureCoordinates;\n\
12
+ in vec2 v_textureCoordinates;\n\
10
13
  \n\
11
14
  void main()\n\
12
15
  {\n\
13
- if (texture2D(u_depthTexture, v_textureCoordinates).r < 1.0)\n\
16
+ if (texture(u_depthTexture, v_textureCoordinates).r < 1.0)\n\
14
17
  {\n\
15
18
  #ifdef MRT\n\
16
- gl_FragData[0] = u_bgColor;\n\
17
- gl_FragData[1] = vec4(u_bgColor.a);\n\
19
+ out_FragData_0 = u_bgColor;\n\
20
+ out_FragData_1 = vec4(u_bgColor.a);\n\
18
21
  #else\n\
19
- gl_FragColor = u_bgColor;\n\
22
+ out_FragColor = u_bgColor;\n\
20
23
  #endif\n\
21
24
  return;\n\
22
25
  }\n\
@@ -1,8 +1,8 @@
1
- varying vec3 v_positionEC;
2
- varying vec3 v_normalEC;
3
- varying vec3 v_tangentEC;
4
- varying vec3 v_bitangentEC;
5
- varying vec2 v_st;
1
+ in vec3 v_positionEC;
2
+ in vec3 v_normalEC;
3
+ in vec3 v_tangentEC;
4
+ in vec3 v_bitangentEC;
5
+ in vec2 v_st;
6
6
 
7
7
  void main()
8
8
  {
@@ -22,8 +22,8 @@ void main()
22
22
  czm_material material = czm_getMaterial(materialInput);
23
23
 
24
24
  #ifdef FLAT
25
- gl_FragColor = vec4(material.diffuse + material.emission, material.alpha);
25
+ out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
26
26
  #else
27
- gl_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
27
+ out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
28
28
  #endif
29
29
  }
@@ -1,9 +1,9 @@
1
1
  //This file is automatically rebuilt by the Cesium build process.
2
- export default "varying vec3 v_positionEC;\n\
3
- varying vec3 v_normalEC;\n\
4
- varying vec3 v_tangentEC;\n\
5
- varying vec3 v_bitangentEC;\n\
6
- varying vec2 v_st;\n\
2
+ export default "in vec3 v_positionEC;\n\
3
+ in vec3 v_normalEC;\n\
4
+ in vec3 v_tangentEC;\n\
5
+ in vec3 v_bitangentEC;\n\
6
+ in vec2 v_st;\n\
7
7
  \n\
8
8
  void main()\n\
9
9
  {\n\
@@ -23,9 +23,9 @@ void main()\n\
23
23
  czm_material material = czm_getMaterial(materialInput);\n\
24
24
  \n\
25
25
  #ifdef FLAT\n\
26
- gl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n\
26
+ out_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n\
27
27
  #else\n\
28
- gl_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);\n\
28
+ out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);\n\
29
29
  #endif\n\
30
30
  }\n\
31
31
  ";
@@ -1,16 +1,16 @@
1
- attribute vec3 position3DHigh;
2
- attribute vec3 position3DLow;
3
- attribute vec3 normal;
4
- attribute vec3 tangent;
5
- attribute vec3 bitangent;
6
- attribute vec2 st;
7
- attribute float batchId;
1
+ in vec3 position3DHigh;
2
+ in vec3 position3DLow;
3
+ in vec3 normal;
4
+ in vec3 tangent;
5
+ in vec3 bitangent;
6
+ in vec2 st;
7
+ in float batchId;
8
8
 
9
- varying vec3 v_positionEC;
10
- varying vec3 v_normalEC;
11
- varying vec3 v_tangentEC;
12
- varying vec3 v_bitangentEC;
13
- varying vec2 v_st;
9
+ out vec3 v_positionEC;
10
+ out vec3 v_normalEC;
11
+ out vec3 v_tangentEC;
12
+ out vec3 v_bitangentEC;
13
+ out vec2 v_st;
14
14
 
15
15
  void main()
16
16
  {
@@ -1,17 +1,17 @@
1
1
  //This file is automatically rebuilt by the Cesium build process.
2
- export default "attribute vec3 position3DHigh;\n\
3
- attribute vec3 position3DLow;\n\
4
- attribute vec3 normal;\n\
5
- attribute vec3 tangent;\n\
6
- attribute vec3 bitangent;\n\
7
- attribute vec2 st;\n\
8
- attribute float batchId;\n\
2
+ export default "in vec3 position3DHigh;\n\
3
+ in vec3 position3DLow;\n\
4
+ in vec3 normal;\n\
5
+ in vec3 tangent;\n\
6
+ in vec3 bitangent;\n\
7
+ in vec2 st;\n\
8
+ in float batchId;\n\
9
9
  \n\
10
- varying vec3 v_positionEC;\n\
11
- varying vec3 v_normalEC;\n\
12
- varying vec3 v_tangentEC;\n\
13
- varying vec3 v_bitangentEC;\n\
14
- varying vec2 v_st;\n\
10
+ out vec3 v_positionEC;\n\
11
+ out vec3 v_normalEC;\n\
12
+ out vec3 v_tangentEC;\n\
13
+ out vec3 v_bitangentEC;\n\
14
+ out vec2 v_st;\n\
15
15
  \n\
16
16
  void main()\n\
17
17
  {\n\
@@ -1,5 +1,5 @@
1
- varying vec3 v_positionEC;
2
- varying vec3 v_normalEC;
1
+ in vec3 v_positionEC;
2
+ in vec3 v_normalEC;
3
3
 
4
4
  void main()
5
5
  {
@@ -16,8 +16,8 @@ void main()
16
16
  czm_material material = czm_getMaterial(materialInput);
17
17
 
18
18
  #ifdef FLAT
19
- gl_FragColor = vec4(material.diffuse + material.emission, material.alpha);
19
+ out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
20
20
  #else
21
- gl_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
21
+ out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
22
22
  #endif
23
23
  }
@@ -1,6 +1,6 @@
1
1
  //This file is automatically rebuilt by the Cesium build process.
2
- export default "varying vec3 v_positionEC;\n\
3
- varying vec3 v_normalEC;\n\
2
+ export default "in vec3 v_positionEC;\n\
3
+ in vec3 v_normalEC;\n\
4
4
  \n\
5
5
  void main()\n\
6
6
  {\n\
@@ -17,9 +17,9 @@ void main()\n\
17
17
  czm_material material = czm_getMaterial(materialInput);\n\
18
18
  \n\
19
19
  #ifdef FLAT\n\
20
- gl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n\
20
+ out_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n\
21
21
  #else\n\
22
- gl_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);\n\
22
+ out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);\n\
23
23
  #endif\n\
24
24
  }\n\
25
25
  ";
@@ -1,10 +1,10 @@
1
- attribute vec3 position3DHigh;
2
- attribute vec3 position3DLow;
3
- attribute vec3 normal;
4
- attribute float batchId;
1
+ in vec3 position3DHigh;
2
+ in vec3 position3DLow;
3
+ in vec3 normal;
4
+ in float batchId;
5
5
 
6
- varying vec3 v_positionEC;
7
- varying vec3 v_normalEC;
6
+ out vec3 v_positionEC;
7
+ out vec3 v_normalEC;
8
8
 
9
9
  void main()
10
10
  {