@cesium/engine 21.0.1 → 22.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 (244) hide show
  1. package/Build/Workers/{chunk-LPKJSIMD.js → chunk-2D3GLFZD.js} +12 -12
  2. package/Build/Workers/chunk-34YXP222.js +352 -0
  3. package/Build/Workers/{chunk-UKA7OISV.js → chunk-3GL53OCU.js} +17 -18
  4. package/Build/Workers/{chunk-WQZL6CA2.js → chunk-5B7VZQZY.js} +6 -6
  5. package/Build/Workers/{chunk-FE565QHX.js → chunk-5T5SY63I.js} +2 -2
  6. package/Build/Workers/{chunk-RR3NCT4R.js → chunk-5ZF53EY6.js} +4 -4
  7. package/Build/Workers/{chunk-PZUZCAX3.js → chunk-6HBKE43B.js} +7 -7
  8. package/Build/Workers/{chunk-5YXA47QD.js → chunk-726NINF5.js} +16 -16
  9. package/Build/Workers/{chunk-3RKX3UFI.js → chunk-75HAJIDT.js} +1 -1
  10. package/Build/Workers/{chunk-CBPNIEGH.js → chunk-7KAXDKRU.js} +10 -10
  11. package/Build/Workers/chunk-7XEJGXX2.js +2759 -0
  12. package/Build/Workers/{chunk-U2GR5FDL.js → chunk-A4DPJIWS.js} +18 -10
  13. package/Build/Workers/{chunk-G3CKZ34K.js → chunk-A6JAFSZT.js} +5 -5
  14. package/Build/Workers/{chunk-2SI7DEW5.js → chunk-AARZSH4V.js} +5 -5
  15. package/Build/Workers/{chunk-W6KMV4F5.js → chunk-AOM3FHBN.js} +6 -6
  16. package/Build/Workers/{chunk-VVALNLSH.js → chunk-BJSNGGBM.js} +4 -4
  17. package/Build/Workers/{chunk-3YNW5K6O.js → chunk-ECHAJNQJ.js} +12 -12
  18. package/Build/Workers/{chunk-KZ7GDSAJ.js → chunk-EJO3NKMS.js} +1 -1
  19. package/Build/Workers/{chunk-UFSYRVC5.js → chunk-EZ7NJXQN.js} +4 -4
  20. package/Build/Workers/{chunk-P2UKEFCK.js → chunk-FA3SCJDX.js} +2 -2
  21. package/Build/Workers/{chunk-MXOGBWMP.js → chunk-GYRDA3XK.js} +14 -14
  22. package/Build/Workers/{chunk-KVB73ECP.js → chunk-H7B7FU2U.js} +7 -7
  23. package/Build/Workers/{chunk-XJVRYJVZ.js → chunk-IGX772ZQ.js} +1 -1
  24. package/Build/Workers/{chunk-MQPDOWGH.js → chunk-JDJAPBZP.js} +1 -1
  25. package/Build/Workers/{chunk-DDXI6UYW.js → chunk-JZFU2LEM.js} +4 -4
  26. package/Build/Workers/{chunk-DAJKOQW6.js → chunk-KGLDJRSO.js} +9 -9
  27. package/Build/Workers/{chunk-CSDYSXBI.js → chunk-KUB64XW6.js} +11 -11
  28. package/Build/Workers/{chunk-X3ZV3XNO.js → chunk-L7U26FFD.js} +16 -16
  29. package/Build/Workers/{chunk-YZ3RCE45.js → chunk-LEFQBK6H.js} +11 -11
  30. package/Build/Workers/{chunk-KEPPNSBL.js → chunk-LWJXCI3F.js} +5 -5
  31. package/Build/Workers/{chunk-YNOVMSUX.js → chunk-M7HRE4QR.js} +8 -8
  32. package/Build/Workers/{chunk-ASVODZNK.js → chunk-MXHRZHDF.js} +6 -6
  33. package/Build/Workers/{chunk-PJAA7QSC.js → chunk-N52ZRKUE.js} +6 -6
  34. package/Build/Workers/{chunk-W6I3LNPF.js → chunk-NE5JTQJP.js} +7 -7
  35. package/Build/Workers/{chunk-XG54SG4O.js → chunk-NGKF5NTR.js} +5 -5
  36. package/Build/Workers/{chunk-42EJCSIV.js → chunk-NHZNMTIR.js} +5 -5
  37. package/Build/Workers/{chunk-LU7DLY2L.js → chunk-OE22564R.js} +3 -3
  38. package/Build/Workers/{chunk-A2SP2EJZ.js → chunk-OUBBMEWX.js} +6 -6
  39. package/Build/Workers/{chunk-J2XQVKVH.js → chunk-P2H75UV5.js} +67 -33
  40. package/Build/Workers/{chunk-J3KPR6DJ.js → chunk-QCMRUVVF.js} +12 -12
  41. package/Build/Workers/{chunk-RVRN4KDB.js → chunk-QSMIHPUM.js} +2 -2
  42. package/Build/Workers/{chunk-EBDZDBJN.js → chunk-RCCYW6E7.js} +12 -12
  43. package/Build/Workers/{chunk-LV3G32QE.js → chunk-RQRODXVN.js} +4 -4
  44. package/Build/Workers/{chunk-OBS5EMZ6.js → chunk-SZN34LQ5.js} +10 -10
  45. package/Build/Workers/{chunk-IKUOV6DO.js → chunk-U4XMLGSR.js} +7 -7
  46. package/Build/Workers/{chunk-NYYQZ3LH.js → chunk-U7CX3HHE.js} +8 -8
  47. package/Build/Workers/{chunk-QNOIRRJK.js → chunk-VCVA7BMD.js} +4 -4
  48. package/Build/Workers/{chunk-TGJQMEL4.js → chunk-VVZ667H6.js} +2 -2
  49. package/Build/Workers/{chunk-DBHL2UVG.js → chunk-W4PIP5PG.js} +2 -2
  50. package/Build/Workers/{chunk-2QPH5QDK.js → chunk-XPVZWY4A.js} +8 -8
  51. package/Build/Workers/{chunk-4CORGH7N.js → chunk-XQ347YWU.js} +13 -13
  52. package/Build/Workers/{chunk-T7HU6E7G.js → chunk-XZO6F23E.js} +1 -1
  53. package/Build/Workers/{chunk-DTKSVIH5.js → chunk-YLILBDWK.js} +2 -2
  54. package/Build/Workers/{chunk-JG3C3LPY.js → chunk-YLXWC7OW.js} +4 -4
  55. package/Build/Workers/combineGeometry.js +21 -21
  56. package/Build/Workers/createBoxGeometry.js +15 -15
  57. package/Build/Workers/createBoxOutlineGeometry.js +13 -13
  58. package/Build/Workers/createCircleGeometry.js +23 -23
  59. package/Build/Workers/createCircleOutlineGeometry.js +16 -16
  60. package/Build/Workers/createCoplanarPolygonGeometry.js +30 -30
  61. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +28 -28
  62. package/Build/Workers/createCorridorGeometry.js +26 -26
  63. package/Build/Workers/createCorridorOutlineGeometry.js +25 -25
  64. package/Build/Workers/createCylinderGeometry.js +17 -17
  65. package/Build/Workers/createCylinderOutlineGeometry.js +15 -15
  66. package/Build/Workers/createEllipseGeometry.js +23 -23
  67. package/Build/Workers/createEllipseOutlineGeometry.js +16 -16
  68. package/Build/Workers/createEllipsoidGeometry.js +16 -16
  69. package/Build/Workers/createEllipsoidOutlineGeometry.js +15 -15
  70. package/Build/Workers/createFrustumGeometry.js +15 -15
  71. package/Build/Workers/createFrustumOutlineGeometry.js +15 -15
  72. package/Build/Workers/createGeometry.js +24 -22
  73. package/Build/Workers/createGroundPolylineGeometry.js +19 -19
  74. package/Build/Workers/createPlaneGeometry.js +13 -13
  75. package/Build/Workers/createPlaneOutlineGeometry.js +12 -12
  76. package/Build/Workers/createPolygonGeometry.js +29 -29
  77. package/Build/Workers/createPolygonOutlineGeometry.js +27 -27
  78. package/Build/Workers/createPolylineGeometry.js +22 -22
  79. package/Build/Workers/createPolylineVolumeGeometry.js +28 -28
  80. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +24 -24
  81. package/Build/Workers/createRectangleGeometry.js +24 -24
  82. package/Build/Workers/createRectangleOutlineGeometry.js +17 -17
  83. package/Build/Workers/createSimplePolylineGeometry.js +20 -20
  84. package/Build/Workers/createSphereGeometry.js +16 -16
  85. package/Build/Workers/createSphereOutlineGeometry.js +15 -15
  86. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  87. package/Build/Workers/createVectorTileClampedPolylines.js +12 -12
  88. package/Build/Workers/createVectorTileGeometries.js +21 -21
  89. package/Build/Workers/createVectorTilePoints.js +11 -11
  90. package/Build/Workers/createVectorTilePolygons.js +19 -19
  91. package/Build/Workers/createVectorTilePolylines.js +12 -12
  92. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +88 -0
  93. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +21 -21
  94. package/Build/Workers/createVerticesFromHeightmap.js +21 -21
  95. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -277
  96. package/Build/Workers/createWallGeometry.js +21 -21
  97. package/Build/Workers/createWallOutlineGeometry.js +20 -20
  98. package/Build/Workers/decodeDraco.js +10 -10
  99. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  100. package/Build/Workers/decodeI3S.js +9 -9
  101. package/Build/Workers/gaussianSplatSorter.js +4 -4
  102. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  103. package/Build/Workers/transcodeKTX2.js +6 -6
  104. package/Build/Workers/transferTypedArrayTest.js +1 -1
  105. package/Build/Workers/upsampleQuantizedTerrainMesh.js +19 -19
  106. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +92 -0
  107. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +2 -2
  108. package/Source/Core/Cesium3DTilesTerrainData.js +930 -0
  109. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +1866 -0
  110. package/Source/Core/Cesium3DTilesTerrainProvider.js +1052 -0
  111. package/Source/Core/CesiumTerrainProvider.js +2 -2
  112. package/Source/Core/Color.js +23 -6
  113. package/Source/Core/EllipsoidalOccluder.js +2 -2
  114. package/Source/Core/FeatureDetection.js +0 -2
  115. package/Source/Core/GoogleEarthEnterpriseMetadata.js +1 -1
  116. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +1 -1
  117. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +1 -1
  118. package/Source/Core/HeightmapTerrainData.js +10 -22
  119. package/Source/Core/HilbertOrder.js +0 -6
  120. package/Source/Core/ITwinPlatform.js +6 -6
  121. package/Source/Core/Ion.js +1 -1
  122. package/Source/Core/IonResource.js +35 -27
  123. package/Source/Core/PixelFormat.js +2 -2
  124. package/Source/Core/QuantizedMeshTerrainData.js +23 -57
  125. package/Source/Core/Resource.js +15 -11
  126. package/Source/Core/S2Cell.js +6 -18
  127. package/Source/Core/TaskProcessor.js +1 -1
  128. package/Source/Core/TerrainData.js +2 -1
  129. package/Source/Core/TerrainEncoding.js +215 -38
  130. package/Source/Core/TerrainMesh.js +8 -8
  131. package/Source/Core/TerrainProvider.js +151 -0
  132. package/Source/Core/VRTheWorldTerrainProvider.js +2 -2
  133. package/Source/Core/binarySearch.js +1 -1
  134. package/Source/Core/createWorldBathymetryAsync.js +2 -2
  135. package/Source/Core/createWorldTerrainAsync.js +3 -3
  136. package/Source/Core/loadImageFromTypedArray.js +9 -3
  137. package/Source/Core/mergeSort.js +1 -1
  138. package/Source/DataSources/PropertyArray.js +2 -2
  139. package/Source/Renderer/AutomaticUniforms.js +61 -0
  140. package/Source/Renderer/Context.js +13 -7
  141. package/Source/Renderer/Pass.js +10 -9
  142. package/Source/Renderer/UniformState.js +12 -0
  143. package/Source/Renderer/VertexArray.js +1 -1
  144. package/Source/Scene/ArcGisMapServerImageryProvider.js +1 -1
  145. package/Source/Scene/ArcGisMapService.js +1 -1
  146. package/Source/Scene/Azure2DImageryProvider.js +7 -5
  147. package/Source/Scene/BatchTable.js +2 -2
  148. package/Source/Scene/BillboardCollection.js +25 -21
  149. package/Source/Scene/BingMapsImageryProvider.js +1 -1
  150. package/Source/Scene/BoundingVolumeSemantics.js +54 -62
  151. package/Source/Scene/Cesium3DTile.js +3 -3
  152. package/Source/Scene/Cesium3DTilesVoxelProvider.js +1 -1
  153. package/Source/Scene/Cesium3DTileset.js +1 -1
  154. package/Source/Scene/EdgeFramebuffer.js +245 -0
  155. package/Source/Scene/FrameState.js +12 -0
  156. package/Source/Scene/GaussianSplat3DTileContent.js +12 -16
  157. package/Source/Scene/GaussianSplatPrimitive.js +12 -8
  158. package/Source/Scene/GaussianSplatSorter.js +2 -2
  159. package/Source/Scene/Globe.js +1 -1
  160. package/Source/Scene/GlobeSurfaceTile.js +10 -4
  161. package/Source/Scene/GltfBufferViewLoader.js +18 -0
  162. package/Source/Scene/GltfLoader.js +46 -8
  163. package/Source/Scene/Google2DImageryProvider.js +39 -27
  164. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +1 -1
  165. package/Source/Scene/I3SDataProvider.js +1 -1
  166. package/Source/Scene/I3SDecoder.js +3 -3
  167. package/Source/Scene/ITwinData.js +4 -4
  168. package/Source/Scene/ImageryLayer.js +1 -1
  169. package/Source/Scene/Implicit3DTileContent.js +18 -7
  170. package/Source/Scene/ImplicitSubtree.js +3 -3
  171. package/Source/Scene/ImplicitTileset.js +2 -2
  172. package/Source/Scene/IonImageryProvider.js +15 -84
  173. package/Source/Scene/IonImageryProviderFactory.js +194 -0
  174. package/Source/Scene/LabelCollection.js +54 -36
  175. package/Source/Scene/MetadataComponentType.js +5 -5
  176. package/Source/Scene/MetadataTableProperty.js +3 -9
  177. package/Source/Scene/Model/EdgeDetectionPipelineStage.js +42 -0
  178. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +800 -0
  179. package/Source/Scene/Model/MetadataPipelineStage.js +7 -7
  180. package/Source/Scene/Model/ModelDrawCommand.js +69 -0
  181. package/Source/Scene/Model/ModelImagery.js +4 -0
  182. package/Source/Scene/Model/ModelRuntimeNode.js +2 -2
  183. package/Source/Scene/Model/ModelRuntimePrimitive.js +13 -2
  184. package/Source/Scene/Model/ModelSceneGraph.js +15 -3
  185. package/Source/Scene/Model/ModelUtility.js +0 -1
  186. package/Source/Scene/Model/NodeRenderResources.js +1 -1
  187. package/Source/Scene/Model/PrimitiveRenderResources.js +1 -1
  188. package/Source/Scene/OIT.js +11 -1
  189. package/Source/Scene/PickFramebuffer.js +13 -17
  190. package/Source/Scene/Picking.js +104 -80
  191. package/Source/Scene/QuadtreePrimitive.js +34 -26
  192. package/Source/Scene/QuadtreeTile.js +66 -46
  193. package/Source/Scene/ResourceLoaderState.js +1 -1
  194. package/Source/Scene/Scene.js +124 -12
  195. package/Source/Scene/ScreenSpaceCameraController.js +1 -1
  196. package/Source/Scene/SensorVolumePortionToDisplay.js +6 -6
  197. package/Source/Scene/SingleTileImageryProvider.js +3 -3
  198. package/Source/Scene/Terrain.js +5 -5
  199. package/Source/Scene/TileMapServiceImageryProvider.js +2 -2
  200. package/Source/Scene/UrlTemplateImageryProvider.js +1 -1
  201. package/Source/Scene/View.js +3 -0
  202. package/Source/Scene/VoxelPrimitive.js +196 -189
  203. package/Source/Scene/VoxelShape.js +2 -0
  204. package/Source/Scene/createWorldImageryAsync.js +1 -1
  205. package/Source/Shaders/BillboardCollectionFS.glsl +102 -62
  206. package/Source/Shaders/BillboardCollectionFS.js +102 -63
  207. package/Source/Shaders/BillboardCollectionVS.glsl +44 -37
  208. package/Source/Shaders/BillboardCollectionVS.js +45 -38
  209. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  210. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  211. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  212. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  213. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  214. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  215. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.glsl +10 -0
  216. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.js +12 -0
  217. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  218. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  219. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  220. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  221. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  222. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  223. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  224. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  225. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  226. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  227. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  228. package/Source/Shaders/GlobeVS.glsl +1 -1
  229. package/Source/Shaders/GlobeVS.js +1 -1
  230. package/Source/Shaders/Model/EdgeDetectionStageFS.glsl +58 -0
  231. package/Source/Shaders/Model/EdgeDetectionStageFS.js +60 -0
  232. package/Source/Shaders/Model/EdgeVisibilityStageFS.glsl +83 -0
  233. package/Source/Shaders/Model/EdgeVisibilityStageFS.js +85 -0
  234. package/Source/Shaders/Model/ModelFS.glsl +5 -0
  235. package/Source/Shaders/Model/ModelFS.js +5 -0
  236. package/Source/Shaders/Model/PrimitiveOutlineStageFS.glsl +0 -1
  237. package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +0 -1
  238. package/Source/Shaders/ShadowVolumeAppearanceFS.glsl +7 -15
  239. package/Source/Shaders/ShadowVolumeAppearanceFS.js +7 -15
  240. package/Source/Workers/createVerticesFromCesium3DTilesTerrain.js +46 -0
  241. package/Source/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +55 -0
  242. package/index.d.ts +281 -27
  243. package/index.js +200 -190
  244. package/package.json +2 -1
@@ -0,0 +1,85 @@
1
+ //This file is automatically rebuilt by the Cesium build process.
2
+ export default "// CESIUM_REDIRECTED_COLOR_OUTPUT flag is used to avoid color attachment conflicts\n\
3
+ // when shaders are processed by different rendering pipelines (e.g., OIT).\n\
4
+ // Only declare MRT outputs when not in a derived shader context.\n\
5
+ #if defined(HAS_EDGE_VISIBILITY_MRT) && !defined(CESIUM_REDIRECTED_COLOR_OUTPUT)\n\
6
+ layout(location = 1) out vec4 out_id; // edge id / metadata\n\
7
+ layout(location = 2) out vec4 out_edgeDepth; // packed depth\n\
8
+ #endif\n\
9
+ \n\
10
+ void edgeVisibilityStage(inout vec4 color, inout FeatureIds featureIds)\n\
11
+ {\n\
12
+ #ifdef HAS_EDGE_VISIBILITY\n\
13
+ \n\
14
+ if (!u_isEdgePass) {\n\
15
+ return;\n\
16
+ }\n\
17
+ \n\
18
+ float edgeTypeInt = v_edgeType * 255.0;\n\
19
+ \n\
20
+ // Color code different edge types\n\
21
+ vec4 edgeColor = vec4(0.0);\n\
22
+ \n\
23
+ if (edgeTypeInt < 0.5) { // HIDDEN (0)\n\
24
+ edgeColor = vec4(0.0, 0.0, 0.0, 0.0); // Transparent for hidden edges\n\
25
+ }\n\
26
+ else if (edgeTypeInt > 0.5 && edgeTypeInt < 1.5) { // SILHOUETTE (1) - Conditional visibility\n\
27
+ // Proper silhouette detection using face normals\n\
28
+ vec3 normalA = normalize(v_faceNormalAView);\n\
29
+ vec3 normalB = normalize(v_faceNormalBView);\n\
30
+ \n\
31
+ // Calculate view direction using existing eye-space position varying (v_positionEC)\n\
32
+ vec3 viewDir = -normalize(v_positionEC);\n\
33
+ \n\
34
+ // Calculate dot products to determine triangle facing\n\
35
+ float dotA = dot(normalA, viewDir);\n\
36
+ float dotB = dot(normalB, viewDir);\n\
37
+ \n\
38
+ const float eps = 1e-3;\n\
39
+ bool frontA = dotA > eps;\n\
40
+ bool backA = dotA < -eps;\n\
41
+ bool frontB = dotB > eps;\n\
42
+ bool backB = dotB < -eps;\n\
43
+ \n\
44
+ // True silhouette: one triangle front-facing, other back-facing\n\
45
+ bool oppositeFacing = (frontA && backB) || (backA && frontB);\n\
46
+ \n\
47
+ // Exclude edges where both triangles are nearly grazing (perpendicular to view)\n\
48
+ // This handles the top-view cylinder case where both normals are ~horizontal\n\
49
+ bool bothNearGrazing = (abs(dotA) <= eps && abs(dotB) <= eps);\n\
50
+ \n\
51
+ if (!(oppositeFacing && !bothNearGrazing)) {\n\
52
+ discard; // Not a true silhouette edge\n\
53
+ } else {\n\
54
+ // True silhouette\n\
55
+ edgeColor = vec4(1.0, 0.0, 0.0, 1.0);\n\
56
+ }\n\
57
+ }\n\
58
+ else if (edgeTypeInt > 1.5 && edgeTypeInt < 2.5) { // HARD (2) - BRIGHT GREEN\n\
59
+ edgeColor = vec4(0.0, 1.0, 0.0, 1.0); // Extra bright green\n\
60
+ }\n\
61
+ else if (edgeTypeInt > 2.5 && edgeTypeInt < 3.5) { // REPEATED (3)\n\
62
+ edgeColor = vec4(0.0, 0.0, 1.0, 1.0);\n\
63
+ } else {\n\
64
+ edgeColor = vec4(0.0, 0.0, 0.0, 0.0);\n\
65
+ }\n\
66
+ \n\
67
+ // Temporary color: white\n\
68
+ edgeColor = vec4(1.0, 1.0, 1.0, 1.0);\n\
69
+ color = edgeColor;\n\
70
+ \n\
71
+ #if defined(HAS_EDGE_VISIBILITY_MRT) && !defined(CESIUM_REDIRECTED_COLOR_OUTPUT)\n\
72
+ // Write edge metadata\n\
73
+ out_id = vec4(0.0);\n\
74
+ out_id.r = edgeTypeInt; // Edge type (0-3)\n\
75
+ #ifdef HAS_EDGE_FEATURE_ID\n\
76
+ out_id.g = float(featureIds.featureId_0); // Feature ID if available\n\
77
+ #else\n\
78
+ out_id.g = 0.0;\n\
79
+ #endif\n\
80
+ // Pack depth into separate MRT attachment\n\
81
+ out_edgeDepth = czm_packDepth(gl_FragCoord.z);\n\
82
+ #endif\n\
83
+ #endif\n\
84
+ }\n\
85
+ ";
@@ -119,6 +119,11 @@ void main()
119
119
  atmosphereStage(color, attributes);
120
120
  #endif
121
121
 
122
+ #ifdef HAS_EDGE_VISIBILITY
123
+ edgeVisibilityStage(color, featureIds);
124
+ edgeDetectionStage(color, featureIds);
125
+ #endif
126
+
122
127
  #endif
123
128
  // When not picking metadata END
124
129
  //========================================================================
@@ -119,6 +119,11 @@ void main()\n\
119
119
  #ifdef HAS_ATMOSPHERE\n\
120
120
  atmosphereStage(color, attributes);\n\
121
121
  #endif\n\
122
+ \n\
123
+ #ifdef HAS_EDGE_VISIBILITY\n\
124
+ edgeVisibilityStage(color, featureIds);\n\
125
+ edgeDetectionStage(color, featureIds);\n\
126
+ #endif\n\
122
127
  \n\
123
128
  #endif\n\
124
129
  // When not picking metadata END\n\
@@ -13,4 +13,3 @@ void primitiveOutlineStage(inout czm_modelMaterial material) {
13
13
 
14
14
  material.diffuse = mix(material.diffuse, model_outlineColor.rgb, model_outlineColor.a * outlineness);
15
15
  }
16
-
@@ -14,5 +14,4 @@ export default "void primitiveOutlineStage(inout czm_modelMaterial material) {\n
14
14
  \n\
15
15
  material.diffuse = mix(material.diffuse, model_outlineColor.rgb, model_outlineColor.a * outlineness);\n\
16
16
  }\n\
17
- \n\
18
17
  ";
@@ -65,21 +65,6 @@ void main(void)
65
65
  #endif // SPHERICAL
66
66
  #endif // TEXTURE_COORDINATES
67
67
 
68
- #ifdef PICK
69
- #ifdef CULL_FRAGMENTS
70
- // When classifying translucent geometry, logDepthOrDepth == 0.0
71
- // indicates a region that should not be classified, possibly due to there
72
- // being opaque pixels there in another buffer.
73
- // Check for logDepthOrDepth != 0.0 to make sure this should be classified.
74
- if (0.0 <= uv.x && uv.x <= 1.0 && 0.0 <= uv.y && uv.y <= 1.0 || logDepthOrDepth != 0.0) {
75
- out_FragColor.a = 1.0; // 0.0 alpha leads to discard from ShaderSource.createPickFragmentShaderSource
76
- czm_writeDepthClamp();
77
- }
78
- #else // CULL_FRAGMENTS
79
- out_FragColor.a = 1.0;
80
- #endif // CULL_FRAGMENTS
81
- #else // PICK
82
-
83
68
  #ifdef CULL_FRAGMENTS
84
69
  // When classifying translucent geometry, logDepthOrDepth == 0.0
85
70
  // indicates a region that should not be classified, possibly due to there
@@ -89,6 +74,13 @@ void main(void)
89
74
  }
90
75
  #endif
91
76
 
77
+ #ifdef PICK
78
+ out_FragColor.a = 1.0; // Explicitly set the alpha, otherwise this may be discarded by ShaderSource.createPickFragmentShaderSource
79
+ #ifdef CULL_FRAGMENTS
80
+ czm_writeDepthClamp();
81
+ #endif // CULL_FRAGMENTS
82
+ #else // PICK
83
+
92
84
  #ifdef NORMAL_EC
93
85
  // Compute normal by sampling adjacent pixels in 2x2 block in screen space
94
86
  vec3 downUp = vectorFromOffset(eyeCoordinate, vec2(0.0, 1.0));
@@ -66,21 +66,6 @@ void main(void)\n\
66
66
  #endif // SPHERICAL\n\
67
67
  #endif // TEXTURE_COORDINATES\n\
68
68
  \n\
69
- #ifdef PICK\n\
70
- #ifdef CULL_FRAGMENTS\n\
71
- // When classifying translucent geometry, logDepthOrDepth == 0.0\n\
72
- // indicates a region that should not be classified, possibly due to there\n\
73
- // being opaque pixels there in another buffer.\n\
74
- // Check for logDepthOrDepth != 0.0 to make sure this should be classified.\n\
75
- if (0.0 <= uv.x && uv.x <= 1.0 && 0.0 <= uv.y && uv.y <= 1.0 || logDepthOrDepth != 0.0) {\n\
76
- out_FragColor.a = 1.0; // 0.0 alpha leads to discard from ShaderSource.createPickFragmentShaderSource\n\
77
- czm_writeDepthClamp();\n\
78
- }\n\
79
- #else // CULL_FRAGMENTS\n\
80
- out_FragColor.a = 1.0;\n\
81
- #endif // CULL_FRAGMENTS\n\
82
- #else // PICK\n\
83
- \n\
84
69
  #ifdef CULL_FRAGMENTS\n\
85
70
  // When classifying translucent geometry, logDepthOrDepth == 0.0\n\
86
71
  // indicates a region that should not be classified, possibly due to there\n\
@@ -90,6 +75,13 @@ void main(void)\n\
90
75
  }\n\
91
76
  #endif\n\
92
77
  \n\
78
+ #ifdef PICK\n\
79
+ out_FragColor.a = 1.0; // Explicitly set the alpha, otherwise this may be discarded by ShaderSource.createPickFragmentShaderSource\n\
80
+ #ifdef CULL_FRAGMENTS\n\
81
+ czm_writeDepthClamp();\n\
82
+ #endif // CULL_FRAGMENTS\n\
83
+ #else // PICK\n\
84
+ \n\
93
85
  #ifdef NORMAL_EC\n\
94
86
  // Compute normal by sampling adjacent pixels in 2x2 block in screen space\n\
95
87
  vec3 downUp = vectorFromOffset(eyeCoordinate, vec2(0.0, 1.0));\n\
@@ -0,0 +1,46 @@
1
+ import Cesium3DTilesTerrainGeometryProcessor from "../Core/Cesium3DTilesTerrainGeometryProcessor.js";
2
+ import createTaskProcessorWorker from "./createTaskProcessorWorker.js";
3
+
4
+ /**
5
+ * @private
6
+ *
7
+ * @param {Cesium3DTilesTerrainGeometryProcessor.CreateMeshOptions} options An object describing options for mesh creation.
8
+ * @param {ArrayBuffer[]} transferableObjects An array of buffers that can be transferred back to the main thread.
9
+ * @returns {Promise<object>} A promise that resolves to an object containing selected info from the created TerrainMesh.
10
+ */
11
+ function createVerticesFromCesium3DTilesTerrain(options, transferableObjects) {
12
+ const meshPromise = Cesium3DTilesTerrainGeometryProcessor.createMesh(options);
13
+ return meshPromise.then(function (mesh) {
14
+ const verticesBuffer = mesh.vertices.buffer;
15
+ const indicesBuffer = mesh.indices.buffer;
16
+ const westIndicesBuffer = mesh.westIndicesSouthToNorth.buffer;
17
+ const southIndicesBuffer = mesh.southIndicesEastToWest.buffer;
18
+ const eastIndicesBuffer = mesh.eastIndicesNorthToSouth.buffer;
19
+ const northIndicesBuffer = mesh.northIndicesWestToEast.buffer;
20
+
21
+ transferableObjects.push(
22
+ verticesBuffer,
23
+ indicesBuffer,
24
+ westIndicesBuffer,
25
+ southIndicesBuffer,
26
+ eastIndicesBuffer,
27
+ northIndicesBuffer,
28
+ );
29
+
30
+ return {
31
+ verticesBuffer: verticesBuffer,
32
+ indicesBuffer: indicesBuffer,
33
+ vertexCountWithoutSkirts: mesh.vertexCountWithoutSkirts,
34
+ indexCountWithoutSkirts: mesh.indexCountWithoutSkirts,
35
+ encoding: mesh.encoding,
36
+ westIndicesBuffer: westIndicesBuffer,
37
+ southIndicesBuffer: southIndicesBuffer,
38
+ eastIndicesBuffer: eastIndicesBuffer,
39
+ northIndicesBuffer: northIndicesBuffer,
40
+ };
41
+ });
42
+ }
43
+
44
+ export default createTaskProcessorWorker(
45
+ createVerticesFromCesium3DTilesTerrain,
46
+ );
@@ -0,0 +1,55 @@
1
+ import Cesium3DTilesTerrainGeometryProcessor from "../Core/Cesium3DTilesTerrainGeometryProcessor.js";
2
+ import createTaskProcessorWorker from "./createTaskProcessorWorker.js";
3
+
4
+ /**
5
+ * @private
6
+ * @param {Cesium3DTilesTerrainGeometryProcessor.UpsampleMeshOptions} options An object describing options for mesh upsampling.
7
+ * @param {ArrayBuffer[]} transferableObjects An array of buffers that can be transferred back to the main thread.
8
+ * @returns {TerrainMeshProxy} An object containing selected info from the upsampled TerrainMesh.
9
+ */
10
+
11
+ function upsampleVerticesFromCesium3DTilesTerrain(
12
+ options,
13
+ transferableObjects,
14
+ ) {
15
+ const mesh = Cesium3DTilesTerrainGeometryProcessor.upsampleMesh(options);
16
+
17
+ const verticesBuffer = mesh.vertices.buffer;
18
+ const indicesBuffer = mesh.indices.buffer;
19
+ const westIndicesBuffer = mesh.westIndicesSouthToNorth.buffer;
20
+ const southIndicesBuffer = mesh.southIndicesEastToWest.buffer;
21
+ const eastIndicesBuffer = mesh.eastIndicesNorthToSouth.buffer;
22
+ const northIndicesBuffer = mesh.northIndicesWestToEast.buffer;
23
+
24
+ transferableObjects.push(
25
+ verticesBuffer,
26
+ indicesBuffer,
27
+ westIndicesBuffer,
28
+ southIndicesBuffer,
29
+ eastIndicesBuffer,
30
+ northIndicesBuffer,
31
+ );
32
+
33
+ /** @type {TerrainMeshProxy} */
34
+ const result = {
35
+ verticesBuffer: verticesBuffer,
36
+ indicesBuffer: indicesBuffer,
37
+ vertexCountWithoutSkirts: mesh.vertexCountWithoutSkirts,
38
+ indexCountWithoutSkirts: mesh.indexCountWithoutSkirts,
39
+ encoding: mesh.encoding,
40
+ westIndicesBuffer: westIndicesBuffer,
41
+ southIndicesBuffer: southIndicesBuffer,
42
+ eastIndicesBuffer: eastIndicesBuffer,
43
+ northIndicesBuffer: northIndicesBuffer,
44
+ minimumHeight: mesh.minimumHeight,
45
+ maximumHeight: mesh.maximumHeight,
46
+ boundingSphere: mesh.boundingSphere3D,
47
+ orientedBoundingBox: mesh.orientedBoundingBox,
48
+ horizonOcclusionPoint: mesh.horizonOcclusionPoint,
49
+ };
50
+ return result;
51
+ }
52
+
53
+ export default createTaskProcessorWorker(
54
+ upsampleVerticesFromCesium3DTilesTerrain,
55
+ );