deeptwins-cesium-engine 0.1.2 → 0.1.4
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-2HWLF3FT.js +837 -0
- package/Build/Workers/chunk-2KXMJ5XS.js +3792 -0
- package/Build/Workers/chunk-2NPCLB3H.js +56 -0
- package/Build/Workers/chunk-2ZHQTIBH.js +1483 -0
- package/Build/Workers/chunk-3GLYOW63.js +352 -0
- package/Build/Workers/chunk-3L22KMPU.js +219 -0
- package/Build/Workers/chunk-3Q6V2B2I.js +73 -0
- package/Build/Workers/chunk-3QOKKRIG.js +387 -0
- package/Build/Workers/chunk-44YZFGRH.js +1800 -0
- package/Build/Workers/chunk-45VV4SBO.js +2342 -0
- package/Build/Workers/chunk-4EJ4AA2S.js +368 -0
- package/Build/Workers/chunk-4IJFHUL6.js +414 -0
- package/Build/Workers/chunk-4K3V5CGW.js +454 -0
- package/Build/Workers/chunk-4M4QL6KJ.js +305 -0
- package/Build/Workers/chunk-4YNRIEQ6.js +288 -0
- package/Build/Workers/chunk-56CVDPH5.js +352 -0
- package/Build/Workers/chunk-5CTAAPXH.js +1483 -0
- package/Build/Workers/chunk-5ISZ6NJD.js +102 -0
- package/Build/Workers/chunk-5SDHYIOS.js +56 -0
- package/Build/Workers/chunk-66TGUMCU.js +2719 -0
- package/Build/Workers/chunk-6EJMTDQJ.js +163 -0
- package/Build/Workers/chunk-6VWXYSMH.js +959 -0
- package/Build/Workers/chunk-6VZ7VB2Q.js +241 -0
- package/Build/Workers/chunk-7AMRE57Q.js +301 -0
- package/Build/Workers/chunk-7DH6C33H.js +398 -0
- package/Build/Workers/chunk-7VUS3FVE.js +38 -0
- package/Build/Workers/chunk-7Y3ZA6H3.js +198 -0
- package/Build/Workers/chunk-A6BMHZNA.js +38 -0
- package/Build/Workers/chunk-A7XY2MN7.js +171 -0
- package/Build/Workers/chunk-AC7ND63S.js +57 -0
- package/Build/Workers/chunk-AHCZ757M.js +9230 -0
- package/Build/Workers/chunk-ANOA7E7F.js +56 -0
- package/Build/Workers/chunk-AYO5HHV6.js +789 -0
- package/Build/Workers/chunk-BE2N56VZ.js +1344 -0
- package/Build/Workers/chunk-BR3BPM64.js +9230 -0
- package/Build/Workers/chunk-BVMRWGOK.js +455 -0
- package/Build/Workers/chunk-BXEL2NX7.js +455 -0
- package/Build/Workers/chunk-C5BO2JCG.js +278 -0
- package/Build/Workers/chunk-CIRQNZVR.js +301 -0
- package/Build/Workers/chunk-CM67CQME.js +305 -0
- package/Build/Workers/chunk-D3QIW4DH.js +630 -0
- package/Build/Workers/chunk-E5W7QIGZ.js +511 -0
- package/Build/Workers/chunk-E6CYGUJI.js +1054 -0
- package/Build/Workers/chunk-EIZ23IOX.js +414 -0
- package/Build/Workers/chunk-EIZJUMQY.js +101 -0
- package/Build/Workers/chunk-EXTMZJXB.js +82 -0
- package/Build/Workers/chunk-EYOOSIBW.js +682 -0
- package/Build/Workers/chunk-F37WADVC.js +1054 -0
- package/Build/Workers/chunk-FIWPJFHX.js +101 -0
- package/Build/Workers/chunk-FM32TNGT.js +198 -0
- package/Build/Workers/chunk-FOMYIEIB.js +476 -0
- package/Build/Workers/chunk-FWYDLSVQ.js +97 -0
- package/Build/Workers/chunk-HGZR6CZF.js +1067 -0
- package/Build/Workers/chunk-HIXHDABG.js +288 -0
- package/Build/Workers/chunk-HMCCZZWE.js +97 -0
- package/Build/Workers/chunk-HW54WHGM.js +2719 -0
- package/Build/Workers/chunk-IHYAI7GF.js +973 -0
- package/Build/Workers/chunk-INLQ7LVK.js +837 -0
- package/Build/Workers/chunk-IQMESTCB.js +124 -0
- package/Build/Workers/chunk-J4PISUNT.js +2342 -0
- package/Build/Workers/chunk-JSWU557I.js +693 -0
- package/Build/Workers/chunk-KHONDSQ7.js +693 -0
- package/Build/Workers/chunk-KLUL2SOE.js +352 -0
- package/Build/Workers/chunk-KMBLKQCC.js +1992 -0
- package/Build/Workers/chunk-KOTWWQN7.js +171 -0
- package/Build/Workers/chunk-KWV6ZTF4.js +163 -0
- package/Build/Workers/chunk-LSEFPQHG.js +476 -0
- package/Build/Workers/chunk-M66X4O24.js +44 -0
- package/Build/Workers/chunk-M6IXKBC7.js +1992 -0
- package/Build/Workers/chunk-MFUC3D5C.js +162 -0
- package/Build/Workers/chunk-MRMNELAH.js +82 -0
- package/Build/Workers/chunk-N3NUA5H2.js +3792 -0
- package/Build/Workers/chunk-NFB2NXJN.js +138 -0
- package/Build/Workers/chunk-NQAXBK4K.js +789 -0
- package/Build/Workers/chunk-NUGQWV6S.js +352 -0
- package/Build/Workers/chunk-O7S7WL7K.js +278 -0
- package/Build/Workers/chunk-ODZYB26X.js +1287 -0
- package/Build/Workers/chunk-OEHJY463.js +3201 -0
- package/Build/Workers/chunk-OMMRNMXF.js +44 -0
- package/Build/Workers/chunk-OZ3CQDO3.js +138 -0
- package/Build/Workers/chunk-PNXBG64I.js +219 -0
- package/Build/Workers/chunk-PYR35GK4.js +973 -0
- package/Build/Workers/chunk-Q4CXGW74.js +57 -0
- package/Build/Workers/chunk-QGISLKCW.js +147 -0
- package/Build/Workers/chunk-QQHVOJW6.js +497 -0
- package/Build/Workers/chunk-QWCMMRJW.js +58 -0
- package/Build/Workers/chunk-RDEZCHF4.js +398 -0
- package/Build/Workers/chunk-SJTE7FVN.js +778 -0
- package/Build/Workers/chunk-SM5T67LR.js +162 -0
- package/Build/Workers/chunk-T27NNXEU.js +58 -0
- package/Build/Workers/chunk-T4J5BWUO.js +511 -0
- package/Build/Workers/chunk-T6JS4BRN.js +140 -0
- package/Build/Workers/chunk-UH6DUQBW.js +140 -0
- package/Build/Workers/chunk-UJAH6XKF.js +73 -0
- package/Build/Workers/chunk-UKSTJ2PH.js +454 -0
- package/Build/Workers/chunk-UQCDCCZ7.js +368 -0
- package/Build/Workers/chunk-UXIFNEA3.js +1287 -0
- package/Build/Workers/chunk-UXJ6J5L7.js +56 -0
- package/Build/Workers/chunk-V4VUAZXI.js +1800 -0
- package/Build/Workers/chunk-VQH2YXO2.js +497 -0
- package/Build/Workers/chunk-VXKCLSE4.js +241 -0
- package/Build/Workers/chunk-W3U6YBEI.js +280 -0
- package/Build/Workers/chunk-W75ZVFKP.js +778 -0
- package/Build/Workers/chunk-WCDFJYFB.js +1344 -0
- package/Build/Workers/chunk-WME5M6W3.js +630 -0
- package/Build/Workers/chunk-XDQBQB64.js +1067 -0
- package/Build/Workers/chunk-Y6HOIWE5.js +959 -0
- package/Build/Workers/chunk-YEMC2ZOR.js +147 -0
- package/Build/Workers/chunk-YWNF3TPE.js +682 -0
- package/Build/Workers/chunk-Z55VGWJP.js +280 -0
- package/Build/Workers/chunk-Z5YWP24C.js +124 -0
- package/Build/Workers/chunk-ZHXCWUJB.js +387 -0
- package/Build/Workers/chunk-ZIMPUF2I.js +102 -0
- package/Build/Workers/chunk-ZKDWYQKC.js +3201 -0
- package/Build/Workers/combineGeometry.js +24 -22
- package/Build/Workers/createBoxGeometry.js +18 -16
- package/Build/Workers/createBoxOutlineGeometry.js +23 -25
- package/Build/Workers/createCircleGeometry.js +29 -27
- package/Build/Workers/createCircleOutlineGeometry.js +22 -20
- package/Build/Workers/createCoplanarPolygonGeometry.js +43 -43
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +37 -35
- package/Build/Workers/createCorridorGeometry.js +46 -49
- package/Build/Workers/createCorridorOutlineGeometry.js +40 -43
- package/Build/Workers/createCylinderGeometry.js +20 -18
- package/Build/Workers/createCylinderOutlineGeometry.js +27 -25
- package/Build/Workers/createEllipseGeometry.js +28 -25
- package/Build/Workers/createEllipseOutlineGeometry.js +21 -18
- package/Build/Workers/createEllipsoidGeometry.js +19 -17
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -16
- package/Build/Workers/createFrustumGeometry.js +18 -16
- package/Build/Workers/createFrustumOutlineGeometry.js +21 -21
- package/Build/Workers/createGeometry.js +31 -26
- package/Build/Workers/createGroundPolylineGeometry.js +188 -135
- package/Build/Workers/createPlaneGeometry.js +22 -21
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -13
- package/Build/Workers/createPolygonGeometry.js +51 -52
- package/Build/Workers/createPolygonOutlineGeometry.js +43 -44
- package/Build/Workers/createPolylineGeometry.js +37 -40
- package/Build/Workers/createPolylineVolumeGeometry.js +41 -44
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +36 -39
- package/Build/Workers/createRectangleGeometry.js +47 -53
- package/Build/Workers/createRectangleOutlineGeometry.js +32 -33
- package/Build/Workers/createSimplePolylineGeometry.js +33 -34
- package/Build/Workers/createSphereGeometry.js +20 -20
- package/Build/Workers/createSphereOutlineGeometry.js +19 -19
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +16 -14
- package/Build/Workers/createVectorTileGeometries.js +24 -22
- package/Build/Workers/createVectorTilePoints.js +15 -13
- package/Build/Workers/createVectorTilePolygons.js +24 -21
- package/Build/Workers/createVectorTilePolylines.js +16 -14
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +29 -27
- package/Build/Workers/createVerticesFromHeightmap.js +42 -63
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +26 -280
- package/Build/Workers/createWallGeometry.js +35 -36
- package/Build/Workers/createWallOutlineGeometry.js +33 -34
- package/Build/Workers/decodeDraco.js +10 -11
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +16 -20
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/incrementallyBuildTerrainPicker.js +20 -12
- package/Build/Workers/transcodeKTX2.js +42 -14
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +24 -21
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Shaders/BillboardCollectionFS.js +85 -81
- package/Source/Shaders/BillboardCollectionVS.js +60 -118
- package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.js +12 -0
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
- package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +11 -0
- package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
- package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
- package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
- package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
- package/Source/Shaders/Builtin/CzmBuiltins.js +12 -0
- package/Source/Shaders/Builtin/Functions/columbusViewMorph.js +8 -1
- package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
- package/Source/Shaders/Builtin/Functions/decodeRGB8.js +24 -0
- package/Source/Shaders/Builtin/Functions/modelToWindowCoordinates.js +2 -1
- package/Source/Shaders/Builtin/Functions/unpackTexture.js +37 -0
- package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.js +0 -1
- package/Source/Shaders/EllipsoidVS.js +4 -4
- package/Source/Shaders/FXAA3_11.js +2 -0
- package/Source/Shaders/GlobeFS.js +22 -0
- package/Source/Shaders/GlobeVS.js +3 -2
- package/Source/Shaders/Model/MaterialStageFS.js +50 -20
- package/Source/Shaders/Model/MetadataStageFS.js +2 -1
- package/Source/Shaders/Model/MetadataStageVS.js +2 -1
- package/Source/Shaders/Model/ModelFS.js +32 -2
- package/Source/Shaders/Model/ModelVS.js +15 -1
- package/Source/Shaders/Model/PointCloudStylingStageVS.js +2 -1
- package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +0 -1
- package/Source/Shaders/PointPrimitiveCollectionVS.js +8 -39
- package/Source/Shaders/PolygonSignedDistanceFS.js +64 -33
- package/Source/Shaders/PolylineCommon.js +1 -1
- package/Source/Shaders/ShadowVolumeAppearanceFS.js +7 -15
- package/Source/Shaders/SkyAtmosphereVS.js +2 -1
- package/Source/Shaders/Voxels/IntersectBox.js +20 -33
- package/Source/Shaders/Voxels/IntersectCylinder.js +28 -32
- package/Source/Shaders/Voxels/IntersectDepth.js +10 -6
- package/Source/Shaders/Voxels/IntersectEllipsoid.js +12 -20
- package/Source/Shaders/Voxels/IntersectLongitude.js +21 -9
- package/Source/Shaders/Voxels/Intersection.js +3 -5
- package/Source/Shaders/Voxels/IntersectionUtils.js +2 -1
- package/Source/Shaders/Voxels/Megatexture.js +15 -83
- package/Source/Shaders/Voxels/Octree.js +53 -61
- package/Source/Shaders/Voxels/VoxelFS.js +67 -52
- package/Source/Shaders/Voxels/VoxelUtils.js +0 -19
- package/index.js +346 -261
- package/package.json +1 -1
- package/Source/Shaders/Voxels/IntersectClippingPlanes.js +0 -80
- package/Source/Shaders/Voxels/convertUvToBox.js +0 -46
- package/Source/Shaders/Voxels/convertUvToCylinder.js +0 -101
- package/Source/Shaders/Voxels/convertUvToEllipsoid.js +0 -141
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
//This file is automatically rebuilt by the Cesium build process.
|
|
2
|
-
export default "
|
|
2
|
+
export default "uniform float u_threePointDepthTestDistance;\n\
|
|
3
3
|
in vec2 direction;\n\
|
|
4
|
-
#endif\n\
|
|
5
4
|
in vec4 positionHighAndScale;\n\
|
|
6
5
|
in vec4 positionLowAndRotation;\n\
|
|
7
6
|
in vec4 compressedAttribute0; // pixel offset, translate, horizontal origin, vertical origin, show, direction, texture coordinates (texture offset)\n\
|
|
@@ -10,10 +9,10 @@ in vec4 compressedAttribute2; // label horizontal origin,
|
|
|
10
9
|
in vec4 eyeOffset; // eye offset in meters, 4 bytes free (texture range)\n\
|
|
11
10
|
in vec4 scaleByDistance; // near, nearScale, far, farScale\n\
|
|
12
11
|
in vec4 pixelOffsetScaleByDistance; // near, nearScale, far, farScale\n\
|
|
13
|
-
in vec4 compressedAttribute3; // distance display condition near, far,
|
|
12
|
+
in vec4 compressedAttribute3; // distance display condition near, far, disableDepthTestDistanceSq, dimensions\n\
|
|
14
13
|
in vec2 sdf; // sdf outline color (rgb) and width (w)\n\
|
|
15
14
|
in float splitDirection; // splitDirection\n\
|
|
16
|
-
#
|
|
15
|
+
#ifdef VS_THREE_POINT_DEPTH_CHECK\n\
|
|
17
16
|
in vec4 textureCoordinateBoundsOrLabelTranslate; // the min and max x and y values for the texture coordinates\n\
|
|
18
17
|
#endif\n\
|
|
19
18
|
#ifdef VECTOR_TILE\n\
|
|
@@ -21,16 +20,11 @@ in float a_batchId;\n\
|
|
|
21
20
|
#endif\n\
|
|
22
21
|
\n\
|
|
23
22
|
out vec2 v_textureCoordinates;\n\
|
|
24
|
-
|
|
25
|
-
out vec4 v_textureCoordinateBounds;\n\
|
|
26
|
-
out vec4 v_originTextureCoordinateAndTranslate;\n\
|
|
27
|
-
out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize\n\
|
|
28
|
-
out mat2 v_rotationMatrix;\n\
|
|
29
|
-
#endif\n\
|
|
23
|
+
out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize\n\
|
|
30
24
|
\n\
|
|
31
25
|
out vec4 v_pickColor;\n\
|
|
32
26
|
out vec4 v_color;\n\
|
|
33
|
-
out
|
|
27
|
+
flat out vec2 v_splitDirectionAndEllipsoidDepthEC; // x: splitDirection, y: ellipsoid depth in eye coordinates\n\
|
|
34
28
|
#ifdef SDF\n\
|
|
35
29
|
out vec4 v_outlineColor;\n\
|
|
36
30
|
out float v_outlineWidth;\n\
|
|
@@ -93,7 +87,7 @@ vec4 addScreenSpaceOffset(vec4 positionEC, vec2 imageSize, float scale, vec2 dir
|
|
|
93
87
|
return positionEC;\n\
|
|
94
88
|
}\n\
|
|
95
89
|
\n\
|
|
96
|
-
#ifdef
|
|
90
|
+
#ifdef VS_THREE_POINT_DEPTH_CHECK\n\
|
|
97
91
|
float getGlobeDepth(vec4 positionEC)\n\
|
|
98
92
|
{\n\
|
|
99
93
|
vec4 posWC = czm_eyeToWindowCoordinates(positionEC);\n\
|
|
@@ -138,25 +132,14 @@ void main()\n\
|
|
|
138
132
|
origin.y = floor(compressed * SHIFT_RIGHT3);\n\
|
|
139
133
|
compressed -= origin.y * SHIFT_LEFT3;\n\
|
|
140
134
|
\n\
|
|
141
|
-
#ifdef FRAGMENT_DEPTH_CHECK\n\
|
|
142
|
-
vec2 depthOrigin = origin.xy;\n\
|
|
143
|
-
#endif\n\
|
|
144
135
|
origin -= vec2(1.0);\n\
|
|
145
136
|
\n\
|
|
146
137
|
float show = floor(compressed * SHIFT_RIGHT2);\n\
|
|
147
138
|
compressed -= show * SHIFT_LEFT2;\n\
|
|
148
139
|
\n\
|
|
149
|
-
#ifdef INSTANCED\n\
|
|
150
140
|
vec2 textureCoordinatesBottomLeft = czm_decompressTextureCoordinates(compressedAttribute0.w);\n\
|
|
151
141
|
vec2 textureCoordinatesRange = czm_decompressTextureCoordinates(eyeOffset.w);\n\
|
|
152
142
|
vec2 textureCoordinates = textureCoordinatesBottomLeft + direction * textureCoordinatesRange;\n\
|
|
153
|
-
#else\n\
|
|
154
|
-
vec2 direction;\n\
|
|
155
|
-
direction.x = floor(compressed * SHIFT_RIGHT1);\n\
|
|
156
|
-
direction.y = compressed - direction.x * SHIFT_LEFT1;\n\
|
|
157
|
-
\n\
|
|
158
|
-
vec2 textureCoordinates = czm_decompressTextureCoordinates(compressedAttribute0.w);\n\
|
|
159
|
-
#endif\n\
|
|
160
143
|
\n\
|
|
161
144
|
float temp = compressedAttribute0.y * SHIFT_RIGHT8;\n\
|
|
162
145
|
pixelOffset.y = -(floor(temp) - UPPER_BOUND);\n\
|
|
@@ -166,28 +149,17 @@ void main()\n\
|
|
|
166
149
|
\n\
|
|
167
150
|
temp = compressedAttribute0.z * SHIFT_RIGHT8;\n\
|
|
168
151
|
translate.x = floor(temp) - UPPER_BOUND;\n\
|
|
152
|
+
translate.x *= SHIFT_RIGHT2; // undo translateX scaling (helps preserve subpixel precision, see BillboardCollection.js attribute writer for more info)\n\
|
|
169
153
|
\n\
|
|
170
154
|
translate.y += (temp - floor(temp)) * SHIFT_LEFT8;\n\
|
|
171
155
|
translate.y -= UPPER_BOUND;\n\
|
|
156
|
+
translate.y *= SHIFT_RIGHT2;\n\
|
|
172
157
|
\n\
|
|
173
158
|
temp = compressedAttribute1.x * SHIFT_RIGHT8;\n\
|
|
174
159
|
float temp2 = floor(compressedAttribute2.w * SHIFT_RIGHT2);\n\
|
|
175
160
|
\n\
|
|
176
161
|
vec2 imageSize = vec2(floor(temp), temp2);\n\
|
|
177
162
|
\n\
|
|
178
|
-
#ifdef FRAGMENT_DEPTH_CHECK\n\
|
|
179
|
-
float labelHorizontalOrigin = floor(compressedAttribute2.w - (temp2 * SHIFT_LEFT2));\n\
|
|
180
|
-
float applyTranslate = 0.0;\n\
|
|
181
|
-
if (labelHorizontalOrigin != 0.0) // is a billboard, so set apply translate to false\n\
|
|
182
|
-
{\n\
|
|
183
|
-
applyTranslate = 1.0;\n\
|
|
184
|
-
labelHorizontalOrigin -= 2.0;\n\
|
|
185
|
-
depthOrigin.x = labelHorizontalOrigin + 1.0;\n\
|
|
186
|
-
}\n\
|
|
187
|
-
\n\
|
|
188
|
-
depthOrigin = vec2(1.0) - (depthOrigin * 0.5);\n\
|
|
189
|
-
#endif\n\
|
|
190
|
-
\n\
|
|
191
163
|
#ifdef EYE_DISTANCE_TRANSLUCENCY\n\
|
|
192
164
|
vec4 translucencyByDistance;\n\
|
|
193
165
|
translucencyByDistance.x = compressedAttribute1.z;\n\
|
|
@@ -199,7 +171,7 @@ void main()\n\
|
|
|
199
171
|
translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0;\n\
|
|
200
172
|
#endif\n\
|
|
201
173
|
\n\
|
|
202
|
-
#
|
|
174
|
+
#ifdef VS_THREE_POINT_DEPTH_CHECK\n\
|
|
203
175
|
temp = compressedAttribute3.w;\n\
|
|
204
176
|
temp = temp * SHIFT_RIGHT12;\n\
|
|
205
177
|
\n\
|
|
@@ -217,41 +189,23 @@ void main()\n\
|
|
|
217
189
|
bool validAlignedAxis = false;\n\
|
|
218
190
|
#endif\n\
|
|
219
191
|
\n\
|
|
220
|
-
vec4
|
|
221
|
-
vec4
|
|
222
|
-
\n\
|
|
223
|
-
temp = compressedAttribute2.y;\n\
|
|
224
|
-
temp = temp * SHIFT_RIGHT8;\n\
|
|
225
|
-
pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8;\n\
|
|
226
|
-
temp = floor(temp) * SHIFT_RIGHT8;\n\
|
|
227
|
-
pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8;\n\
|
|
228
|
-
pickColor.r = floor(temp);\n\
|
|
229
|
-
\n\
|
|
230
|
-
temp = compressedAttribute2.x;\n\
|
|
231
|
-
temp = temp * SHIFT_RIGHT8;\n\
|
|
232
|
-
color.b = (temp - floor(temp)) * SHIFT_LEFT8;\n\
|
|
233
|
-
temp = floor(temp) * SHIFT_RIGHT8;\n\
|
|
234
|
-
color.g = (temp - floor(temp)) * SHIFT_LEFT8;\n\
|
|
235
|
-
color.r = floor(temp);\n\
|
|
192
|
+
vec4 color = czm_decodeRGB8(compressedAttribute2.x);\n\
|
|
193
|
+
vec4 pickColor = czm_decodeRGB8(compressedAttribute2.y);\n\
|
|
236
194
|
\n\
|
|
237
195
|
temp = compressedAttribute2.z * SHIFT_RIGHT8;\n\
|
|
238
196
|
bool sizeInMeters = floor((temp - floor(temp)) * SHIFT_LEFT7) > 0.0;\n\
|
|
239
197
|
temp = floor(temp) * SHIFT_RIGHT8;\n\
|
|
240
198
|
\n\
|
|
241
199
|
pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8;\n\
|
|
242
|
-
pickColor /= 255.0;\n\
|
|
200
|
+
pickColor.a /= 255.0;\n\
|
|
243
201
|
\n\
|
|
244
202
|
color.a = floor(temp);\n\
|
|
245
|
-
color /= 255.0;\n\
|
|
203
|
+
color.a /= 255.0;\n\
|
|
246
204
|
\n\
|
|
247
205
|
///////////////////////////////////////////////////////////////////////////\n\
|
|
248
206
|
\n\
|
|
249
207
|
vec4 p = czm_translateRelativeToEye(positionHigh, positionLow);\n\
|
|
250
208
|
vec4 positionEC = czm_modelViewRelativeToEye * p;\n\
|
|
251
|
-
\n\
|
|
252
|
-
#if defined(FRAGMENT_DEPTH_CHECK) || defined(VERTEX_DEPTH_CHECK)\n\
|
|
253
|
-
float eyeDepth = positionEC.z;\n\
|
|
254
|
-
#endif\n\
|
|
255
209
|
\n\
|
|
256
210
|
positionEC = czm_eyeOffset(positionEC, eyeOffset.xyz);\n\
|
|
257
211
|
positionEC.xyz *= show;\n\
|
|
@@ -310,35 +264,68 @@ void main()\n\
|
|
|
310
264
|
mat2 rotationMatrix;\n\
|
|
311
265
|
float mpp;\n\
|
|
312
266
|
\n\
|
|
267
|
+
float enableDepthCheck = 1.0;\n\
|
|
313
268
|
#ifdef DISABLE_DEPTH_DISTANCE\n\
|
|
314
|
-
float
|
|
269
|
+
float disableDepthTestDistanceSq = compressedAttribute3.z;\n\
|
|
270
|
+
if (disableDepthTestDistanceSq == 0.0 && czm_minimumDisableDepthTestDistance != 0.0)\n\
|
|
271
|
+
{\n\
|
|
272
|
+
disableDepthTestDistanceSq = czm_minimumDisableDepthTestDistance;\n\
|
|
273
|
+
}\n\
|
|
274
|
+
\n\
|
|
275
|
+
if (lengthSq < disableDepthTestDistanceSq || disableDepthTestDistanceSq < 0.0)\n\
|
|
276
|
+
{\n\
|
|
277
|
+
enableDepthCheck = 0.0;\n\
|
|
278
|
+
}\n\
|
|
315
279
|
#endif\n\
|
|
316
280
|
\n\
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
281
|
+
v_splitDirectionAndEllipsoidDepthEC.y = czm_infinity;\n\
|
|
282
|
+
vec3 ellipsoidCenter = czm_view[3].xyz;\n\
|
|
283
|
+
vec3 rayDirection = normalize(positionEC.xyz);\n\
|
|
284
|
+
czm_ray ray = czm_ray(vec3(0.0), rayDirection);\n\
|
|
285
|
+
vec3 ellipsoid_inverseRadii = czm_ellipsoidInverseRadii;\n\
|
|
286
|
+
czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoidCenter, ellipsoid_inverseRadii);\n\
|
|
320
287
|
\n\
|
|
321
|
-
|
|
322
|
-
|
|
288
|
+
if (!czm_isEmpty(intersection))\n\
|
|
289
|
+
{\n\
|
|
290
|
+
v_splitDirectionAndEllipsoidDepthEC.y = intersection.start;\n\
|
|
291
|
+
}\n\
|
|
292
|
+
\n\
|
|
293
|
+
v_compressed.y = enableDepthCheck;\n\
|
|
294
|
+
\n\
|
|
295
|
+
#ifdef VS_THREE_POINT_DEPTH_CHECK\n\
|
|
296
|
+
if (lengthSq < (u_threePointDepthTestDistance * u_threePointDepthTestDistance) && (enableDepthCheck == 1.0)) {\n\
|
|
297
|
+
float depthsilon = 10.0;\n\
|
|
298
|
+
vec2 depthOrigin;\n\
|
|
299
|
+
// Horizontal origin for labels comes from a special attribute. If that value is 0, this is a billboard - use the regular origin.\n\
|
|
300
|
+
// Otherwise, transform the label origin to -1, 0, 1 (right, center, left).\n\
|
|
301
|
+
depthOrigin.x = floor(compressedAttribute2.w - (temp2 * SHIFT_LEFT2));\n\
|
|
302
|
+
depthOrigin.x = czm_branchFreeTernary(depthOrigin.x == 0.0, origin.x, depthOrigin.x - 2.0);\n\
|
|
303
|
+
depthOrigin.y = origin.y;\n\
|
|
304
|
+
\n\
|
|
305
|
+
vec4 pEC1 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0), depthOrigin, vec2(0.0), pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);\n\
|
|
323
306
|
float globeDepth1 = getGlobeDepth(pEC1);\n\
|
|
324
307
|
\n\
|
|
325
308
|
if (globeDepth1 != 0.0 && pEC1.z + depthsilon < globeDepth1)\n\
|
|
326
309
|
{\n\
|
|
327
|
-
vec4 pEC2 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0, 1.0),
|
|
310
|
+
vec4 pEC2 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0, 1.0), depthOrigin, vec2(0.0), pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);\n\
|
|
328
311
|
float globeDepth2 = getGlobeDepth(pEC2);\n\
|
|
329
312
|
\n\
|
|
330
313
|
if (globeDepth2 != 0.0 && pEC2.z + depthsilon < globeDepth2)\n\
|
|
331
314
|
{\n\
|
|
332
|
-
vec4 pEC3 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(1.0),
|
|
315
|
+
vec4 pEC3 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(1.0), depthOrigin, vec2(0.0), pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);\n\
|
|
333
316
|
float globeDepth3 = getGlobeDepth(pEC3);\n\
|
|
334
317
|
if (globeDepth3 != 0.0 && pEC3.z + depthsilon < globeDepth3)\n\
|
|
335
318
|
{\n\
|
|
319
|
+
// \"Discard\" this vertex, as three key points fail depth test.\n\
|
|
336
320
|
positionEC.xyz = vec3(0.0);\n\
|
|
337
321
|
}\n\
|
|
338
322
|
}\n\
|
|
339
323
|
}\n\
|
|
340
324
|
}\n\
|
|
341
325
|
#endif\n\
|
|
326
|
+
// Write out the eyespace depth before applying the screen space offset, but after potentially \"discarding\" the vertex\n\
|
|
327
|
+
// by setting its eyespace position to zero, via the three-point depth test above.\n\
|
|
328
|
+
v_compressed.x = positionEC.z;\n\
|
|
342
329
|
\n\
|
|
343
330
|
positionEC = addScreenSpaceOffset(positionEC, imageSize, scale, direction, origin, translate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);\n\
|
|
344
331
|
gl_Position = czm_projection * positionEC;\n\
|
|
@@ -349,17 +336,14 @@ if (lengthSq < disableDepthTestDistance) {\n\
|
|
|
349
336
|
#endif\n\
|
|
350
337
|
\n\
|
|
351
338
|
#ifdef DISABLE_DEPTH_DISTANCE\n\
|
|
352
|
-
if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0)\n\
|
|
353
|
-
{\n\
|
|
354
|
-
disableDepthTestDistance = czm_minimumDisableDepthTestDistance;\n\
|
|
355
|
-
}\n\
|
|
356
339
|
\n\
|
|
357
|
-
if (
|
|
340
|
+
if (disableDepthTestDistanceSq != 0.0)\n\
|
|
358
341
|
{\n\
|
|
359
342
|
// Don't try to \"multiply both sides\" by w. Greater/less-than comparisons won't work for negative values of w.\n\
|
|
360
343
|
float zclip = gl_Position.z / gl_Position.w;\n\
|
|
361
344
|
bool clipped = (zclip < -1.0 || zclip > 1.0);\n\
|
|
362
|
-
if
|
|
345
|
+
// disableDepthTestDistanceSq can be less than zero if it's explicitly set to -1 in JS (as a sentinel value equivalent to infinity)\n\
|
|
346
|
+
if (!clipped && (disableDepthTestDistanceSq < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistanceSq)))\n\
|
|
363
347
|
{\n\
|
|
364
348
|
// Position z on the near plane.\n\
|
|
365
349
|
gl_Position.z = -gl_Position.w;\n\
|
|
@@ -370,51 +354,9 @@ if (lengthSq < disableDepthTestDistance) {\n\
|
|
|
370
354
|
}\n\
|
|
371
355
|
#endif\n\
|
|
372
356
|
\n\
|
|
373
|
-
#ifdef FRAGMENT_DEPTH_CHECK\n\
|
|
374
|
-
if (sizeInMeters) {\n\
|
|
375
|
-
translate /= mpp;\n\
|
|
376
|
-
dimensions /= mpp;\n\
|
|
377
|
-
imageSize /= mpp;\n\
|
|
378
|
-
}\n\
|
|
379
|
-
\n\
|
|
380
|
-
#if defined(ROTATION) || defined(ALIGNED_AXIS)\n\
|
|
381
|
-
v_rotationMatrix = rotationMatrix;\n\
|
|
382
|
-
#else\n\
|
|
383
|
-
v_rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0);\n\
|
|
384
|
-
#endif\n\
|
|
385
|
-
\n\
|
|
386
|
-
float enableDepthCheck = 0.0;\n\
|
|
387
|
-
if (lengthSq < disableDepthTestDistance)\n\
|
|
388
|
-
{\n\
|
|
389
|
-
enableDepthCheck = 1.0;\n\
|
|
390
|
-
}\n\
|
|
391
|
-
\n\
|
|
392
|
-
float dw = floor(clamp(dimensions.x, 0.0, SHIFT_LEFT12));\n\
|
|
393
|
-
float dh = floor(clamp(dimensions.y, 0.0, SHIFT_LEFT12));\n\
|
|
394
|
-
\n\
|
|
395
|
-
float iw = floor(clamp(imageSize.x, 0.0, SHIFT_LEFT12));\n\
|
|
396
|
-
float ih = floor(clamp(imageSize.y, 0.0, SHIFT_LEFT12));\n\
|
|
397
|
-
\n\
|
|
398
|
-
v_compressed.x = eyeDepth;\n\
|
|
399
|
-
v_compressed.y = applyTranslate * SHIFT_LEFT1 + enableDepthCheck;\n\
|
|
400
|
-
v_compressed.z = dw * SHIFT_LEFT12 + dh;\n\
|
|
401
|
-
v_compressed.w = iw * SHIFT_LEFT12 + ih;\n\
|
|
402
|
-
v_originTextureCoordinateAndTranslate.xy = depthOrigin;\n\
|
|
403
|
-
v_originTextureCoordinateAndTranslate.zw = translate;\n\
|
|
404
|
-
v_textureCoordinateBounds = textureCoordinateBoundsOrLabelTranslate;\n\
|
|
405
|
-
\n\
|
|
406
|
-
#endif\n\
|
|
407
|
-
\n\
|
|
408
357
|
#ifdef SDF\n\
|
|
409
|
-
vec4 outlineColor;\n\
|
|
358
|
+
vec4 outlineColor = czm_decodeRGB8(sdf.x);\n\
|
|
410
359
|
float outlineWidth;\n\
|
|
411
|
-
\n\
|
|
412
|
-
temp = sdf.x;\n\
|
|
413
|
-
temp = temp * SHIFT_RIGHT8;\n\
|
|
414
|
-
outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8;\n\
|
|
415
|
-
temp = floor(temp) * SHIFT_RIGHT8;\n\
|
|
416
|
-
outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8;\n\
|
|
417
|
-
outlineColor.r = floor(temp);\n\
|
|
418
360
|
\n\
|
|
419
361
|
temp = sdf.y;\n\
|
|
420
362
|
temp = temp * SHIFT_RIGHT8;\n\
|
|
@@ -422,7 +364,7 @@ if (lengthSq < disableDepthTestDistance) {\n\
|
|
|
422
364
|
temp = floor(temp) * SHIFT_RIGHT8;\n\
|
|
423
365
|
outlineWidth = (temp - floor(temp)) * SHIFT_LEFT8;\n\
|
|
424
366
|
outlineColor.a = floor(temp);\n\
|
|
425
|
-
outlineColor /= 255.0;\n\
|
|
367
|
+
outlineColor.a /= 255.0;\n\
|
|
426
368
|
\n\
|
|
427
369
|
v_outlineWidth = outlineWidth / 255.0;\n\
|
|
428
370
|
v_outlineColor = outlineColor;\n\
|
|
@@ -433,6 +375,6 @@ if (lengthSq < disableDepthTestDistance) {\n\
|
|
|
433
375
|
\n\
|
|
434
376
|
v_color = color;\n\
|
|
435
377
|
v_color.a *= translucency;\n\
|
|
436
|
-
|
|
378
|
+
v_splitDirectionAndEllipsoidDepthEC.x = splitDirection;\n\
|
|
437
379
|
}\n\
|
|
438
380
|
";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//This file is automatically rebuilt by the Cesium build process.
|
|
2
|
+
export default "/**\n\
|
|
3
|
+
* The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_EDGES}\n\
|
|
4
|
+
*\n\
|
|
5
|
+
* @name czm_passCesium3DTileEdges\n\
|
|
6
|
+
* @glslConstant\n\
|
|
7
|
+
*\n\
|
|
8
|
+
* @see czm_pass\n\
|
|
9
|
+
*/\n\
|
|
10
|
+
const float czm_passCesium3DTileEdges = 4.0;\n\
|
|
11
|
+
\n\
|
|
12
|
+
";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//This file is automatically rebuilt by the Cesium build process.
|
|
2
|
+
export default "/**\n\
|
|
3
|
+
* The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_EDGES_DIRECT}\n\
|
|
4
|
+
*\n\
|
|
5
|
+
* @name czm_passCesium3DTileEdgesDirect\n\
|
|
6
|
+
* @glslConstant\n\
|
|
7
|
+
*\n\
|
|
8
|
+
* @see czm_pass\n\
|
|
9
|
+
*/\n\
|
|
10
|
+
const float czm_passCesium3DTileEdgesDirect = 12.0;\n\
|
|
11
|
+
";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//This file is automatically rebuilt by the Cesium build process.
|
|
2
|
+
export default "/**\n\
|
|
3
|
+
* The automatic GLSL constant for {@link Pass#GAUSSIAN_SPLATS}\n\
|
|
4
|
+
*\n\
|
|
5
|
+
* @name czm_passGaussianSplats\n\
|
|
6
|
+
* @glslConstant\n\
|
|
7
|
+
*\n\
|
|
8
|
+
* @see czm_pass\n\
|
|
9
|
+
*/\n\
|
|
10
|
+
const float czm_passGaussianSplats = 11.0;\n\
|
|
11
|
+
";
|
|
@@ -14,9 +14,12 @@ import czm_oneOverTwoPi from './Constants/oneOverTwoPi.js'
|
|
|
14
14
|
import czm_passCesium3DTile from './Constants/passCesium3DTile.js'
|
|
15
15
|
import czm_passCesium3DTileClassification from './Constants/passCesium3DTileClassification.js'
|
|
16
16
|
import czm_passCesium3DTileClassificationIgnoreShow from './Constants/passCesium3DTileClassificationIgnoreShow.js'
|
|
17
|
+
import czm_passCesium3DTileEdges from './Constants/passCesium3DTileEdges.js'
|
|
18
|
+
import czm_passCesium3DTileEdgesDirect from './Constants/passCesium3DTileEdgesDirect.js'
|
|
17
19
|
import czm_passClassification from './Constants/passClassification.js'
|
|
18
20
|
import czm_passCompute from './Constants/passCompute.js'
|
|
19
21
|
import czm_passEnvironment from './Constants/passEnvironment.js'
|
|
22
|
+
import czm_passGaussianSplats from './Constants/passGaussianSplats.js'
|
|
20
23
|
import czm_passGlobe from './Constants/passGlobe.js'
|
|
21
24
|
import czm_passOpaque from './Constants/passOpaque.js'
|
|
22
25
|
import czm_passOverlay from './Constants/passOverlay.js'
|
|
@@ -69,7 +72,9 @@ import czm_computeAtmosphereColor from './Functions/computeAtmosphereColor.js'
|
|
|
69
72
|
import czm_computeGroundAtmosphereScattering from './Functions/computeGroundAtmosphereScattering.js'
|
|
70
73
|
import czm_computePosition from './Functions/computePosition.js'
|
|
71
74
|
import czm_computeScattering from './Functions/computeScattering.js'
|
|
75
|
+
import czm_computeTextureTransform from './Functions/computeTextureTransform.js'
|
|
72
76
|
import czm_cosineAndSine from './Functions/cosineAndSine.js'
|
|
77
|
+
import czm_decodeRGB8 from './Functions/decodeRGB8.js'
|
|
73
78
|
import czm_decompressTextureCoordinates from './Functions/decompressTextureCoordinates.js'
|
|
74
79
|
import czm_depthClamp from './Functions/depthClamp.js'
|
|
75
80
|
import czm_eastNorthUpToEyeCoordinates from './Functions/eastNorthUpToEyeCoordinates.js'
|
|
@@ -128,6 +133,7 @@ import czm_transpose from './Functions/transpose.js'
|
|
|
128
133
|
import czm_unpackClippingExtents from './Functions/unpackClippingExtents.js'
|
|
129
134
|
import czm_unpackDepth from './Functions/unpackDepth.js'
|
|
130
135
|
import czm_unpackFloat from './Functions/unpackFloat.js'
|
|
136
|
+
import czm_unpackTexture from './Functions/unpackTexture.js'
|
|
131
137
|
import czm_unpackUint from './Functions/unpackUint.js'
|
|
132
138
|
import czm_valueTransform from './Functions/valueTransform.js'
|
|
133
139
|
import czm_vertexLogDepth from './Functions/vertexLogDepth.js'
|
|
@@ -152,9 +158,12 @@ export default {
|
|
|
152
158
|
czm_passCesium3DTile : czm_passCesium3DTile,
|
|
153
159
|
czm_passCesium3DTileClassification : czm_passCesium3DTileClassification,
|
|
154
160
|
czm_passCesium3DTileClassificationIgnoreShow : czm_passCesium3DTileClassificationIgnoreShow,
|
|
161
|
+
czm_passCesium3DTileEdges : czm_passCesium3DTileEdges,
|
|
162
|
+
czm_passCesium3DTileEdgesDirect : czm_passCesium3DTileEdgesDirect,
|
|
155
163
|
czm_passClassification : czm_passClassification,
|
|
156
164
|
czm_passCompute : czm_passCompute,
|
|
157
165
|
czm_passEnvironment : czm_passEnvironment,
|
|
166
|
+
czm_passGaussianSplats : czm_passGaussianSplats,
|
|
158
167
|
czm_passGlobe : czm_passGlobe,
|
|
159
168
|
czm_passOpaque : czm_passOpaque,
|
|
160
169
|
czm_passOverlay : czm_passOverlay,
|
|
@@ -207,7 +216,9 @@ export default {
|
|
|
207
216
|
czm_computeGroundAtmosphereScattering : czm_computeGroundAtmosphereScattering,
|
|
208
217
|
czm_computePosition : czm_computePosition,
|
|
209
218
|
czm_computeScattering : czm_computeScattering,
|
|
219
|
+
czm_computeTextureTransform : czm_computeTextureTransform,
|
|
210
220
|
czm_cosineAndSine : czm_cosineAndSine,
|
|
221
|
+
czm_decodeRGB8 : czm_decodeRGB8,
|
|
211
222
|
czm_decompressTextureCoordinates : czm_decompressTextureCoordinates,
|
|
212
223
|
czm_depthClamp : czm_depthClamp,
|
|
213
224
|
czm_eastNorthUpToEyeCoordinates : czm_eastNorthUpToEyeCoordinates,
|
|
@@ -266,6 +277,7 @@ export default {
|
|
|
266
277
|
czm_unpackClippingExtents : czm_unpackClippingExtents,
|
|
267
278
|
czm_unpackDepth : czm_unpackDepth,
|
|
268
279
|
czm_unpackFloat : czm_unpackFloat,
|
|
280
|
+
czm_unpackTexture : czm_unpackTexture,
|
|
269
281
|
czm_unpackUint : czm_unpackUint,
|
|
270
282
|
czm_valueTransform : czm_valueTransform,
|
|
271
283
|
czm_vertexLogDepth : czm_vertexLogDepth,
|
|
@@ -8,7 +8,14 @@ export default "/**\n\
|
|
|
8
8
|
vec4 czm_columbusViewMorph(vec4 position2D, vec4 position3D, float time)\n\
|
|
9
9
|
{\n\
|
|
10
10
|
// Just linear for now.\n\
|
|
11
|
-
|
|
11
|
+
// We're manually doing the equivalent of a `mix` here because, some GPUs\n\
|
|
12
|
+
// (NVidia GeForce 3070 Ti and Intel Arc A750, to name two), `mix` seems to\n\
|
|
13
|
+
// use an alternate formulation that introduces jitter even when `time` is\n\
|
|
14
|
+
// 0.0 or 1.0. That is, the value of `p` won't be exactly `position2D.xyz`\n\
|
|
15
|
+
// when `time` is 0.0 and it won't be exactly `position3D.xyz` when `time` is\n\
|
|
16
|
+
// 1.0. The \"textbook\" formulation here, while probably a bit slower,\n\
|
|
17
|
+
// does not have this problem.\n\
|
|
18
|
+
vec3 p = position2D.xyz * (1.0 - time) + position3D.xyz * time;\n\
|
|
12
19
|
return vec4(p, 1.0);\n\
|
|
13
20
|
}\n\
|
|
14
21
|
";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//This file is automatically rebuilt by the Cesium build process.
|
|
2
|
+
export default "/**\n\
|
|
3
|
+
* Applies a 2D texture transformation matrix to texture coordinates.\n\
|
|
4
|
+
* This function applies translation, rotation, and scaling transformations\n\
|
|
5
|
+
* as specified by the KHR_texture_transform glTF extension.\n\
|
|
6
|
+
*\n\
|
|
7
|
+
* @name czm_computeTextureTransform\n\
|
|
8
|
+
* @glslFunction\n\
|
|
9
|
+
*\n\
|
|
10
|
+
* @param {vec2} texCoord The texture coordinates to transform.\n\
|
|
11
|
+
* @param {mat3} textureTransform The 3x3 transformation matrix.\n\
|
|
12
|
+
*\n\
|
|
13
|
+
* @returns {vec2} The transformed texture coordinates.\n\
|
|
14
|
+
*\n\
|
|
15
|
+
* @example\n\
|
|
16
|
+
* // GLSL declaration\n\
|
|
17
|
+
* vec2 czm_computeTextureTransform(vec2 texCoord, mat3 textureTransform);\n\
|
|
18
|
+
*\n\
|
|
19
|
+
* // Apply texture transform to UV coordinates\n\
|
|
20
|
+
* vec2 transformedUV = czm_computeTextureTransform(uv, u_textureTransform);\n\
|
|
21
|
+
*/\n\
|
|
22
|
+
vec2 czm_computeTextureTransform(vec2 texCoord, mat3 textureTransform)\n\
|
|
23
|
+
{\n\
|
|
24
|
+
return vec2(textureTransform * vec3(texCoord, 1.0));\n\
|
|
25
|
+
}";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//This file is automatically rebuilt by the Cesium build process.
|
|
2
|
+
export default "/**\n\
|
|
3
|
+
* Decodes RGB values packed into a single float at 8-bit precision. Encoded\n\
|
|
4
|
+
* representation is equivalent to 0xFFFFFF in JavaScript.\n\
|
|
5
|
+
*\n\
|
|
6
|
+
* @name czm_decodeRGB8\n\
|
|
7
|
+
* @glslFunction\n\
|
|
8
|
+
*\n\
|
|
9
|
+
* @param {float} encoded Float-encoded RGB values.\n\
|
|
10
|
+
* @returns {vec4} Decoded RGB values.\n\
|
|
11
|
+
*/\n\
|
|
12
|
+
vec4 czm_decodeRGB8(float encoded) {\n\
|
|
13
|
+
const float SHIFT_RIGHT16 = 1.0 / 65536.0;\n\
|
|
14
|
+
const float SHIFT_RIGHT8 = 1.0 / 256.0;\n\
|
|
15
|
+
const float SHIFT_LEFT16 = 65536.0;\n\
|
|
16
|
+
const float SHIFT_LEFT8 = 256.0;\n\
|
|
17
|
+
\n\
|
|
18
|
+
vec4 color = vec4(255.0);\n\
|
|
19
|
+
color.r = floor(encoded * SHIFT_RIGHT16);\n\
|
|
20
|
+
color.g = floor((encoded - color.r * SHIFT_LEFT16) * SHIFT_RIGHT8);\n\
|
|
21
|
+
color.b = floor(encoded - color.r * SHIFT_LEFT16 - color.g * SHIFT_LEFT8);\n\
|
|
22
|
+
return color / 255.0;\n\
|
|
23
|
+
}\n\
|
|
24
|
+
";
|
|
@@ -31,7 +31,8 @@ export default "/**\n\
|
|
|
31
31
|
*/\n\
|
|
32
32
|
vec4 czm_modelToWindowCoordinates(vec4 position)\n\
|
|
33
33
|
{\n\
|
|
34
|
-
vec4
|
|
34
|
+
vec4 positionEC = czm_modelView * position;\n\
|
|
35
|
+
vec4 q = czm_projection * positionEC;\n\
|
|
35
36
|
q.xyz /= q.w; // normalized device coordinates\n\
|
|
36
37
|
q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates\n\
|
|
37
38
|
return q;\n\
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//This file is automatically rebuilt by the Cesium build process.
|
|
2
|
+
export default "/**\n\
|
|
3
|
+
* Useful for reinterpreting texture data as higher-precision values.\n\
|
|
4
|
+
* Only works correctly in WebGL 2, which supports the uint type and bitwise operations.\n\
|
|
5
|
+
*\n\
|
|
6
|
+
* @param {float|vec2|vec3|vec4} 1-4 values from a texture lookup (RGBA channels), normalized to [0.0, 1.0].\n\
|
|
7
|
+
* @return {uint} Raw bits as an unsigned integer.\n\
|
|
8
|
+
*/\n\
|
|
9
|
+
uint czm_unpackTexture(float packedValue) {\n\
|
|
10
|
+
float rounded = czm_round(packedValue * 255.0);\n\
|
|
11
|
+
return uint(rounded);\n\
|
|
12
|
+
}\n\
|
|
13
|
+
\n\
|
|
14
|
+
uint czm_unpackTexture(vec2 packedValue) {\n\
|
|
15
|
+
vec2 rounded = czm_round(packedValue * 255.0);\n\
|
|
16
|
+
uint byte0 = uint(rounded.x);\n\
|
|
17
|
+
uint byte1 = uint(rounded.y);\n\
|
|
18
|
+
return byte0 | (byte1 << 8);\n\
|
|
19
|
+
}\n\
|
|
20
|
+
\n\
|
|
21
|
+
uint czm_unpackTexture(vec3 packedValue) {\n\
|
|
22
|
+
vec3 rounded = czm_round(packedValue * 255.0);\n\
|
|
23
|
+
uint byte0 = uint(rounded.x);\n\
|
|
24
|
+
uint byte1 = uint(rounded.y);\n\
|
|
25
|
+
uint byte2 = uint(rounded.z);\n\
|
|
26
|
+
return byte0 | (byte1 << 8) | (byte2 << 16);\n\
|
|
27
|
+
}\n\
|
|
28
|
+
\n\
|
|
29
|
+
uint czm_unpackTexture(vec4 packedValue) {\n\
|
|
30
|
+
vec4 rounded = czm_round(packedValue * 255.0);\n\
|
|
31
|
+
uint byte0 = uint(rounded.x);\n\
|
|
32
|
+
uint byte1 = uint(rounded.y);\n\
|
|
33
|
+
uint byte2 = uint(rounded.z);\n\
|
|
34
|
+
uint byte3 = uint(rounded.w);\n\
|
|
35
|
+
return byte0 | (byte1 << 8) | (byte2 << 16) | (byte3 << 24);\n\
|
|
36
|
+
}\n\
|
|
37
|
+
";
|
|
@@ -77,7 +77,6 @@ vec4 czm_screenToEyeCoordinates(vec2 screenCoordinateXY, float depthOrLogDepth)\
|
|
|
77
77
|
vec4 screenCoord = vec4(screenCoordinateXY, far * (1.0 - near / depthFromCamera) / (far - near), 1.0);\n\
|
|
78
78
|
vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord);\n\
|
|
79
79
|
eyeCoordinate.w = 1.0 / depthFromCamera; // Better precision\n\
|
|
80
|
-
return eyeCoordinate;\n\
|
|
81
80
|
#else\n\
|
|
82
81
|
vec4 screenCoord = vec4(screenCoordinateXY, depthOrLogDepth, 1.0);\n\
|
|
83
82
|
vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord);\n\
|
|
@@ -12,10 +12,10 @@ void main()\n\
|
|
|
12
12
|
// but doing it here allows us to change the radii without rewriting the vertex data, and\n\
|
|
13
13
|
// allows all ellipsoids to reuse the same vertex data.\n\
|
|
14
14
|
vec4 p = vec4(u_radii * position, 1.0);\n\
|
|
15
|
-
\n\
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
\n\
|
|
16
|
+
vec4 pEC = czm_modelView * p;\n\
|
|
17
|
+
v_positionEC = pEC.xyz; // position in eye coordinates\n\
|
|
18
|
+
gl_Position = czm_projection * pEC;\n\
|
|
19
19
|
// With multi-frustum, when the ellipsoid primitive is positioned on the intersection of two frustums\n\
|
|
20
20
|
// and close to terrain, the terrain (writes depth) in the closest frustum can overwrite part of the\n\
|
|
21
21
|
// ellipsoid (does not write depth) that was rendered in the farther frustum.\n\
|
|
@@ -57,7 +57,9 @@ export default "/**\n\
|
|
|
57
57
|
*/\n\
|
|
58
58
|
\n\
|
|
59
59
|
// NVIDIA GameWorks Graphics Samples GitHub link: https://github.com/NVIDIAGameWorks/GraphicsSamples\n\
|
|
60
|
+
// Original source (archived): https://archive.org/details/nvidiagame-works-graphics-samples-master\n\
|
|
60
61
|
// Original FXAA 3.11 shader link: https://github.com/NVIDIAGameWorks/GraphicsSamples/blob/master/samples/es3-kepler/FXAA/FXAA3_11.h\n\
|
|
62
|
+
// Shader link in fork: https://github.com/lyntel/GraphicsSamples/blob/3d30817ebeeade64fe6a4fc3aa1fe4265c29b6fd/samples/es3-kepler/FXAA/FXAA3_11.h\n\
|
|
61
63
|
\n\
|
|
62
64
|
// Steps used to integrate into Cesium:\n\
|
|
63
65
|
// * The following defines are set:\n\
|