@cesium/engine 22.3.0 → 23.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/Build/Workers/{chunk-EAAH543Q.js → chunk-2GL2EUEE.js} +11 -11
  2. package/Build/Workers/{chunk-EUDHHS7K.js → chunk-2WI4HGJU.js} +6 -6
  3. package/Build/Workers/{chunk-LWZHJWYK.js → chunk-36LBFITA.js} +665 -366
  4. package/Build/Workers/{chunk-7U5YNLF3.js → chunk-3B65YFXC.js} +1 -1
  5. package/Build/Workers/{chunk-D63Z7KKL.js → chunk-4LGFX2P5.js} +11 -11
  6. package/Build/Workers/{chunk-D6OKR3BQ.js → chunk-4UNQX2MP.js} +2 -2
  7. package/Build/Workers/{chunk-BO22JHBX.js → chunk-52K3GJKG.js} +3 -3
  8. package/Build/Workers/{chunk-XLIJV3YZ.js → chunk-56OHFSLH.js} +10 -10
  9. package/Build/Workers/{chunk-AWELU5C6.js → chunk-5A7YSAXT.js} +14 -14
  10. package/Build/Workers/{chunk-T5MJDW43.js → chunk-5JP5FG7U.js} +7 -7
  11. package/Build/Workers/{chunk-NVL7JXAQ.js → chunk-5R7SBUTW.js} +10 -10
  12. package/Build/Workers/chunk-5VKZVPO5.js +1829 -0
  13. package/Build/Workers/{chunk-YHPBT4I5.js → chunk-6FVFM2KB.js} +5 -5
  14. package/Build/Workers/{chunk-WHLGBMBC.js → chunk-6SLGTBB2.js} +5 -5
  15. package/Build/Workers/{chunk-VIQIKMTZ.js → chunk-7KRN6JPQ.js} +14 -14
  16. package/Build/Workers/{chunk-TCOUGKXF.js → chunk-AA33B6PU.js} +4 -4
  17. package/Build/Workers/{chunk-S2KVL7OJ.js → chunk-AP6XWET5.js} +8 -8
  18. package/Build/Workers/{chunk-5PJB7ASO.js → chunk-APDKMX7W.js} +6 -6
  19. package/Build/Workers/{chunk-IXL46IYV.js → chunk-ARCFIOKA.js} +12 -12
  20. package/Build/Workers/{chunk-KIJR26N3.js → chunk-BNBD2YZK.js} +16 -16
  21. package/Build/Workers/{chunk-4R6FGUFP.js → chunk-DT5SJBKA.js} +29 -15
  22. package/Build/Workers/{chunk-FUDC3KOT.js → chunk-ESD4IEOU.js} +5 -5
  23. package/Build/Workers/{chunk-K2PLKJJG.js → chunk-FSDVXW7M.js} +5 -5
  24. package/Build/Workers/{chunk-4BBANFU6.js → chunk-G3YT7M7A.js} +1 -1
  25. package/Build/Workers/{chunk-K4PGSAR5.js → chunk-GN5NEUDT.js} +8 -8
  26. package/Build/Workers/{chunk-OOYICVOK.js → chunk-HYLEKKO5.js} +1 -1
  27. package/Build/Workers/{chunk-FDOLXORR.js → chunk-HYTFXWMY.js} +7 -7
  28. package/Build/Workers/{chunk-7SLNBIZS.js → chunk-IFA7VHHP.js} +560 -277
  29. package/Build/Workers/{chunk-N66PIK46.js → chunk-IYVDOB5V.js} +4 -4
  30. package/Build/Workers/{chunk-ZWWN2CQH.js → chunk-JUGY5AZN.js} +4 -4
  31. package/Build/Workers/{chunk-4O2ARYS7.js → chunk-KPYU6YZG.js} +1 -1
  32. package/Build/Workers/{chunk-TY5JXMVO.js → chunk-L7RDJ4V7.js} +1 -1
  33. package/Build/Workers/{chunk-L4OFWHNI.js → chunk-LDQWNMEC.js} +1 -1
  34. package/Build/Workers/{chunk-N6XBJBI7.js → chunk-MQJG522T.js} +6 -6
  35. package/Build/Workers/{chunk-FS42VX2H.js → chunk-MT5M7RLZ.js} +2 -2
  36. package/Build/Workers/{chunk-7ATKQRBM.js → chunk-N4AWE7TZ.js} +10 -10
  37. package/Build/Workers/{chunk-EOSX23OS.js → chunk-NAYRNPEP.js} +4 -4
  38. package/Build/Workers/{chunk-NO3LMU7T.js → chunk-NNHU33JK.js} +7 -7
  39. package/Build/Workers/{chunk-HWGP4GVC.js → chunk-NQCAZU7S.js} +13 -13
  40. package/Build/Workers/{chunk-6GBGEUWR.js → chunk-NUYLNQKV.js} +2 -2
  41. package/Build/Workers/{chunk-E4YDCSQK.js → chunk-OC6X22PG.js} +9 -9
  42. package/Build/Workers/{chunk-ZGGVEGTA.js → chunk-OHBM4YG4.js} +12 -12
  43. package/Build/Workers/{chunk-6WDMPXQ7.js → chunk-OMXN7YF4.js} +12 -12
  44. package/Build/Workers/{chunk-LK7GEFGB.js → chunk-OQ3EAJNW.js} +2 -2
  45. package/Build/Workers/{chunk-M5DVYXJJ.js → chunk-OQBPOKPZ.js} +6 -6
  46. package/Build/Workers/{chunk-WUWPKBOZ.js → chunk-PQVNT5CJ.js} +6 -6
  47. package/Build/Workers/{chunk-W5NV72VR.js → chunk-QA24Q62E.js} +17 -17
  48. package/Build/Workers/{chunk-PJLRXIMS.js → chunk-QQX7S5QT.js} +17 -17
  49. package/Build/Workers/{chunk-D2PEV362.js → chunk-QTOHIXGF.js} +10 -10
  50. package/Build/Workers/{chunk-MASEF4OV.js → chunk-R7M4XNPP.js} +8 -8
  51. package/Build/Workers/{chunk-2MLJ46ZZ.js → chunk-SGKTBHFQ.js} +13 -13
  52. package/Build/Workers/{chunk-EY5HOJFQ.js → chunk-SQTRWKO2.js} +5 -5
  53. package/Build/Workers/{chunk-AFGP5BXS.js → chunk-T43FXHNC.js} +7 -7
  54. package/Build/Workers/{chunk-IHFAFGR2.js → chunk-UEEGWJJP.js} +2 -2
  55. package/Build/Workers/{chunk-TMGLPEZW.js → chunk-WKXDCVBO.js} +4 -4
  56. package/Build/Workers/{chunk-VRAAQ3FS.js → chunk-Y5AJSEEN.js} +2 -2
  57. package/Build/Workers/{chunk-Y5MRBKQN.js → chunk-ZIW5FCIW.js} +18 -18
  58. package/Build/Workers/combineGeometry.js +24 -24
  59. package/Build/Workers/createBoxGeometry.js +18 -18
  60. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  61. package/Build/Workers/createCircleGeometry.js +26 -26
  62. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  63. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  64. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  65. package/Build/Workers/createCorridorGeometry.js +29 -29
  66. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  67. package/Build/Workers/createCylinderGeometry.js +20 -20
  68. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  69. package/Build/Workers/createEllipseGeometry.js +26 -26
  70. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  71. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  72. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  73. package/Build/Workers/createFrustumGeometry.js +18 -18
  74. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  75. package/Build/Workers/createGeometry.js +24 -24
  76. package/Build/Workers/createGroundPolylineGeometry.js +22 -22
  77. package/Build/Workers/createPlaneGeometry.js +16 -16
  78. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  79. package/Build/Workers/createPolygonGeometry.js +32 -32
  80. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  81. package/Build/Workers/createPolylineGeometry.js +25 -25
  82. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  83. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  84. package/Build/Workers/createRectangleGeometry.js +27 -27
  85. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  86. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  87. package/Build/Workers/createSphereGeometry.js +19 -19
  88. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  89. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  90. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  91. package/Build/Workers/createVectorTileGeometries.js +24 -24
  92. package/Build/Workers/createVectorTilePoints.js +13 -13
  93. package/Build/Workers/createVectorTilePolygons.js +22 -22
  94. package/Build/Workers/createVectorTilePolylines.js +14 -14
  95. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  96. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  97. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  98. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  99. package/Build/Workers/createWallGeometry.js +24 -24
  100. package/Build/Workers/createWallOutlineGeometry.js +23 -23
  101. package/Build/Workers/decodeDraco.js +10 -10
  102. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  103. package/Build/Workers/decodeI3S.js +10 -10
  104. package/Build/Workers/gaussianSplatSorter.js +4 -4
  105. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  106. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  107. package/Build/Workers/transcodeKTX2.js +6 -6
  108. package/Build/Workers/transferTypedArrayTest.js +1 -1
  109. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  110. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  111. package/Source/Core/AttributeCompression.js +53 -6
  112. package/Source/Core/Cartesian2.js +689 -684
  113. package/Source/Core/Cartesian3.js +1044 -1043
  114. package/Source/Core/Cartesian4.js +816 -813
  115. package/Source/Core/GoogleMaps.js +23 -2
  116. package/Source/Core/Ion.js +1 -1
  117. package/Source/Core/OpenCageGeocoderService.js +2 -3
  118. package/Source/Core/globalTypes.js +16 -0
  119. package/Source/Renderer/ShaderDestination.js +54 -13
  120. package/Source/Scene/ArcGisMapService.js +1 -1
  121. package/Source/Scene/Billboard.js +7 -4
  122. package/Source/Scene/BillboardCollection.js +64 -25
  123. package/Source/Scene/BufferLoader.js +65 -74
  124. package/Source/Scene/CubeMapPanorama.js +351 -0
  125. package/Source/Scene/DerivedCommand.js +8 -31
  126. package/Source/Scene/DracoLoader.js +79 -78
  127. package/Source/Scene/EquirectangularPanorama.js +264 -0
  128. package/Source/Scene/FrameState.js +7 -0
  129. package/Source/Scene/GaussianSplatPrimitive.js +906 -167
  130. package/Source/Scene/GlobeSurfaceShaderSet.js +36 -32
  131. package/Source/Scene/GltfBufferViewLoader.js +109 -118
  132. package/Source/Scene/GltfDracoLoader.js +167 -176
  133. package/Source/Scene/GltfImageLoader.js +91 -101
  134. package/Source/Scene/GltfIndexBufferLoader.js +228 -241
  135. package/Source/Scene/GltfJsonLoader.js +90 -99
  136. package/Source/Scene/GltfLoader.js +313 -324
  137. package/Source/Scene/GltfSpzLoader.js +127 -134
  138. package/Source/Scene/GltfStructuralMetadataLoader.js +181 -186
  139. package/Source/Scene/GltfTextureLoader.js +217 -231
  140. package/Source/Scene/GltfVertexBufferLoader.js +267 -276
  141. package/Source/Scene/GoogleStreetViewCubeMapPanoramaProvider.js +341 -0
  142. package/Source/Scene/Label.js +6 -4
  143. package/Source/Scene/LabelCollection.js +59 -1
  144. package/Source/Scene/MetadataClassProperty.js +212 -7
  145. package/Source/Scene/MetadataComponentType.js +162 -127
  146. package/Source/Scene/MetadataSchemaLoader.js +60 -67
  147. package/Source/Scene/MetadataTable.js +14 -0
  148. package/Source/Scene/MetadataTableProperty.js +14 -0
  149. package/Source/Scene/Model/B3dmLoader.js +216 -224
  150. package/Source/Scene/Model/CustomShader.js +6 -1
  151. package/Source/Scene/Model/CustomShaderPipelineStage.js +122 -7
  152. package/Source/Scene/Model/GeoJsonLoader.js +53 -61
  153. package/Source/Scene/Model/GeometryPipelineStage.js +17 -3
  154. package/Source/Scene/Model/I3dmLoader.js +232 -240
  155. package/Source/Scene/Model/MaterialPipelineStage.js +1 -1
  156. package/Source/Scene/Model/MetadataPipelineStage.js +438 -22
  157. package/Source/Scene/Model/PntsLoader.js +78 -89
  158. package/Source/Scene/Panorama.js +53 -0
  159. package/Source/Scene/PanoramaProvider.js +43 -0
  160. package/Source/Scene/PointPrimitiveCollection.js +14 -22
  161. package/Source/Scene/PropertyTable.js +43 -0
  162. package/Source/Scene/PropertyTexture.js +1 -1
  163. package/Source/Scene/PropertyTextureProperty.js +0 -97
  164. package/Source/Scene/ResourceLoader.js +84 -92
  165. package/Source/Scene/Scene.js +12 -0
  166. package/Source/Scene/SkyBox.js +29 -164
  167. package/Source/Scene/StructuralMetadata.js +18 -3
  168. package/Source/Scene/parseStructuralMetadata.js +244 -0
  169. package/Source/Shaders/BillboardCollectionFS.glsl +66 -40
  170. package/Source/Shaders/BillboardCollectionFS.js +67 -40
  171. package/Source/Shaders/BillboardCollectionVS.glsl +22 -31
  172. package/Source/Shaders/BillboardCollectionVS.js +22 -31
  173. package/Source/Shaders/Builtin/CzmBuiltins.js +4 -0
  174. package/Source/Shaders/Builtin/Functions/decodeRGB8.glsl +22 -0
  175. package/Source/Shaders/Builtin/Functions/decodeRGB8.js +24 -0
  176. package/Source/Shaders/Builtin/Functions/unpackTexture.glsl +35 -0
  177. package/Source/Shaders/Builtin/Functions/unpackTexture.js +37 -0
  178. package/Source/Shaders/CubeMapPanoramaVS.glsl +11 -0
  179. package/Source/Shaders/CubeMapPanoramaVS.js +13 -0
  180. package/Source/Shaders/Model/MetadataStageFS.glsl +2 -1
  181. package/Source/Shaders/Model/MetadataStageFS.js +2 -1
  182. package/Source/Shaders/Model/MetadataStageVS.glsl +2 -1
  183. package/Source/Shaders/Model/MetadataStageVS.js +2 -1
  184. package/Source/Shaders/Model/ModelFS.glsl +2 -2
  185. package/Source/Shaders/Model/ModelFS.js +2 -2
  186. package/Source/Shaders/Model/ModelVS.glsl +2 -2
  187. package/Source/Shaders/Model/ModelVS.js +2 -2
  188. package/Source/Shaders/PointPrimitiveCollectionVS.glsl +8 -39
  189. package/Source/Shaders/PointPrimitiveCollectionVS.js +8 -39
  190. package/index.d.ts +564 -189
  191. package/index.js +127 -119
  192. package/package.json +1 -1
  193. package/Build/Workers/chunk-LYBNPUEI.js +0 -1443
@@ -26,11 +26,11 @@ out vec4 v_textureCoordinateBounds;
26
26
  out vec4 v_originTextureCoordinateAndTranslate;
27
27
  out mat2 v_rotationMatrix;
28
28
  #endif
29
- out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize
29
+ out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize
30
30
 
31
31
  out vec4 v_pickColor;
32
32
  out vec4 v_color;
33
- out float v_splitDirection;
33
+ flat out vec2 v_splitDirectionAndEllipsoidDepthEC; // x: splitDirection, y: ellipsoid depth in eye coordinates
34
34
  #ifdef SDF
35
35
  out vec4 v_outlineColor;
36
36
  out float v_outlineWidth;
@@ -219,32 +219,18 @@ void main()
219
219
  bool validAlignedAxis = false;
220
220
  #endif
221
221
 
222
- vec4 pickColor;
223
- vec4 color;
224
-
225
- temp = compressedAttribute2.y;
226
- temp = temp * SHIFT_RIGHT8;
227
- pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8;
228
- temp = floor(temp) * SHIFT_RIGHT8;
229
- pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8;
230
- pickColor.r = floor(temp);
231
-
232
- temp = compressedAttribute2.x;
233
- temp = temp * SHIFT_RIGHT8;
234
- color.b = (temp - floor(temp)) * SHIFT_LEFT8;
235
- temp = floor(temp) * SHIFT_RIGHT8;
236
- color.g = (temp - floor(temp)) * SHIFT_LEFT8;
237
- color.r = floor(temp);
222
+ vec4 color = czm_decodeRGB8(compressedAttribute2.x);
223
+ vec4 pickColor = czm_decodeRGB8(compressedAttribute2.y);
238
224
 
239
225
  temp = compressedAttribute2.z * SHIFT_RIGHT8;
240
226
  bool sizeInMeters = floor((temp - floor(temp)) * SHIFT_LEFT7) > 0.0;
241
227
  temp = floor(temp) * SHIFT_RIGHT8;
242
228
 
243
229
  pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8;
244
- pickColor /= 255.0;
230
+ pickColor.a /= 255.0;
245
231
 
246
232
  color.a = floor(temp);
247
- color /= 255.0;
233
+ color.a /= 255.0;
248
234
 
249
235
  ///////////////////////////////////////////////////////////////////////////
250
236
 
@@ -322,13 +308,25 @@ void main()
322
308
  }
323
309
  #endif
324
310
 
311
+ v_splitDirectionAndEllipsoidDepthEC.y = czm_infinity;
312
+ vec3 ellipsoidCenter = czm_view[3].xyz;
313
+ vec3 rayDirection = normalize(positionEC.xyz);
314
+ czm_ray ray = czm_ray(vec3(0.0), rayDirection);
315
+ vec3 ellipsoid_inverseRadii = czm_ellipsoidInverseRadii;
316
+ czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoidCenter, ellipsoid_inverseRadii);
317
+
318
+ if (!czm_isEmpty(intersection))
319
+ {
320
+ v_splitDirectionAndEllipsoidDepthEC.y = intersection.start;
321
+ }
322
+
325
323
  v_compressed.y = enableDepthCheck;
326
324
 
327
325
  #ifdef VS_THREE_POINT_DEPTH_CHECK
328
326
  if (lengthSq < (u_threePointDepthTestDistance * u_threePointDepthTestDistance) && (enableDepthCheck == 1.0)) {
329
327
  float depthsilon = 10.0;
330
328
  vec2 depthOrigin;
331
- // Horizontal origin for labels comes from a special attribute. If that value is 0, this is a billboard - use the regular origin.
329
+ // Horizontal origin for labels comes from a special attribute. If that value is 0, this is a billboard - use the regular origin.
332
330
  // Otherwise, transform the label origin to -1, 0, 1 (right, center, left).
333
331
  depthOrigin.x = floor(compressedAttribute2.w - (temp2 * SHIFT_LEFT2));
334
332
  depthOrigin.x = czm_branchFreeTernary(depthOrigin.x == 0.0, origin.x, depthOrigin.x - 2.0);
@@ -414,23 +412,16 @@ if (lengthSq < (u_threePointDepthTestDistance * u_threePointDepthTestDistance) &
414
412
  #endif
415
413
 
416
414
  #ifdef SDF
417
- vec4 outlineColor;
415
+ vec4 outlineColor = czm_decodeRGB8(sdf.x);
418
416
  float outlineWidth;
419
417
 
420
- temp = sdf.x;
421
- temp = temp * SHIFT_RIGHT8;
422
- outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8;
423
- temp = floor(temp) * SHIFT_RIGHT8;
424
- outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8;
425
- outlineColor.r = floor(temp);
426
-
427
418
  temp = sdf.y;
428
419
  temp = temp * SHIFT_RIGHT8;
429
420
  float temp3 = (temp - floor(temp)) * SHIFT_LEFT8;
430
421
  temp = floor(temp) * SHIFT_RIGHT8;
431
422
  outlineWidth = (temp - floor(temp)) * SHIFT_LEFT8;
432
423
  outlineColor.a = floor(temp);
433
- outlineColor /= 255.0;
424
+ outlineColor.a /= 255.0;
434
425
 
435
426
  v_outlineWidth = outlineWidth / 255.0;
436
427
  v_outlineColor = outlineColor;
@@ -441,5 +432,5 @@ if (lengthSq < (u_threePointDepthTestDistance * u_threePointDepthTestDistance) &
441
432
 
442
433
  v_color = color;
443
434
  v_color.a *= translucency;
444
- v_splitDirection = splitDirection;
435
+ v_splitDirectionAndEllipsoidDepthEC.x = splitDirection;
445
436
  }
@@ -27,11 +27,11 @@ out vec4 v_textureCoordinateBounds;\n\
27
27
  out vec4 v_originTextureCoordinateAndTranslate;\n\
28
28
  out mat2 v_rotationMatrix;\n\
29
29
  #endif\n\
30
- out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize\n\
30
+ out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize\n\
31
31
  \n\
32
32
  out vec4 v_pickColor;\n\
33
33
  out vec4 v_color;\n\
34
- out float v_splitDirection;\n\
34
+ flat out vec2 v_splitDirectionAndEllipsoidDepthEC; // x: splitDirection, y: ellipsoid depth in eye coordinates\n\
35
35
  #ifdef SDF\n\
36
36
  out vec4 v_outlineColor;\n\
37
37
  out float v_outlineWidth;\n\
@@ -220,32 +220,18 @@ void main()\n\
220
220
  bool validAlignedAxis = false;\n\
221
221
  #endif\n\
222
222
  \n\
223
- vec4 pickColor;\n\
224
- vec4 color;\n\
225
- \n\
226
- temp = compressedAttribute2.y;\n\
227
- temp = temp * SHIFT_RIGHT8;\n\
228
- pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8;\n\
229
- temp = floor(temp) * SHIFT_RIGHT8;\n\
230
- pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8;\n\
231
- pickColor.r = floor(temp);\n\
232
- \n\
233
- temp = compressedAttribute2.x;\n\
234
- temp = temp * SHIFT_RIGHT8;\n\
235
- color.b = (temp - floor(temp)) * SHIFT_LEFT8;\n\
236
- temp = floor(temp) * SHIFT_RIGHT8;\n\
237
- color.g = (temp - floor(temp)) * SHIFT_LEFT8;\n\
238
- color.r = floor(temp);\n\
223
+ vec4 color = czm_decodeRGB8(compressedAttribute2.x);\n\
224
+ vec4 pickColor = czm_decodeRGB8(compressedAttribute2.y);\n\
239
225
  \n\
240
226
  temp = compressedAttribute2.z * SHIFT_RIGHT8;\n\
241
227
  bool sizeInMeters = floor((temp - floor(temp)) * SHIFT_LEFT7) > 0.0;\n\
242
228
  temp = floor(temp) * SHIFT_RIGHT8;\n\
243
229
  \n\
244
230
  pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8;\n\
245
- pickColor /= 255.0;\n\
231
+ pickColor.a /= 255.0;\n\
246
232
  \n\
247
233
  color.a = floor(temp);\n\
248
- color /= 255.0;\n\
234
+ color.a /= 255.0;\n\
249
235
  \n\
250
236
  ///////////////////////////////////////////////////////////////////////////\n\
251
237
  \n\
@@ -322,6 +308,18 @@ void main()\n\
322
308
  enableDepthCheck = 0.0;\n\
323
309
  }\n\
324
310
  #endif\n\
311
+ \n\
312
+ v_splitDirectionAndEllipsoidDepthEC.y = czm_infinity;\n\
313
+ vec3 ellipsoidCenter = czm_view[3].xyz;\n\
314
+ vec3 rayDirection = normalize(positionEC.xyz);\n\
315
+ czm_ray ray = czm_ray(vec3(0.0), rayDirection);\n\
316
+ vec3 ellipsoid_inverseRadii = czm_ellipsoidInverseRadii;\n\
317
+ czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoidCenter, ellipsoid_inverseRadii);\n\
318
+ \n\
319
+ if (!czm_isEmpty(intersection))\n\
320
+ {\n\
321
+ v_splitDirectionAndEllipsoidDepthEC.y = intersection.start;\n\
322
+ }\n\
325
323
  \n\
326
324
  v_compressed.y = enableDepthCheck;\n\
327
325
  \n\
@@ -329,7 +327,7 @@ void main()\n\
329
327
  if (lengthSq < (u_threePointDepthTestDistance * u_threePointDepthTestDistance) && (enableDepthCheck == 1.0)) {\n\
330
328
  float depthsilon = 10.0;\n\
331
329
  vec2 depthOrigin;\n\
332
- // Horizontal origin for labels comes from a special attribute. If that value is 0, this is a billboard - use the regular origin. \n\
330
+ // Horizontal origin for labels comes from a special attribute. If that value is 0, this is a billboard - use the regular origin.\n\
333
331
  // Otherwise, transform the label origin to -1, 0, 1 (right, center, left).\n\
334
332
  depthOrigin.x = floor(compressedAttribute2.w - (temp2 * SHIFT_LEFT2));\n\
335
333
  depthOrigin.x = czm_branchFreeTernary(depthOrigin.x == 0.0, origin.x, depthOrigin.x - 2.0);\n\
@@ -415,15 +413,8 @@ if (lengthSq < (u_threePointDepthTestDistance * u_threePointDepthTestDistance) &
415
413
  #endif\n\
416
414
  \n\
417
415
  #ifdef SDF\n\
418
- vec4 outlineColor;\n\
416
+ vec4 outlineColor = czm_decodeRGB8(sdf.x);\n\
419
417
  float outlineWidth;\n\
420
- \n\
421
- temp = sdf.x;\n\
422
- temp = temp * SHIFT_RIGHT8;\n\
423
- outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8;\n\
424
- temp = floor(temp) * SHIFT_RIGHT8;\n\
425
- outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8;\n\
426
- outlineColor.r = floor(temp);\n\
427
418
  \n\
428
419
  temp = sdf.y;\n\
429
420
  temp = temp * SHIFT_RIGHT8;\n\
@@ -431,7 +422,7 @@ if (lengthSq < (u_threePointDepthTestDistance * u_threePointDepthTestDistance) &
431
422
  temp = floor(temp) * SHIFT_RIGHT8;\n\
432
423
  outlineWidth = (temp - floor(temp)) * SHIFT_LEFT8;\n\
433
424
  outlineColor.a = floor(temp);\n\
434
- outlineColor /= 255.0;\n\
425
+ outlineColor.a /= 255.0;\n\
435
426
  \n\
436
427
  v_outlineWidth = outlineWidth / 255.0;\n\
437
428
  v_outlineColor = outlineColor;\n\
@@ -442,6 +433,6 @@ if (lengthSq < (u_threePointDepthTestDistance * u_threePointDepthTestDistance) &
442
433
  \n\
443
434
  v_color = color;\n\
444
435
  v_color.a *= translucency;\n\
445
- v_splitDirection = splitDirection;\n\
436
+ v_splitDirectionAndEllipsoidDepthEC.x = splitDirection;\n\
446
437
  }\n\
447
438
  ";
@@ -72,6 +72,7 @@ import czm_computeGroundAtmosphereScattering from './Functions/computeGroundAtmo
72
72
  import czm_computePosition from './Functions/computePosition.js'
73
73
  import czm_computeScattering from './Functions/computeScattering.js'
74
74
  import czm_cosineAndSine from './Functions/cosineAndSine.js'
75
+ import czm_decodeRGB8 from './Functions/decodeRGB8.js'
75
76
  import czm_decompressTextureCoordinates from './Functions/decompressTextureCoordinates.js'
76
77
  import czm_depthClamp from './Functions/depthClamp.js'
77
78
  import czm_eastNorthUpToEyeCoordinates from './Functions/eastNorthUpToEyeCoordinates.js'
@@ -130,6 +131,7 @@ import czm_transpose from './Functions/transpose.js'
130
131
  import czm_unpackClippingExtents from './Functions/unpackClippingExtents.js'
131
132
  import czm_unpackDepth from './Functions/unpackDepth.js'
132
133
  import czm_unpackFloat from './Functions/unpackFloat.js'
134
+ import czm_unpackTexture from './Functions/unpackTexture.js'
133
135
  import czm_unpackUint from './Functions/unpackUint.js'
134
136
  import czm_valueTransform from './Functions/valueTransform.js'
135
137
  import czm_vertexLogDepth from './Functions/vertexLogDepth.js'
@@ -212,6 +214,7 @@ export default {
212
214
  czm_computePosition : czm_computePosition,
213
215
  czm_computeScattering : czm_computeScattering,
214
216
  czm_cosineAndSine : czm_cosineAndSine,
217
+ czm_decodeRGB8 : czm_decodeRGB8,
215
218
  czm_decompressTextureCoordinates : czm_decompressTextureCoordinates,
216
219
  czm_depthClamp : czm_depthClamp,
217
220
  czm_eastNorthUpToEyeCoordinates : czm_eastNorthUpToEyeCoordinates,
@@ -270,6 +273,7 @@ export default {
270
273
  czm_unpackClippingExtents : czm_unpackClippingExtents,
271
274
  czm_unpackDepth : czm_unpackDepth,
272
275
  czm_unpackFloat : czm_unpackFloat,
276
+ czm_unpackTexture : czm_unpackTexture,
273
277
  czm_unpackUint : czm_unpackUint,
274
278
  czm_valueTransform : czm_valueTransform,
275
279
  czm_vertexLogDepth : czm_vertexLogDepth,
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Decodes RGB values packed into a single float at 8-bit precision. Encoded
3
+ * representation is equivalent to 0xFFFFFF in JavaScript.
4
+ *
5
+ * @name czm_decodeRGB8
6
+ * @glslFunction
7
+ *
8
+ * @param {float} encoded Float-encoded RGB values.
9
+ * @returns {vec4} Decoded RGB values.
10
+ */
11
+ vec4 czm_decodeRGB8(float encoded) {
12
+ const float SHIFT_RIGHT16 = 1.0 / 65536.0;
13
+ const float SHIFT_RIGHT8 = 1.0 / 256.0;
14
+ const float SHIFT_LEFT16 = 65536.0;
15
+ const float SHIFT_LEFT8 = 256.0;
16
+
17
+ vec4 color = vec4(255.0);
18
+ color.r = floor(encoded * SHIFT_RIGHT16);
19
+ color.g = floor((encoded - color.r * SHIFT_LEFT16) * SHIFT_RIGHT8);
20
+ color.b = floor(encoded - color.r * SHIFT_LEFT16 - color.g * SHIFT_LEFT8);
21
+ return color / 255.0;
22
+ }
@@ -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
+ ";
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Useful for reinterpreting texture data as higher-precision values.
3
+ * Only works correctly in WebGL 2, which supports the uint type and bitwise operations.
4
+ *
5
+ * @param {float|vec2|vec3|vec4} 1-4 values from a texture lookup (RGBA channels), normalized to [0.0, 1.0].
6
+ * @return {uint} Raw bits as an unsigned integer.
7
+ */
8
+ uint czm_unpackTexture(float packedValue) {
9
+ float rounded = czm_round(packedValue * 255.0);
10
+ return uint(rounded);
11
+ }
12
+
13
+ uint czm_unpackTexture(vec2 packedValue) {
14
+ vec2 rounded = czm_round(packedValue * 255.0);
15
+ uint byte0 = uint(rounded.x);
16
+ uint byte1 = uint(rounded.y);
17
+ return byte0 | (byte1 << 8);
18
+ }
19
+
20
+ uint czm_unpackTexture(vec3 packedValue) {
21
+ vec3 rounded = czm_round(packedValue * 255.0);
22
+ uint byte0 = uint(rounded.x);
23
+ uint byte1 = uint(rounded.y);
24
+ uint byte2 = uint(rounded.z);
25
+ return byte0 | (byte1 << 8) | (byte2 << 16);
26
+ }
27
+
28
+ uint czm_unpackTexture(vec4 packedValue) {
29
+ vec4 rounded = czm_round(packedValue * 255.0);
30
+ uint byte0 = uint(rounded.x);
31
+ uint byte1 = uint(rounded.y);
32
+ uint byte2 = uint(rounded.z);
33
+ uint byte3 = uint(rounded.w);
34
+ return byte0 | (byte1 << 8) | (byte2 << 16) | (byte3 << 24);
35
+ }
@@ -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
+ ";
@@ -0,0 +1,11 @@
1
+ uniform mat3 u_cubeMapPanoramaTransform;
2
+
3
+ in vec3 position;
4
+ out vec3 v_texCoord;
5
+
6
+ void main()
7
+ {
8
+ vec3 p = czm_viewRotation * (u_cubeMapPanoramaTransform * (czm_entireFrustum.y * position));
9
+ gl_Position = czm_projection * vec4(p, 1.0);
10
+ v_texCoord = position.xyz;
11
+ }
@@ -0,0 +1,13 @@
1
+ //This file is automatically rebuilt by the Cesium build process.
2
+ export default "uniform mat3 u_cubeMapPanoramaTransform;\n\
3
+ \n\
4
+ in vec3 position;\n\
5
+ out vec3 v_texCoord;\n\
6
+ \n\
7
+ void main()\n\
8
+ {\n\
9
+ vec3 p = czm_viewRotation * (u_cubeMapPanoramaTransform * (czm_entireFrustum.y * position));\n\
10
+ gl_Position = czm_projection * vec4(p, 1.0);\n\
11
+ v_texCoord = position.xyz;\n\
12
+ }\n\
13
+ ";
@@ -1,9 +1,10 @@
1
1
  void metadataStage(
2
+ FeatureIds featureIds,
2
3
  out Metadata metadata,
3
4
  out MetadataClass metadataClass,
4
5
  out MetadataStatistics metadataStatistics,
5
6
  ProcessedAttributes attributes
6
7
  )
7
8
  {
8
- initializeMetadata(metadata, metadataClass, metadataStatistics, attributes);
9
+ initializeMetadata(featureIds, metadata, metadataClass, metadataStatistics, attributes);
9
10
  }
@@ -1,11 +1,12 @@
1
1
  //This file is automatically rebuilt by the Cesium build process.
2
2
  export default "void metadataStage(\n\
3
+ FeatureIds featureIds,\n\
3
4
  out Metadata metadata,\n\
4
5
  out MetadataClass metadataClass,\n\
5
6
  out MetadataStatistics metadataStatistics,\n\
6
7
  ProcessedAttributes attributes\n\
7
8
  )\n\
8
9
  {\n\
9
- initializeMetadata(metadata, metadataClass, metadataStatistics, attributes);\n\
10
+ initializeMetadata(featureIds, metadata, metadataClass, metadataStatistics, attributes);\n\
10
11
  }\n\
11
12
  ";
@@ -1,10 +1,11 @@
1
1
  void metadataStage(
2
+ FeatureIds featureIds,
2
3
  out Metadata metadata,
3
4
  out MetadataClass metadataClass,
4
5
  out MetadataStatistics metadataStatistics,
5
6
  ProcessedAttributes attributes
6
7
  )
7
8
  {
8
- initializeMetadata(metadata, metadataClass, metadataStatistics, attributes);
9
+ initializeMetadata(featureIds, metadata, metadataClass, metadataStatistics, attributes);
9
10
  setMetadataVaryings();
10
11
  }
@@ -1,12 +1,13 @@
1
1
  //This file is automatically rebuilt by the Cesium build process.
2
2
  export default "void metadataStage(\n\
3
+ FeatureIds featureIds,\n\
3
4
  out Metadata metadata,\n\
4
5
  out MetadataClass metadataClass,\n\
5
6
  out MetadataStatistics metadataStatistics,\n\
6
7
  ProcessedAttributes attributes\n\
7
8
  )\n\
8
9
  {\n\
9
- initializeMetadata(metadata, metadataClass, metadataStatistics, attributes);\n\
10
+ initializeMetadata(featureIds, metadata, metadataClass, metadataStatistics, attributes);\n\
10
11
  setMetadataVaryings();\n\
11
12
  }\n\
12
13
  ";
@@ -29,7 +29,7 @@ SelectedFeature selectedFeature;
29
29
 
30
30
  void main()
31
31
  {
32
- #ifdef PRIMITIVE_TYPE_POINTS
32
+ #if defined(PRIMITIVE_TYPE_POINTS) && defined(HAS_POINT_DIAMETER)
33
33
  // Render points as circles
34
34
  float distanceToCenter = length(gl_PointCoord - vec2(0.5));
35
35
  if (distanceToCenter > 0.5) {
@@ -59,7 +59,7 @@ void main()
59
59
  Metadata metadata;
60
60
  MetadataClass metadataClass;
61
61
  MetadataStatistics metadataStatistics;
62
- metadataStage(metadata, metadataClass, metadataStatistics, attributes);
62
+ metadataStage(featureIds, metadata, metadataClass, metadataStatistics, attributes);
63
63
 
64
64
  //========================================================================
65
65
  // When not picking metadata START
@@ -30,7 +30,7 @@ SelectedFeature selectedFeature;\n\
30
30
  \n\
31
31
  void main()\n\
32
32
  {\n\
33
- #ifdef PRIMITIVE_TYPE_POINTS\n\
33
+ #if defined(PRIMITIVE_TYPE_POINTS) && defined(HAS_POINT_DIAMETER)\n\
34
34
  // Render points as circles\n\
35
35
  float distanceToCenter = length(gl_PointCoord - vec2(0.5));\n\
36
36
  if (distanceToCenter > 0.5) {\n\
@@ -60,7 +60,7 @@ void main()\n\
60
60
  Metadata metadata;\n\
61
61
  MetadataClass metadataClass;\n\
62
62
  MetadataStatistics metadataStatistics;\n\
63
- metadataStage(metadata, metadataClass, metadataStatistics, attributes);\n\
63
+ metadataStage(featureIds, metadata, metadataClass, metadataStatistics, attributes);\n\
64
64
  \n\
65
65
  //========================================================================\n\
66
66
  // When not picking metadata START\n\
@@ -95,7 +95,7 @@ void main()
95
95
  Metadata metadata;
96
96
  MetadataClass metadataClass;
97
97
  MetadataStatistics metadataStatistics;
98
- metadataStage(metadata, metadataClass, metadataStatistics, attributes);
98
+ metadataStage(featureIds, metadata, metadataClass, metadataStatistics, attributes);
99
99
 
100
100
  #ifdef HAS_VERTICAL_EXAGGERATION
101
101
  verticalExaggerationStage(attributes);
@@ -147,7 +147,7 @@ void main()
147
147
  #else
148
148
  gl_PointSize = 1.0;
149
149
  #endif
150
-
150
+
151
151
  gl_PointSize *= show;
152
152
  #endif
153
153
 
@@ -96,7 +96,7 @@ void main()\n\
96
96
  Metadata metadata;\n\
97
97
  MetadataClass metadataClass;\n\
98
98
  MetadataStatistics metadataStatistics;\n\
99
- metadataStage(metadata, metadataClass, metadataStatistics, attributes);\n\
99
+ metadataStage(featureIds, metadata, metadataClass, metadataStatistics, attributes);\n\
100
100
  \n\
101
101
  #ifdef HAS_VERTICAL_EXAGGERATION\n\
102
102
  verticalExaggerationStage(attributes);\n\
@@ -148,7 +148,7 @@ void main()\n\
148
148
  #else\n\
149
149
  gl_PointSize = 1.0;\n\
150
150
  #endif\n\
151
- \n\
151
+ \n\
152
152
  gl_PointSize *= show;\n\
153
153
  #endif\n\
154
154
  \n\
@@ -46,45 +46,14 @@ void main()
46
46
 
47
47
  ///////////////////////////////////////////////////////////////////////////
48
48
 
49
- vec4 color;
50
- vec4 outlineColor;
51
- vec4 pickColor;
52
-
53
- // compressedAttribute0.z => pickColor.rgb
54
-
55
- temp = compressedAttribute0.z * SHIFT_RIGHT8;
56
- pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8;
57
- temp = floor(temp) * SHIFT_RIGHT8;
58
- pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8;
59
- pickColor.r = floor(temp);
60
-
61
- // compressedAttribute0.x => color.rgb
62
-
63
- temp = compressedAttribute0.x * SHIFT_RIGHT8;
64
- color.b = (temp - floor(temp)) * SHIFT_LEFT8;
65
- temp = floor(temp) * SHIFT_RIGHT8;
66
- color.g = (temp - floor(temp)) * SHIFT_LEFT8;
67
- color.r = floor(temp);
68
-
69
- // compressedAttribute0.y => outlineColor.rgb
70
-
71
- temp = compressedAttribute0.y * SHIFT_RIGHT8;
72
- outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8;
73
- temp = floor(temp) * SHIFT_RIGHT8;
74
- outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8;
75
- outlineColor.r = floor(temp);
76
-
77
- // compressedAttribute0.w => color.a, outlineColor.a, pickColor.a
78
-
79
- temp = compressedAttribute0.w * SHIFT_RIGHT8;
80
- pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8;
81
- pickColor = pickColor / 255.0;
82
-
83
- temp = floor(temp) * SHIFT_RIGHT8;
84
- outlineColor.a = (temp - floor(temp)) * SHIFT_LEFT8;
85
- outlineColor /= 255.0;
86
- color.a = floor(temp);
87
- color /= 255.0;
49
+ vec4 color = czm_decodeRGB8(compressedAttribute0.x);
50
+ vec4 outlineColor = czm_decodeRGB8(compressedAttribute0.y);
51
+ vec4 pickColor = czm_decodeRGB8(compressedAttribute0.z);
52
+ vec4 alphaPacked = czm_decodeRGB8(compressedAttribute0.w);
53
+
54
+ color.a = alphaPacked.x;
55
+ outlineColor.a = alphaPacked.y;
56
+ pickColor.a = alphaPacked.z;
88
57
 
89
58
  ///////////////////////////////////////////////////////////////////////////
90
59
 
@@ -47,45 +47,14 @@ void main()\n\
47
47
  \n\
48
48
  ///////////////////////////////////////////////////////////////////////////\n\
49
49
  \n\
50
- vec4 color;\n\
51
- vec4 outlineColor;\n\
52
- vec4 pickColor;\n\
53
- \n\
54
- // compressedAttribute0.z => pickColor.rgb\n\
55
- \n\
56
- temp = compressedAttribute0.z * SHIFT_RIGHT8;\n\
57
- pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8;\n\
58
- temp = floor(temp) * SHIFT_RIGHT8;\n\
59
- pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8;\n\
60
- pickColor.r = floor(temp);\n\
61
- \n\
62
- // compressedAttribute0.x => color.rgb\n\
63
- \n\
64
- temp = compressedAttribute0.x * SHIFT_RIGHT8;\n\
65
- color.b = (temp - floor(temp)) * SHIFT_LEFT8;\n\
66
- temp = floor(temp) * SHIFT_RIGHT8;\n\
67
- color.g = (temp - floor(temp)) * SHIFT_LEFT8;\n\
68
- color.r = floor(temp);\n\
69
- \n\
70
- // compressedAttribute0.y => outlineColor.rgb\n\
71
- \n\
72
- temp = compressedAttribute0.y * SHIFT_RIGHT8;\n\
73
- outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8;\n\
74
- temp = floor(temp) * SHIFT_RIGHT8;\n\
75
- outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8;\n\
76
- outlineColor.r = floor(temp);\n\
77
- \n\
78
- // compressedAttribute0.w => color.a, outlineColor.a, pickColor.a\n\
79
- \n\
80
- temp = compressedAttribute0.w * SHIFT_RIGHT8;\n\
81
- pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8;\n\
82
- pickColor = pickColor / 255.0;\n\
83
- \n\
84
- temp = floor(temp) * SHIFT_RIGHT8;\n\
85
- outlineColor.a = (temp - floor(temp)) * SHIFT_LEFT8;\n\
86
- outlineColor /= 255.0;\n\
87
- color.a = floor(temp);\n\
88
- color /= 255.0;\n\
50
+ vec4 color = czm_decodeRGB8(compressedAttribute0.x);\n\
51
+ vec4 outlineColor = czm_decodeRGB8(compressedAttribute0.y);\n\
52
+ vec4 pickColor = czm_decodeRGB8(compressedAttribute0.z);\n\
53
+ vec4 alphaPacked = czm_decodeRGB8(compressedAttribute0.w);\n\
54
+ \n\
55
+ color.a = alphaPacked.x;\n\
56
+ outlineColor.a = alphaPacked.y;\n\
57
+ pickColor.a = alphaPacked.z;\n\
89
58
  \n\
90
59
  ///////////////////////////////////////////////////////////////////////////\n\
91
60
  \n\