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.
Files changed (219) hide show
  1. package/Build/Workers/chunk-2HWLF3FT.js +837 -0
  2. package/Build/Workers/chunk-2KXMJ5XS.js +3792 -0
  3. package/Build/Workers/chunk-2NPCLB3H.js +56 -0
  4. package/Build/Workers/chunk-2ZHQTIBH.js +1483 -0
  5. package/Build/Workers/chunk-3GLYOW63.js +352 -0
  6. package/Build/Workers/chunk-3L22KMPU.js +219 -0
  7. package/Build/Workers/chunk-3Q6V2B2I.js +73 -0
  8. package/Build/Workers/chunk-3QOKKRIG.js +387 -0
  9. package/Build/Workers/chunk-44YZFGRH.js +1800 -0
  10. package/Build/Workers/chunk-45VV4SBO.js +2342 -0
  11. package/Build/Workers/chunk-4EJ4AA2S.js +368 -0
  12. package/Build/Workers/chunk-4IJFHUL6.js +414 -0
  13. package/Build/Workers/chunk-4K3V5CGW.js +454 -0
  14. package/Build/Workers/chunk-4M4QL6KJ.js +305 -0
  15. package/Build/Workers/chunk-4YNRIEQ6.js +288 -0
  16. package/Build/Workers/chunk-56CVDPH5.js +352 -0
  17. package/Build/Workers/chunk-5CTAAPXH.js +1483 -0
  18. package/Build/Workers/chunk-5ISZ6NJD.js +102 -0
  19. package/Build/Workers/chunk-5SDHYIOS.js +56 -0
  20. package/Build/Workers/chunk-66TGUMCU.js +2719 -0
  21. package/Build/Workers/chunk-6EJMTDQJ.js +163 -0
  22. package/Build/Workers/chunk-6VWXYSMH.js +959 -0
  23. package/Build/Workers/chunk-6VZ7VB2Q.js +241 -0
  24. package/Build/Workers/chunk-7AMRE57Q.js +301 -0
  25. package/Build/Workers/chunk-7DH6C33H.js +398 -0
  26. package/Build/Workers/chunk-7VUS3FVE.js +38 -0
  27. package/Build/Workers/chunk-7Y3ZA6H3.js +198 -0
  28. package/Build/Workers/chunk-A6BMHZNA.js +38 -0
  29. package/Build/Workers/chunk-A7XY2MN7.js +171 -0
  30. package/Build/Workers/chunk-AC7ND63S.js +57 -0
  31. package/Build/Workers/chunk-AHCZ757M.js +9230 -0
  32. package/Build/Workers/chunk-ANOA7E7F.js +56 -0
  33. package/Build/Workers/chunk-AYO5HHV6.js +789 -0
  34. package/Build/Workers/chunk-BE2N56VZ.js +1344 -0
  35. package/Build/Workers/chunk-BR3BPM64.js +9230 -0
  36. package/Build/Workers/chunk-BVMRWGOK.js +455 -0
  37. package/Build/Workers/chunk-BXEL2NX7.js +455 -0
  38. package/Build/Workers/chunk-C5BO2JCG.js +278 -0
  39. package/Build/Workers/chunk-CIRQNZVR.js +301 -0
  40. package/Build/Workers/chunk-CM67CQME.js +305 -0
  41. package/Build/Workers/chunk-D3QIW4DH.js +630 -0
  42. package/Build/Workers/chunk-E5W7QIGZ.js +511 -0
  43. package/Build/Workers/chunk-E6CYGUJI.js +1054 -0
  44. package/Build/Workers/chunk-EIZ23IOX.js +414 -0
  45. package/Build/Workers/chunk-EIZJUMQY.js +101 -0
  46. package/Build/Workers/chunk-EXTMZJXB.js +82 -0
  47. package/Build/Workers/chunk-EYOOSIBW.js +682 -0
  48. package/Build/Workers/chunk-F37WADVC.js +1054 -0
  49. package/Build/Workers/chunk-FIWPJFHX.js +101 -0
  50. package/Build/Workers/chunk-FM32TNGT.js +198 -0
  51. package/Build/Workers/chunk-FOMYIEIB.js +476 -0
  52. package/Build/Workers/chunk-FWYDLSVQ.js +97 -0
  53. package/Build/Workers/chunk-HGZR6CZF.js +1067 -0
  54. package/Build/Workers/chunk-HIXHDABG.js +288 -0
  55. package/Build/Workers/chunk-HMCCZZWE.js +97 -0
  56. package/Build/Workers/chunk-HW54WHGM.js +2719 -0
  57. package/Build/Workers/chunk-IHYAI7GF.js +973 -0
  58. package/Build/Workers/chunk-INLQ7LVK.js +837 -0
  59. package/Build/Workers/chunk-IQMESTCB.js +124 -0
  60. package/Build/Workers/chunk-J4PISUNT.js +2342 -0
  61. package/Build/Workers/chunk-JSWU557I.js +693 -0
  62. package/Build/Workers/chunk-KHONDSQ7.js +693 -0
  63. package/Build/Workers/chunk-KLUL2SOE.js +352 -0
  64. package/Build/Workers/chunk-KMBLKQCC.js +1992 -0
  65. package/Build/Workers/chunk-KOTWWQN7.js +171 -0
  66. package/Build/Workers/chunk-KWV6ZTF4.js +163 -0
  67. package/Build/Workers/chunk-LSEFPQHG.js +476 -0
  68. package/Build/Workers/chunk-M66X4O24.js +44 -0
  69. package/Build/Workers/chunk-M6IXKBC7.js +1992 -0
  70. package/Build/Workers/chunk-MFUC3D5C.js +162 -0
  71. package/Build/Workers/chunk-MRMNELAH.js +82 -0
  72. package/Build/Workers/chunk-N3NUA5H2.js +3792 -0
  73. package/Build/Workers/chunk-NFB2NXJN.js +138 -0
  74. package/Build/Workers/chunk-NQAXBK4K.js +789 -0
  75. package/Build/Workers/chunk-NUGQWV6S.js +352 -0
  76. package/Build/Workers/chunk-O7S7WL7K.js +278 -0
  77. package/Build/Workers/chunk-ODZYB26X.js +1287 -0
  78. package/Build/Workers/chunk-OEHJY463.js +3201 -0
  79. package/Build/Workers/chunk-OMMRNMXF.js +44 -0
  80. package/Build/Workers/chunk-OZ3CQDO3.js +138 -0
  81. package/Build/Workers/chunk-PNXBG64I.js +219 -0
  82. package/Build/Workers/chunk-PYR35GK4.js +973 -0
  83. package/Build/Workers/chunk-Q4CXGW74.js +57 -0
  84. package/Build/Workers/chunk-QGISLKCW.js +147 -0
  85. package/Build/Workers/chunk-QQHVOJW6.js +497 -0
  86. package/Build/Workers/chunk-QWCMMRJW.js +58 -0
  87. package/Build/Workers/chunk-RDEZCHF4.js +398 -0
  88. package/Build/Workers/chunk-SJTE7FVN.js +778 -0
  89. package/Build/Workers/chunk-SM5T67LR.js +162 -0
  90. package/Build/Workers/chunk-T27NNXEU.js +58 -0
  91. package/Build/Workers/chunk-T4J5BWUO.js +511 -0
  92. package/Build/Workers/chunk-T6JS4BRN.js +140 -0
  93. package/Build/Workers/chunk-UH6DUQBW.js +140 -0
  94. package/Build/Workers/chunk-UJAH6XKF.js +73 -0
  95. package/Build/Workers/chunk-UKSTJ2PH.js +454 -0
  96. package/Build/Workers/chunk-UQCDCCZ7.js +368 -0
  97. package/Build/Workers/chunk-UXIFNEA3.js +1287 -0
  98. package/Build/Workers/chunk-UXJ6J5L7.js +56 -0
  99. package/Build/Workers/chunk-V4VUAZXI.js +1800 -0
  100. package/Build/Workers/chunk-VQH2YXO2.js +497 -0
  101. package/Build/Workers/chunk-VXKCLSE4.js +241 -0
  102. package/Build/Workers/chunk-W3U6YBEI.js +280 -0
  103. package/Build/Workers/chunk-W75ZVFKP.js +778 -0
  104. package/Build/Workers/chunk-WCDFJYFB.js +1344 -0
  105. package/Build/Workers/chunk-WME5M6W3.js +630 -0
  106. package/Build/Workers/chunk-XDQBQB64.js +1067 -0
  107. package/Build/Workers/chunk-Y6HOIWE5.js +959 -0
  108. package/Build/Workers/chunk-YEMC2ZOR.js +147 -0
  109. package/Build/Workers/chunk-YWNF3TPE.js +682 -0
  110. package/Build/Workers/chunk-Z55VGWJP.js +280 -0
  111. package/Build/Workers/chunk-Z5YWP24C.js +124 -0
  112. package/Build/Workers/chunk-ZHXCWUJB.js +387 -0
  113. package/Build/Workers/chunk-ZIMPUF2I.js +102 -0
  114. package/Build/Workers/chunk-ZKDWYQKC.js +3201 -0
  115. package/Build/Workers/combineGeometry.js +24 -22
  116. package/Build/Workers/createBoxGeometry.js +18 -16
  117. package/Build/Workers/createBoxOutlineGeometry.js +23 -25
  118. package/Build/Workers/createCircleGeometry.js +29 -27
  119. package/Build/Workers/createCircleOutlineGeometry.js +22 -20
  120. package/Build/Workers/createCoplanarPolygonGeometry.js +43 -43
  121. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +37 -35
  122. package/Build/Workers/createCorridorGeometry.js +46 -49
  123. package/Build/Workers/createCorridorOutlineGeometry.js +40 -43
  124. package/Build/Workers/createCylinderGeometry.js +20 -18
  125. package/Build/Workers/createCylinderOutlineGeometry.js +27 -25
  126. package/Build/Workers/createEllipseGeometry.js +28 -25
  127. package/Build/Workers/createEllipseOutlineGeometry.js +21 -18
  128. package/Build/Workers/createEllipsoidGeometry.js +19 -17
  129. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -16
  130. package/Build/Workers/createFrustumGeometry.js +18 -16
  131. package/Build/Workers/createFrustumOutlineGeometry.js +21 -21
  132. package/Build/Workers/createGeometry.js +31 -26
  133. package/Build/Workers/createGroundPolylineGeometry.js +188 -135
  134. package/Build/Workers/createPlaneGeometry.js +22 -21
  135. package/Build/Workers/createPlaneOutlineGeometry.js +15 -13
  136. package/Build/Workers/createPolygonGeometry.js +51 -52
  137. package/Build/Workers/createPolygonOutlineGeometry.js +43 -44
  138. package/Build/Workers/createPolylineGeometry.js +37 -40
  139. package/Build/Workers/createPolylineVolumeGeometry.js +41 -44
  140. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +36 -39
  141. package/Build/Workers/createRectangleGeometry.js +47 -53
  142. package/Build/Workers/createRectangleOutlineGeometry.js +32 -33
  143. package/Build/Workers/createSimplePolylineGeometry.js +33 -34
  144. package/Build/Workers/createSphereGeometry.js +20 -20
  145. package/Build/Workers/createSphereOutlineGeometry.js +19 -19
  146. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  147. package/Build/Workers/createVectorTileClampedPolylines.js +16 -14
  148. package/Build/Workers/createVectorTileGeometries.js +24 -22
  149. package/Build/Workers/createVectorTilePoints.js +15 -13
  150. package/Build/Workers/createVectorTilePolygons.js +24 -21
  151. package/Build/Workers/createVectorTilePolylines.js +16 -14
  152. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  153. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +29 -27
  154. package/Build/Workers/createVerticesFromHeightmap.js +42 -63
  155. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +26 -280
  156. package/Build/Workers/createWallGeometry.js +35 -36
  157. package/Build/Workers/createWallOutlineGeometry.js +33 -34
  158. package/Build/Workers/decodeDraco.js +10 -11
  159. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  160. package/Build/Workers/decodeI3S.js +16 -20
  161. package/Build/Workers/gaussianSplatSorter.js +4 -4
  162. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  163. package/Build/Workers/incrementallyBuildTerrainPicker.js +20 -12
  164. package/Build/Workers/transcodeKTX2.js +42 -14
  165. package/Build/Workers/transferTypedArrayTest.js +1 -1
  166. package/Build/Workers/upsampleQuantizedTerrainMesh.js +24 -21
  167. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  168. package/Source/Shaders/BillboardCollectionFS.js +85 -81
  169. package/Source/Shaders/BillboardCollectionVS.js +60 -118
  170. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  171. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  172. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  173. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.js +12 -0
  174. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
  175. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +11 -0
  176. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  177. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  178. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  179. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  180. package/Source/Shaders/Builtin/CzmBuiltins.js +12 -0
  181. package/Source/Shaders/Builtin/Functions/columbusViewMorph.js +8 -1
  182. package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
  183. package/Source/Shaders/Builtin/Functions/decodeRGB8.js +24 -0
  184. package/Source/Shaders/Builtin/Functions/modelToWindowCoordinates.js +2 -1
  185. package/Source/Shaders/Builtin/Functions/unpackTexture.js +37 -0
  186. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.js +0 -1
  187. package/Source/Shaders/EllipsoidVS.js +4 -4
  188. package/Source/Shaders/FXAA3_11.js +2 -0
  189. package/Source/Shaders/GlobeFS.js +22 -0
  190. package/Source/Shaders/GlobeVS.js +3 -2
  191. package/Source/Shaders/Model/MaterialStageFS.js +50 -20
  192. package/Source/Shaders/Model/MetadataStageFS.js +2 -1
  193. package/Source/Shaders/Model/MetadataStageVS.js +2 -1
  194. package/Source/Shaders/Model/ModelFS.js +32 -2
  195. package/Source/Shaders/Model/ModelVS.js +15 -1
  196. package/Source/Shaders/Model/PointCloudStylingStageVS.js +2 -1
  197. package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +0 -1
  198. package/Source/Shaders/PointPrimitiveCollectionVS.js +8 -39
  199. package/Source/Shaders/PolygonSignedDistanceFS.js +64 -33
  200. package/Source/Shaders/PolylineCommon.js +1 -1
  201. package/Source/Shaders/ShadowVolumeAppearanceFS.js +7 -15
  202. package/Source/Shaders/SkyAtmosphereVS.js +2 -1
  203. package/Source/Shaders/Voxels/IntersectBox.js +20 -33
  204. package/Source/Shaders/Voxels/IntersectCylinder.js +28 -32
  205. package/Source/Shaders/Voxels/IntersectDepth.js +10 -6
  206. package/Source/Shaders/Voxels/IntersectEllipsoid.js +12 -20
  207. package/Source/Shaders/Voxels/IntersectLongitude.js +21 -9
  208. package/Source/Shaders/Voxels/Intersection.js +3 -5
  209. package/Source/Shaders/Voxels/IntersectionUtils.js +2 -1
  210. package/Source/Shaders/Voxels/Megatexture.js +15 -83
  211. package/Source/Shaders/Voxels/Octree.js +53 -61
  212. package/Source/Shaders/Voxels/VoxelFS.js +67 -52
  213. package/Source/Shaders/Voxels/VoxelUtils.js +0 -19
  214. package/index.js +346 -261
  215. package/package.json +1 -1
  216. package/Source/Shaders/Voxels/IntersectClippingPlanes.js +0 -80
  217. package/Source/Shaders/Voxels/convertUvToBox.js +0 -46
  218. package/Source/Shaders/Voxels/convertUvToCylinder.js +0 -101
  219. 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 "#ifdef INSTANCED\n\
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, disableDepthTestDistance, dimensions\n\
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
- #if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK)\n\
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
- #ifdef FRAGMENT_DEPTH_CHECK\n\
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 float v_splitDirection;\n\
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 VERTEX_DEPTH_CHECK\n\
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
- #if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK)\n\
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 pickColor;\n\
221
- vec4 color;\n\
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 disableDepthTestDistance = compressedAttribute3.z;\n\
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
- #ifdef VERTEX_DEPTH_CHECK\n\
318
- if (lengthSq < disableDepthTestDistance) {\n\
319
- float depthsilon = 10.0;\n\
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
- vec2 labelTranslate = textureCoordinateBoundsOrLabelTranslate.xy;\n\
322
- vec4 pEC1 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);\n\
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), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);\n\
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), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);\n\
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 (disableDepthTestDistance != 0.0)\n\
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 (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance)))\n\
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
- v_splitDirection = splitDirection;\n\
378
+ v_splitDirectionAndEllipsoidDepthEC.x = splitDirection;\n\
437
379
  }\n\
438
380
  ";
@@ -7,5 +7,5 @@ export default "/**\n\
7
7
  *\n\
8
8
  * @see czm_pass\n\
9
9
  */\n\
10
- const float czm_passCesium3DTile = 4.0;\n\
10
+ const float czm_passCesium3DTile = 5.0;\n\
11
11
  ";
@@ -7,5 +7,5 @@ export default "/**\n\
7
7
  *\n\
8
8
  * @see czm_pass\n\
9
9
  */\n\
10
- const float czm_passCesium3DTileClassification = 5.0;\n\
10
+ const float czm_passCesium3DTileClassification = 6.0;\n\
11
11
  ";
@@ -7,5 +7,5 @@ export default "/**\n\
7
7
  *\n\
8
8
  * @see czm_pass\n\
9
9
  */\n\
10
- const float czm_passCesium3DTileClassificationIgnoreShow = 6.0;\n\
10
+ const float czm_passCesium3DTileClassificationIgnoreShow = 7.0;\n\
11
11
  ";
@@ -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
+ ";
@@ -7,5 +7,5 @@ export default "/**\n\
7
7
  *\n\
8
8
  * @see czm_pass\n\
9
9
  */\n\
10
- const float czm_passOpaque = 7.0;\n\
10
+ const float czm_passOpaque = 8.0;\n\
11
11
  ";
@@ -7,5 +7,5 @@ export default "/**\n\
7
7
  *\n\
8
8
  * @see czm_pass\n\
9
9
  */\n\
10
- const float czm_passOverlay = 10.0;\n\
10
+ const float czm_passOverlay = 13.0;\n\
11
11
  ";
@@ -7,5 +7,5 @@ export default "/**\n\
7
7
  *\n\
8
8
  * @see czm_pass\n\
9
9
  */\n\
10
- const float czm_passTranslucent = 8.0;\n\
10
+ const float czm_passTranslucent = 9.0;\n\
11
11
  ";
@@ -7,5 +7,5 @@ export default "/**\n\
7
7
  *\n\
8
8
  * @see czm_pass\n\
9
9
  */\n\
10
- const float czm_passVoxels = 9.0;\n\
10
+ const float czm_passVoxels = 10.0;\n\
11
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
- vec3 p = mix(position2D.xyz, position3D.xyz, time);\n\
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 q = czm_modelViewProjection * position; // clip coordinates\n\
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
- v_positionEC = (czm_modelView * p).xyz; // position in eye coordinates\n\
17
- gl_Position = czm_modelViewProjection * p; // position in clip coordinates\n\
18
- \n\
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\