@cesium/engine 21.0.1-ion.0 → 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.
- package/Build/Workers/{chunk-LSNF6CIP.js → chunk-2D3GLFZD.js} +12 -12
- package/Build/Workers/chunk-34YXP222.js +352 -0
- package/Build/Workers/{chunk-OLH67Z2S.js → chunk-3GL53OCU.js} +17 -18
- package/Build/Workers/{chunk-WIPOMPA5.js → chunk-5B7VZQZY.js} +6 -6
- package/Build/Workers/{chunk-NWJRIJQG.js → chunk-5T5SY63I.js} +2 -2
- package/Build/Workers/{chunk-DTYIUWZU.js → chunk-5ZF53EY6.js} +4 -4
- package/Build/Workers/{chunk-UTTKH2UG.js → chunk-6HBKE43B.js} +7 -7
- package/Build/Workers/{chunk-ZTGZMKAB.js → chunk-726NINF5.js} +16 -16
- package/Build/Workers/{chunk-L73TRTIG.js → chunk-75HAJIDT.js} +1 -1
- package/Build/Workers/{chunk-G5RX7BPJ.js → chunk-7KAXDKRU.js} +10 -10
- package/Build/Workers/chunk-7XEJGXX2.js +2759 -0
- package/Build/Workers/{chunk-ZOVMWDPW.js → chunk-A4DPJIWS.js} +18 -10
- package/Build/Workers/{chunk-UTL4WVC3.js → chunk-A6JAFSZT.js} +5 -5
- package/Build/Workers/{chunk-E6T4LSM6.js → chunk-AARZSH4V.js} +5 -5
- package/Build/Workers/{chunk-EEDSGIH7.js → chunk-AOM3FHBN.js} +6 -6
- package/Build/Workers/{chunk-WJV24LAS.js → chunk-BJSNGGBM.js} +4 -4
- package/Build/Workers/{chunk-VIDWZGD6.js → chunk-ECHAJNQJ.js} +12 -12
- package/Build/Workers/{chunk-MIFUV36K.js → chunk-EJO3NKMS.js} +1 -1
- package/Build/Workers/{chunk-ADADBRLI.js → chunk-EZ7NJXQN.js} +4 -4
- package/Build/Workers/{chunk-MJWRSKJV.js → chunk-FA3SCJDX.js} +2 -2
- package/Build/Workers/{chunk-XFS2ORSO.js → chunk-GYRDA3XK.js} +14 -14
- package/Build/Workers/{chunk-3XTJC4CV.js → chunk-H7B7FU2U.js} +7 -7
- package/Build/Workers/{chunk-HDBIC7IL.js → chunk-IGX772ZQ.js} +1 -1
- package/Build/Workers/{chunk-EHMAKCWQ.js → chunk-JDJAPBZP.js} +1 -1
- package/Build/Workers/{chunk-LK7H6V2E.js → chunk-JZFU2LEM.js} +4 -4
- package/Build/Workers/{chunk-3K4DRV7Y.js → chunk-KGLDJRSO.js} +9 -9
- package/Build/Workers/{chunk-LEFV6H2V.js → chunk-KUB64XW6.js} +11 -11
- package/Build/Workers/{chunk-26ZRRKTU.js → chunk-L7U26FFD.js} +16 -16
- package/Build/Workers/{chunk-T7WXNKIA.js → chunk-LEFQBK6H.js} +11 -11
- package/Build/Workers/{chunk-75UG66GR.js → chunk-LWJXCI3F.js} +5 -5
- package/Build/Workers/{chunk-ESPNIYL5.js → chunk-M7HRE4QR.js} +8 -8
- package/Build/Workers/{chunk-SGEAS4NZ.js → chunk-MXHRZHDF.js} +6 -6
- package/Build/Workers/{chunk-YFZMB6FZ.js → chunk-N52ZRKUE.js} +6 -6
- package/Build/Workers/{chunk-AQ4A5CMC.js → chunk-NE5JTQJP.js} +7 -7
- package/Build/Workers/{chunk-G74UMFQ4.js → chunk-NGKF5NTR.js} +5 -5
- package/Build/Workers/{chunk-TXK2FF6N.js → chunk-NHZNMTIR.js} +5 -5
- package/Build/Workers/{chunk-2PX2ULSM.js → chunk-OE22564R.js} +3 -3
- package/Build/Workers/{chunk-AGT6W3JS.js → chunk-OUBBMEWX.js} +6 -6
- package/Build/Workers/{chunk-JESBYOH5.js → chunk-P2H75UV5.js} +67 -33
- package/Build/Workers/{chunk-B56XVJRS.js → chunk-QCMRUVVF.js} +12 -12
- package/Build/Workers/{chunk-SDFGZML6.js → chunk-QSMIHPUM.js} +2 -2
- package/Build/Workers/{chunk-SF2XXYOB.js → chunk-RCCYW6E7.js} +12 -12
- package/Build/Workers/{chunk-EZJXK2UP.js → chunk-RQRODXVN.js} +4 -4
- package/Build/Workers/{chunk-WMG6UOCJ.js → chunk-SZN34LQ5.js} +10 -10
- package/Build/Workers/{chunk-XYBFMHXA.js → chunk-U4XMLGSR.js} +7 -7
- package/Build/Workers/{chunk-KGL66RWW.js → chunk-U7CX3HHE.js} +8 -8
- package/Build/Workers/{chunk-MFPT34BC.js → chunk-VCVA7BMD.js} +4 -4
- package/Build/Workers/{chunk-H3G7OYZY.js → chunk-VVZ667H6.js} +2 -2
- package/Build/Workers/{chunk-PQW63B2T.js → chunk-W4PIP5PG.js} +2 -2
- package/Build/Workers/{chunk-XPTKQIVN.js → chunk-XPVZWY4A.js} +8 -8
- package/Build/Workers/{chunk-OWCFUM4Z.js → chunk-XQ347YWU.js} +13 -13
- package/Build/Workers/{chunk-MBIUW42A.js → chunk-XZO6F23E.js} +1 -1
- package/Build/Workers/{chunk-6KX3IUUT.js → chunk-YLILBDWK.js} +2 -2
- package/Build/Workers/{chunk-RFZAUDYZ.js → chunk-YLXWC7OW.js} +4 -4
- package/Build/Workers/combineGeometry.js +21 -21
- package/Build/Workers/createBoxGeometry.js +15 -15
- package/Build/Workers/createBoxOutlineGeometry.js +13 -13
- package/Build/Workers/createCircleGeometry.js +23 -23
- package/Build/Workers/createCircleOutlineGeometry.js +16 -16
- package/Build/Workers/createCoplanarPolygonGeometry.js +30 -30
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +28 -28
- package/Build/Workers/createCorridorGeometry.js +26 -26
- package/Build/Workers/createCorridorOutlineGeometry.js +25 -25
- package/Build/Workers/createCylinderGeometry.js +17 -17
- package/Build/Workers/createCylinderOutlineGeometry.js +15 -15
- package/Build/Workers/createEllipseGeometry.js +23 -23
- package/Build/Workers/createEllipseOutlineGeometry.js +16 -16
- package/Build/Workers/createEllipsoidGeometry.js +16 -16
- package/Build/Workers/createEllipsoidOutlineGeometry.js +15 -15
- package/Build/Workers/createFrustumGeometry.js +15 -15
- package/Build/Workers/createFrustumOutlineGeometry.js +15 -15
- package/Build/Workers/createGeometry.js +24 -22
- package/Build/Workers/createGroundPolylineGeometry.js +19 -19
- package/Build/Workers/createPlaneGeometry.js +13 -13
- package/Build/Workers/createPlaneOutlineGeometry.js +12 -12
- package/Build/Workers/createPolygonGeometry.js +29 -29
- package/Build/Workers/createPolygonOutlineGeometry.js +27 -27
- package/Build/Workers/createPolylineGeometry.js +22 -22
- package/Build/Workers/createPolylineVolumeGeometry.js +28 -28
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +24 -24
- package/Build/Workers/createRectangleGeometry.js +24 -24
- package/Build/Workers/createRectangleOutlineGeometry.js +17 -17
- package/Build/Workers/createSimplePolylineGeometry.js +20 -20
- package/Build/Workers/createSphereGeometry.js +16 -16
- package/Build/Workers/createSphereOutlineGeometry.js +15 -15
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +12 -12
- package/Build/Workers/createVectorTileGeometries.js +21 -21
- package/Build/Workers/createVectorTilePoints.js +11 -11
- package/Build/Workers/createVectorTilePolygons.js +19 -19
- package/Build/Workers/createVectorTilePolylines.js +12 -12
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +88 -0
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +21 -21
- package/Build/Workers/createVerticesFromHeightmap.js +21 -21
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -277
- package/Build/Workers/createWallGeometry.js +21 -21
- package/Build/Workers/createWallOutlineGeometry.js +20 -20
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +9 -9
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/transcodeKTX2.js +6 -6
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +19 -19
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +92 -0
- package/Source/Core/ArcGISTiledElevationTerrainProvider.js +2 -2
- package/Source/Core/Cesium3DTilesTerrainData.js +930 -0
- package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +1866 -0
- package/Source/Core/Cesium3DTilesTerrainProvider.js +1052 -0
- package/Source/Core/CesiumTerrainProvider.js +2 -2
- package/Source/Core/Color.js +23 -6
- package/Source/Core/EllipsoidalOccluder.js +2 -2
- package/Source/Core/FeatureDetection.js +0 -2
- package/Source/Core/GoogleEarthEnterpriseMetadata.js +1 -1
- package/Source/Core/GoogleEarthEnterpriseTerrainData.js +1 -1
- package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +1 -1
- package/Source/Core/HeightmapTerrainData.js +10 -22
- package/Source/Core/HilbertOrder.js +0 -6
- package/Source/Core/ITwinPlatform.js +6 -6
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/IonResource.js +35 -27
- package/Source/Core/PixelFormat.js +2 -2
- package/Source/Core/QuantizedMeshTerrainData.js +23 -57
- package/Source/Core/Resource.js +15 -11
- package/Source/Core/S2Cell.js +6 -18
- package/Source/Core/TaskProcessor.js +1 -1
- package/Source/Core/TerrainData.js +2 -1
- package/Source/Core/TerrainEncoding.js +215 -38
- package/Source/Core/TerrainMesh.js +8 -8
- package/Source/Core/TerrainProvider.js +151 -0
- package/Source/Core/VRTheWorldTerrainProvider.js +2 -2
- package/Source/Core/binarySearch.js +1 -1
- package/Source/Core/createWorldBathymetryAsync.js +2 -2
- package/Source/Core/createWorldTerrainAsync.js +3 -3
- package/Source/Core/loadImageFromTypedArray.js +9 -3
- package/Source/Core/mergeSort.js +1 -1
- package/Source/DataSources/PropertyArray.js +2 -2
- package/Source/Renderer/AutomaticUniforms.js +61 -0
- package/Source/Renderer/Context.js +13 -7
- package/Source/Renderer/Pass.js +10 -9
- package/Source/Renderer/UniformState.js +12 -0
- package/Source/Renderer/VertexArray.js +1 -1
- package/Source/Scene/ArcGisMapServerImageryProvider.js +1 -1
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/Azure2DImageryProvider.js +7 -5
- package/Source/Scene/BatchTable.js +2 -2
- package/Source/Scene/BillboardCollection.js +25 -21
- package/Source/Scene/BingMapsImageryProvider.js +1 -1
- package/Source/Scene/BoundingVolumeSemantics.js +54 -62
- package/Source/Scene/Cesium3DTile.js +3 -3
- package/Source/Scene/Cesium3DTilesVoxelProvider.js +1 -1
- package/Source/Scene/Cesium3DTileset.js +1 -1
- package/Source/Scene/EdgeFramebuffer.js +245 -0
- package/Source/Scene/FrameState.js +12 -0
- package/Source/Scene/GaussianSplat3DTileContent.js +12 -16
- package/Source/Scene/GaussianSplatPrimitive.js +12 -8
- package/Source/Scene/GaussianSplatSorter.js +2 -2
- package/Source/Scene/Globe.js +1 -1
- package/Source/Scene/GlobeSurfaceTile.js +10 -4
- package/Source/Scene/GltfBufferViewLoader.js +18 -0
- package/Source/Scene/GltfLoader.js +46 -8
- package/Source/Scene/Google2DImageryProvider.js +39 -27
- package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +1 -1
- package/Source/Scene/I3SDataProvider.js +1 -1
- package/Source/Scene/I3SDecoder.js +3 -3
- package/Source/Scene/ITwinData.js +4 -4
- package/Source/Scene/ImageryLayer.js +1 -1
- package/Source/Scene/Implicit3DTileContent.js +18 -7
- package/Source/Scene/ImplicitSubtree.js +3 -3
- package/Source/Scene/ImplicitTileset.js +2 -2
- package/Source/Scene/IonImageryProvider.js +15 -84
- package/Source/Scene/IonImageryProviderFactory.js +194 -0
- package/Source/Scene/LabelCollection.js +54 -36
- package/Source/Scene/MetadataComponentType.js +5 -5
- package/Source/Scene/MetadataTableProperty.js +3 -9
- package/Source/Scene/Model/EdgeDetectionPipelineStage.js +42 -0
- package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +800 -0
- package/Source/Scene/Model/MetadataPipelineStage.js +7 -7
- package/Source/Scene/Model/ModelDrawCommand.js +69 -0
- package/Source/Scene/Model/ModelImagery.js +4 -0
- package/Source/Scene/Model/ModelRuntimeNode.js +2 -2
- package/Source/Scene/Model/ModelRuntimePrimitive.js +13 -2
- package/Source/Scene/Model/ModelSceneGraph.js +15 -3
- package/Source/Scene/Model/ModelUtility.js +0 -1
- package/Source/Scene/Model/NodeRenderResources.js +1 -1
- package/Source/Scene/Model/PrimitiveRenderResources.js +1 -1
- package/Source/Scene/OIT.js +11 -1
- package/Source/Scene/PickFramebuffer.js +13 -17
- package/Source/Scene/Picking.js +104 -80
- package/Source/Scene/QuadtreePrimitive.js +34 -26
- package/Source/Scene/QuadtreeTile.js +66 -46
- package/Source/Scene/ResourceLoaderState.js +1 -1
- package/Source/Scene/Scene.js +124 -12
- package/Source/Scene/ScreenSpaceCameraController.js +1 -1
- package/Source/Scene/SensorVolumePortionToDisplay.js +6 -6
- package/Source/Scene/SingleTileImageryProvider.js +3 -3
- package/Source/Scene/Terrain.js +5 -5
- package/Source/Scene/TileMapServiceImageryProvider.js +2 -2
- package/Source/Scene/UrlTemplateImageryProvider.js +1 -1
- package/Source/Scene/View.js +3 -0
- package/Source/Scene/VoxelPrimitive.js +196 -189
- package/Source/Scene/VoxelShape.js +2 -0
- package/Source/Scene/createWorldImageryAsync.js +1 -1
- package/Source/Shaders/BillboardCollectionFS.glsl +102 -62
- package/Source/Shaders/BillboardCollectionFS.js +102 -63
- package/Source/Shaders/BillboardCollectionVS.glsl +44 -37
- package/Source/Shaders/BillboardCollectionVS.js +45 -38
- package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.glsl +10 -0
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.js +12 -0
- package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
- package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
- package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
- package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
- package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
- package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
- package/Source/Shaders/GlobeVS.glsl +1 -1
- package/Source/Shaders/GlobeVS.js +1 -1
- package/Source/Shaders/Model/EdgeDetectionStageFS.glsl +58 -0
- package/Source/Shaders/Model/EdgeDetectionStageFS.js +60 -0
- package/Source/Shaders/Model/EdgeVisibilityStageFS.glsl +83 -0
- package/Source/Shaders/Model/EdgeVisibilityStageFS.js +85 -0
- package/Source/Shaders/Model/ModelFS.glsl +5 -0
- package/Source/Shaders/Model/ModelFS.js +5 -0
- package/Source/Shaders/Model/PrimitiveOutlineStageFS.glsl +0 -1
- package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +0 -1
- package/Source/Shaders/ShadowVolumeAppearanceFS.glsl +7 -15
- package/Source/Shaders/ShadowVolumeAppearanceFS.js +7 -15
- package/Source/Workers/createVerticesFromCesium3DTilesTerrain.js +46 -0
- package/Source/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +55 -0
- package/index.d.ts +281 -27
- package/index.js +176 -166
- 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\
|
|
@@ -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
|
+
);
|