@cesium/engine 3.0.1 → 4.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 (234) hide show
  1. package/Build/ThirdParty/Workers/pako_deflate.min.js +605 -0
  2. package/Build/ThirdParty/Workers/pako_inflate.min.js +800 -0
  3. package/Build/ThirdParty/Workers/z-worker-pako.js +502 -0
  4. package/Build/Workers/chunk-27R2KRIK.js +634 -0
  5. package/Build/Workers/chunk-2C65EKYA.js +55 -0
  6. package/Build/Workers/chunk-2NLMZNJI.js +138 -0
  7. package/Build/Workers/chunk-4V6RCTVH.js +289 -0
  8. package/Build/Workers/chunk-4VWUFKYW.js +368 -0
  9. package/Build/Workers/chunk-527JG4D7.js +629 -0
  10. package/Build/Workers/chunk-5U4UHRZ2.js +8644 -0
  11. package/Build/Workers/chunk-7CZEWQWE.js +353 -0
  12. package/Build/Workers/chunk-7IMAWM6A.js +842 -0
  13. package/Build/Workers/{package.js → chunk-A6EA6KIE.js} +13 -2
  14. package/Build/Workers/chunk-AXGQUPXA.js +1075 -0
  15. package/Build/Workers/chunk-BT6YIL2N.js +39 -0
  16. package/Build/Workers/chunk-C6MRR5YL.js +476 -0
  17. package/Build/Workers/chunk-DJUTBX6A.js +1860 -0
  18. package/Build/Workers/chunk-EQ6ZAP37.js +218 -0
  19. package/Build/Workers/chunk-F7P2HCYZ.js +73 -0
  20. package/Build/Workers/chunk-FE2XG3SS.js +73 -0
  21. package/Build/Workers/chunk-FKHRSGKP.js +781 -0
  22. package/Build/Workers/chunk-FVDTKX3F.js +58 -0
  23. package/Build/Workers/chunk-FYHCAKU6.js +684 -0
  24. package/Build/Workers/chunk-G3MOT7BZ.js +157 -0
  25. package/Build/Workers/chunk-H52L6U76.js +421 -0
  26. package/Build/Workers/chunk-H6MBQ4W4.js +305 -0
  27. package/Build/Workers/chunk-HCZR75II.js +2716 -0
  28. package/Build/Workers/chunk-I5MQWHBR.js +102 -0
  29. package/Build/Workers/chunk-KAFF2QX3.js +258 -0
  30. package/Build/Workers/chunk-LGSGX2RH.js +757 -0
  31. package/Build/Workers/chunk-LQRFWCNX.js +124 -0
  32. package/Build/Workers/chunk-N5MMDSD2.js +44 -0
  33. package/Build/Workers/chunk-NRETMGYL.js +390 -0
  34. package/Build/Workers/chunk-P4M4QUNQ.js +196 -0
  35. package/Build/Workers/chunk-P7PWX5HR.js +430 -0
  36. package/Build/Workers/chunk-PGB3EFR7.js +171 -0
  37. package/Build/Workers/chunk-PW5CA4MJ.js +3273 -0
  38. package/Build/Workers/chunk-PWDYKCNC.js +501 -0
  39. package/Build/Workers/chunk-QIS3NB7U.js +1258 -0
  40. package/Build/Workers/chunk-QVJ6IRKV.js +77 -0
  41. package/Build/Workers/chunk-RDCDRNJ7.js +117 -0
  42. package/Build/Workers/chunk-RDM3BKNC.js +1009 -0
  43. package/Build/Workers/chunk-RRUPTJ6P.js +452 -0
  44. package/Build/Workers/chunk-SGRWJKNO.js +400 -0
  45. package/Build/Workers/chunk-TF5D2H7B.js +138 -0
  46. package/Build/Workers/chunk-TVYIHH4V.js +513 -0
  47. package/Build/Workers/chunk-U5LKG6LX.js +101 -0
  48. package/Build/Workers/chunk-UGZGTV5K.js +302 -0
  49. package/Build/Workers/chunk-UN7AK64D.js +163 -0
  50. package/Build/Workers/chunk-V2LKNJGT.js +59 -0
  51. package/Build/Workers/chunk-VSCXSFHE.js +1477 -0
  52. package/Build/Workers/chunk-XJCTFTBM.js +2041 -0
  53. package/Build/Workers/chunk-XZVQMPWG.js +100 -0
  54. package/Build/Workers/chunk-YLAFWVOW.js +834 -0
  55. package/Build/Workers/chunk-YLS3FX3U.js +236 -0
  56. package/Build/Workers/chunk-YMJPANZZ.js +693 -0
  57. package/Build/Workers/combineGeometry.js +65 -15
  58. package/Build/Workers/createBoxGeometry.js +55 -10
  59. package/Build/Workers/createBoxOutlineGeometry.js +231 -310
  60. package/Build/Workers/createCircleGeometry.js +185 -202
  61. package/Build/Workers/createCircleOutlineGeometry.js +141 -155
  62. package/Build/Workers/createCoplanarPolygonGeometry.js +477 -557
  63. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +218 -230
  64. package/Build/Workers/createCorridorGeometry.js +1162 -1307
  65. package/Build/Workers/createCorridorOutlineGeometry.js +533 -569
  66. package/Build/Workers/createCylinderGeometry.js +57 -10
  67. package/Build/Workers/createCylinderOutlineGeometry.js +224 -258
  68. package/Build/Workers/createEllipseGeometry.js +68 -12
  69. package/Build/Workers/createEllipseOutlineGeometry.js +61 -12
  70. package/Build/Workers/createEllipsoidGeometry.js +56 -10
  71. package/Build/Workers/createEllipsoidOutlineGeometry.js +58 -13
  72. package/Build/Workers/createFrustumGeometry.js +55 -10
  73. package/Build/Workers/createFrustumOutlineGeometry.js +226 -243
  74. package/Build/Workers/createGeometry.js +143 -48
  75. package/Build/Workers/createGroundPolylineGeometry.js +1484 -2011
  76. package/Build/Workers/createPlaneGeometry.js +216 -243
  77. package/Build/Workers/createPlaneOutlineGeometry.js +121 -113
  78. package/Build/Workers/createPolygonGeometry.js +1041 -1327
  79. package/Build/Workers/createPolygonOutlineGeometry.js +516 -657
  80. package/Build/Workers/createPolylineGeometry.js +471 -547
  81. package/Build/Workers/createPolylineVolumeGeometry.js +352 -384
  82. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +271 -295
  83. package/Build/Workers/createRectangleGeometry.js +1128 -1331
  84. package/Build/Workers/createRectangleOutlineGeometry.js +445 -500
  85. package/Build/Workers/createSimplePolylineGeometry.js +381 -440
  86. package/Build/Workers/createSphereGeometry.js +112 -118
  87. package/Build/Workers/createSphereOutlineGeometry.js +112 -121
  88. package/Build/Workers/createTaskProcessorWorker.js +32 -127
  89. package/Build/Workers/createVectorTileClampedPolylines.js +462 -505
  90. package/Build/Workers/createVectorTileGeometries.js +377 -436
  91. package/Build/Workers/createVectorTilePoints.js +110 -77
  92. package/Build/Workers/createVectorTilePolygons.js +369 -391
  93. package/Build/Workers/createVectorTilePolylines.js +252 -244
  94. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +543 -615
  95. package/Build/Workers/createVerticesFromHeightmap.js +2244 -2677
  96. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +682 -904
  97. package/Build/Workers/createWallGeometry.js +459 -593
  98. package/Build/Workers/createWallOutlineGeometry.js +324 -419
  99. package/Build/Workers/decodeDraco.js +327 -347
  100. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +2530 -3567
  101. package/Build/Workers/decodeI3S.js +765 -970
  102. package/Build/Workers/transcodeKTX2.js +3353 -1464
  103. package/Build/Workers/transferTypedArrayTest.js +3 -4
  104. package/Build/Workers/upsampleQuantizedTerrainMesh.js +748 -953
  105. package/LICENSE.md +0 -12
  106. package/Source/Core/FeatureDetection.js +9 -0
  107. package/Source/Core/GoogleMaps.js +1 -1
  108. package/Source/Core/GroundPolylineGeometry.js +3 -2
  109. package/Source/Core/Ion.js +1 -1
  110. package/Source/Core/KTX2Transcoder.js +7 -3
  111. package/Source/Core/RequestScheduler.js +1 -0
  112. package/Source/Core/TaskProcessor.js +150 -146
  113. package/Source/Core/Transforms.js +2 -2
  114. package/Source/Core/buildModuleUrl.js +6 -5
  115. package/Source/DataSources/CzmlDataSource.js +6 -4
  116. package/Source/Scene/ArcGisMapService.js +1 -1
  117. package/Source/Scene/DracoLoader.js +26 -3
  118. package/Source/Scene/GltfLoaderUtil.js +1 -7
  119. package/Source/Scene/I3SDataProvider.js +0 -27
  120. package/Source/Scene/I3SDecoder.js +127 -0
  121. package/Source/Scene/I3SNode.js +32 -110
  122. package/Source/Scene/ImageryLayer.js +2 -2
  123. package/Source/Scene/Implicit3DTileContent.js +13 -0
  124. package/Source/Scene/ImplicitTileset.js +5 -0
  125. package/Source/Scene/Model/I3dmLoader.js +5 -1
  126. package/Source/Scene/Model/Model.js +4 -1
  127. package/Source/Scene/OpenStreetMapImageryProvider.js +7 -4
  128. package/Source/Scene/SingleTileImageryProvider.js +4 -2
  129. package/Source/ThirdParty/Workers/basis_transcoder.js +1 -1
  130. package/Source/{WorkersES6 → Workers}/createGeometry.js +11 -12
  131. package/Source/{WorkersES6 → Workers}/createTaskProcessorWorker.js +43 -59
  132. package/Source/{WorkersES6 → Workers}/decodeDraco.js +19 -25
  133. package/Source/{WorkersES6 → Workers}/decodeI3S.js +18 -32
  134. package/Source/{WorkersES6 → Workers}/transcodeKTX2.js +19 -26
  135. package/Source/Workers/transferTypedArrayTest.js +0 -6
  136. package/index.d.ts +20 -11
  137. package/index.js +170 -169
  138. package/package.json +3 -2
  139. package/Build/Workers/ArcType-2d9abbbc.js +0 -37
  140. package/Build/Workers/AttributeCompression-f9f6c717.js +0 -716
  141. package/Build/Workers/AxisAlignedBoundingBox-4bfd84f3.js +0 -258
  142. package/Build/Workers/BoundingRectangle-5fd6403a.js +0 -369
  143. package/Build/Workers/BoxGeometry-7aa4ce7f.js +0 -884
  144. package/Build/Workers/Check-6ede7e26.js +0 -290
  145. package/Build/Workers/Color-8e135f71.js +0 -2262
  146. package/Build/Workers/ComponentDatatype-cf1fa08e.js +0 -341
  147. package/Build/Workers/CoplanarPolygonGeometryLibrary-59c69b0a.js +0 -132
  148. package/Build/Workers/CorridorGeometryLibrary-63907365.js +0 -498
  149. package/Build/Workers/CylinderGeometry-8fc7c44b.js +0 -467
  150. package/Build/Workers/CylinderGeometryLibrary-7bf291b4.js +0 -63
  151. package/Build/Workers/EllipseGeometry-16b3736a.js +0 -1304
  152. package/Build/Workers/EllipseGeometryLibrary-21262a28.js +0 -366
  153. package/Build/Workers/EllipseOutlineGeometry-05d35d18.js +0 -443
  154. package/Build/Workers/EllipsoidGeodesic-5b3623dc.js +0 -520
  155. package/Build/Workers/EllipsoidGeometry-a503d1d6.js +0 -637
  156. package/Build/Workers/EllipsoidOutlineGeometry-7b09f24d.js +0 -454
  157. package/Build/Workers/EllipsoidRhumbLine-ef872433.js +0 -741
  158. package/Build/Workers/EllipsoidTangentPlane-546c0d5e.js +0 -373
  159. package/Build/Workers/EncodedCartesian3-57415c8a.js +0 -171
  160. package/Build/Workers/FrustumGeometry-87ce8622.js +0 -2540
  161. package/Build/Workers/GeometryAttribute-8fcff0d5.js +0 -619
  162. package/Build/Workers/GeometryAttributes-ad136444.js +0 -91
  163. package/Build/Workers/GeometryInstance-34d9e21e.js +0 -121
  164. package/Build/Workers/GeometryOffsetAttribute-9ad0019c.js +0 -16
  165. package/Build/Workers/GeometryPipeline-70d69a43.js +0 -3690
  166. package/Build/Workers/IndexDatatype-2643aa47.js +0 -200
  167. package/Build/Workers/IntersectionTests-85350792.js +0 -1836
  168. package/Build/Workers/Math-0a2ac845.js +0 -1340
  169. package/Build/Workers/Matrix2-e1298525.js +0 -7086
  170. package/Build/Workers/Matrix3-41c58dde.js +0 -4283
  171. package/Build/Workers/OrientedBoundingBox-29fb0fcd.js +0 -1259
  172. package/Build/Workers/Plane-4c3d403b.js +0 -309
  173. package/Build/Workers/PolygonGeometryLibrary-bad6329a.js +0 -1074
  174. package/Build/Workers/PolygonPipeline-dd13ee78.js +0 -1344
  175. package/Build/Workers/PolylinePipeline-7119eb3f.js +0 -573
  176. package/Build/Workers/PolylineVolumeGeometryLibrary-d25f0050.js +0 -781
  177. package/Build/Workers/PrimitivePipeline-111ee29f.js +0 -966
  178. package/Build/Workers/RectangleGeometryLibrary-bb378fb6.js +0 -280
  179. package/Build/Workers/RuntimeError-ef395448.js +0 -68
  180. package/Build/Workers/TerrainEncoding-c8e029a2.js +0 -1227
  181. package/Build/Workers/Transforms-e2d4a55a.js +0 -14713
  182. package/Build/Workers/VertexFormat-030f11ff.js +0 -312
  183. package/Build/Workers/WallGeometryLibrary-3e0819ec.js +0 -211
  184. package/Build/Workers/WebGLConstants-0b1ce7ba.js +0 -620
  185. package/Build/Workers/WebMercatorProjection-13ed1a6e.js +0 -151
  186. package/Build/Workers/arrayRemoveDuplicates-d2061e85.js +0 -129
  187. package/Build/Workers/cesiumWorkerBootstrapper.js +0 -1363
  188. package/Build/Workers/combine-d9581036.js +0 -82
  189. package/Build/Workers/defaultValue-fe22d8c0.js +0 -51
  190. package/Source/ThirdParty/Workers/draco_decoder_nodejs.js +0 -117
  191. package/Source/Workers/cesiumWorkerBootstrapper.js +0 -2290
  192. package/Source/Workers/package.json +0 -1
  193. /package/Source/{WorkersES6 → Workers}/combineGeometry.js +0 -0
  194. /package/Source/{WorkersES6 → Workers}/createBoxGeometry.js +0 -0
  195. /package/Source/{WorkersES6 → Workers}/createBoxOutlineGeometry.js +0 -0
  196. /package/Source/{WorkersES6 → Workers}/createCircleGeometry.js +0 -0
  197. /package/Source/{WorkersES6 → Workers}/createCircleOutlineGeometry.js +0 -0
  198. /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonGeometry.js +0 -0
  199. /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonOutlineGeometry.js +0 -0
  200. /package/Source/{WorkersES6 → Workers}/createCorridorGeometry.js +0 -0
  201. /package/Source/{WorkersES6 → Workers}/createCorridorOutlineGeometry.js +0 -0
  202. /package/Source/{WorkersES6 → Workers}/createCylinderGeometry.js +0 -0
  203. /package/Source/{WorkersES6 → Workers}/createCylinderOutlineGeometry.js +0 -0
  204. /package/Source/{WorkersES6 → Workers}/createEllipseGeometry.js +0 -0
  205. /package/Source/{WorkersES6 → Workers}/createEllipseOutlineGeometry.js +0 -0
  206. /package/Source/{WorkersES6 → Workers}/createEllipsoidGeometry.js +0 -0
  207. /package/Source/{WorkersES6 → Workers}/createEllipsoidOutlineGeometry.js +0 -0
  208. /package/Source/{WorkersES6 → Workers}/createFrustumGeometry.js +0 -0
  209. /package/Source/{WorkersES6 → Workers}/createFrustumOutlineGeometry.js +0 -0
  210. /package/Source/{WorkersES6 → Workers}/createGroundPolylineGeometry.js +0 -0
  211. /package/Source/{WorkersES6 → Workers}/createPlaneGeometry.js +0 -0
  212. /package/Source/{WorkersES6 → Workers}/createPlaneOutlineGeometry.js +0 -0
  213. /package/Source/{WorkersES6 → Workers}/createPolygonGeometry.js +0 -0
  214. /package/Source/{WorkersES6 → Workers}/createPolygonOutlineGeometry.js +0 -0
  215. /package/Source/{WorkersES6 → Workers}/createPolylineGeometry.js +0 -0
  216. /package/Source/{WorkersES6 → Workers}/createPolylineVolumeGeometry.js +0 -0
  217. /package/Source/{WorkersES6 → Workers}/createPolylineVolumeOutlineGeometry.js +0 -0
  218. /package/Source/{WorkersES6 → Workers}/createRectangleGeometry.js +0 -0
  219. /package/Source/{WorkersES6 → Workers}/createRectangleOutlineGeometry.js +0 -0
  220. /package/Source/{WorkersES6 → Workers}/createSimplePolylineGeometry.js +0 -0
  221. /package/Source/{WorkersES6 → Workers}/createSphereGeometry.js +0 -0
  222. /package/Source/{WorkersES6 → Workers}/createSphereOutlineGeometry.js +0 -0
  223. /package/Source/{WorkersES6 → Workers}/createVectorTileClampedPolylines.js +0 -0
  224. /package/Source/{WorkersES6 → Workers}/createVectorTileGeometries.js +0 -0
  225. /package/Source/{WorkersES6 → Workers}/createVectorTilePoints.js +0 -0
  226. /package/Source/{WorkersES6 → Workers}/createVectorTilePolygons.js +0 -0
  227. /package/Source/{WorkersES6 → Workers}/createVectorTilePolylines.js +0 -0
  228. /package/Source/{WorkersES6 → Workers}/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -0
  229. /package/Source/{WorkersES6 → Workers}/createVerticesFromHeightmap.js +0 -0
  230. /package/Source/{WorkersES6 → Workers}/createVerticesFromQuantizedTerrainMesh.js +0 -0
  231. /package/Source/{WorkersES6 → Workers}/createWallGeometry.js +0 -0
  232. /package/Source/{WorkersES6 → Workers}/createWallOutlineGeometry.js +0 -0
  233. /package/Source/{WorkersES6 → Workers}/decodeGoogleEarthEnterprisePacket.js +0 -0
  234. /package/Source/{WorkersES6 → Workers}/upsampleQuantizedTerrainMesh.js +0 -0
@@ -1,966 +0,0 @@
1
- define(['exports', './Transforms-e2d4a55a', './ComponentDatatype-cf1fa08e', './defaultValue-fe22d8c0', './Check-6ede7e26', './Matrix3-41c58dde', './GeometryAttribute-8fcff0d5', './GeometryAttributes-ad136444', './GeometryPipeline-70d69a43', './IndexDatatype-2643aa47', './Matrix2-e1298525', './WebMercatorProjection-13ed1a6e'], (function (exports, Transforms, ComponentDatatype, defaultValue, Check, Matrix3, GeometryAttribute, GeometryAttributes, GeometryPipeline, IndexDatatype, Matrix2, WebMercatorProjection) { 'use strict';
2
-
3
- /**
4
- * Value and type information for per-instance geometry attribute that determines the geometry instance offset
5
- *
6
- * @alias OffsetGeometryInstanceAttribute
7
- * @constructor
8
- *
9
- * @param {number} [x=0] The x translation
10
- * @param {number} [y=0] The y translation
11
- * @param {number} [z=0] The z translation
12
- *
13
- * @private
14
- *
15
- * @see GeometryInstance
16
- * @see GeometryInstanceAttribute
17
- */
18
- function OffsetGeometryInstanceAttribute(x, y, z) {
19
- x = defaultValue.defaultValue(x, 0);
20
- y = defaultValue.defaultValue(y, 0);
21
- z = defaultValue.defaultValue(z, 0);
22
-
23
- /**
24
- * The values for the attributes stored in a typed array.
25
- *
26
- * @type Float32Array
27
- */
28
- this.value = new Float32Array([x, y, z]);
29
- }
30
-
31
- Object.defineProperties(OffsetGeometryInstanceAttribute.prototype, {
32
- /**
33
- * The datatype of each component in the attribute, e.g., individual elements in
34
- * {@link OffsetGeometryInstanceAttribute#value}.
35
- *
36
- * @memberof OffsetGeometryInstanceAttribute.prototype
37
- *
38
- * @type {ComponentDatatype}
39
- * @readonly
40
- *
41
- * @default {@link ComponentDatatype.FLOAT}
42
- */
43
- componentDatatype: {
44
- get: function () {
45
- return ComponentDatatype.ComponentDatatype.FLOAT;
46
- },
47
- },
48
-
49
- /**
50
- * The number of components in the attributes, i.e., {@link OffsetGeometryInstanceAttribute#value}.
51
- *
52
- * @memberof OffsetGeometryInstanceAttribute.prototype
53
- *
54
- * @type {number}
55
- * @readonly
56
- *
57
- * @default 3
58
- */
59
- componentsPerAttribute: {
60
- get: function () {
61
- return 3;
62
- },
63
- },
64
-
65
- /**
66
- * When <code>true</code> and <code>componentDatatype</code> is an integer format,
67
- * indicate that the components should be mapped to the range [0, 1] (unsigned)
68
- * or [-1, 1] (signed) when they are accessed as floating-point for rendering.
69
- *
70
- * @memberof OffsetGeometryInstanceAttribute.prototype
71
- *
72
- * @type {boolean}
73
- * @readonly
74
- *
75
- * @default false
76
- */
77
- normalize: {
78
- get: function () {
79
- return false;
80
- },
81
- },
82
- });
83
-
84
- /**
85
- * Creates a new {@link OffsetGeometryInstanceAttribute} instance given the provided an enabled flag and {@link DistanceDisplayCondition}.
86
- *
87
- * @param {Cartesian3} offset The cartesian offset
88
- * @returns {OffsetGeometryInstanceAttribute} The new {@link OffsetGeometryInstanceAttribute} instance.
89
- */
90
- OffsetGeometryInstanceAttribute.fromCartesian3 = function (offset) {
91
- //>>includeStart('debug', pragmas.debug);
92
- Check.Check.defined("offset", offset);
93
- //>>includeEnd('debug');
94
-
95
- return new OffsetGeometryInstanceAttribute(offset.x, offset.y, offset.z);
96
- };
97
-
98
- /**
99
- * Converts a distance display condition to a typed array that can be used to assign a distance display condition attribute.
100
- *
101
- * @param {Cartesian3} offset The cartesian offset
102
- * @param {Float32Array} [result] The array to store the result in, if undefined a new instance will be created.
103
- * @returns {Float32Array} The modified result parameter or a new instance if result was undefined.
104
- *
105
- * @example
106
- * const attributes = primitive.getGeometryInstanceAttributes('an id');
107
- * attributes.modelMatrix = Cesium.OffsetGeometryInstanceAttribute.toValue(modelMatrix, attributes.modelMatrix);
108
- */
109
- OffsetGeometryInstanceAttribute.toValue = function (offset, result) {
110
- //>>includeStart('debug', pragmas.debug);
111
- Check.Check.defined("offset", offset);
112
- //>>includeEnd('debug');
113
-
114
- if (!defaultValue.defined(result)) {
115
- result = new Float32Array([offset.x, offset.y, offset.z]);
116
- }
117
-
118
- result[0] = offset.x;
119
- result[1] = offset.y;
120
- result[2] = offset.z;
121
- return result;
122
- };
123
-
124
- function transformToWorldCoordinates(
125
- instances,
126
- primitiveModelMatrix,
127
- scene3DOnly
128
- ) {
129
- let toWorld = !scene3DOnly;
130
- const length = instances.length;
131
- let i;
132
-
133
- if (!toWorld && length > 1) {
134
- const modelMatrix = instances[0].modelMatrix;
135
-
136
- for (i = 1; i < length; ++i) {
137
- if (!Matrix2.Matrix4.equals(modelMatrix, instances[i].modelMatrix)) {
138
- toWorld = true;
139
- break;
140
- }
141
- }
142
- }
143
-
144
- if (toWorld) {
145
- for (i = 0; i < length; ++i) {
146
- if (defaultValue.defined(instances[i].geometry)) {
147
- GeometryPipeline.GeometryPipeline.transformToWorldCoordinates(instances[i]);
148
- }
149
- }
150
- } else {
151
- // Leave geometry in local coordinate system; auto update model-matrix.
152
- Matrix2.Matrix4.multiplyTransformation(
153
- primitiveModelMatrix,
154
- instances[0].modelMatrix,
155
- primitiveModelMatrix
156
- );
157
- }
158
- }
159
-
160
- function addGeometryBatchId(geometry, batchId) {
161
- const attributes = geometry.attributes;
162
- const positionAttr = attributes.position;
163
- const numberOfComponents =
164
- positionAttr.values.length / positionAttr.componentsPerAttribute;
165
-
166
- attributes.batchId = new GeometryAttribute.GeometryAttribute({
167
- componentDatatype: ComponentDatatype.ComponentDatatype.FLOAT,
168
- componentsPerAttribute: 1,
169
- values: new Float32Array(numberOfComponents),
170
- });
171
-
172
- const values = attributes.batchId.values;
173
- for (let j = 0; j < numberOfComponents; ++j) {
174
- values[j] = batchId;
175
- }
176
- }
177
-
178
- function addBatchIds(instances) {
179
- const length = instances.length;
180
-
181
- for (let i = 0; i < length; ++i) {
182
- const instance = instances[i];
183
- if (defaultValue.defined(instance.geometry)) {
184
- addGeometryBatchId(instance.geometry, i);
185
- } else if (
186
- defaultValue.defined(instance.westHemisphereGeometry) &&
187
- defaultValue.defined(instance.eastHemisphereGeometry)
188
- ) {
189
- addGeometryBatchId(instance.westHemisphereGeometry, i);
190
- addGeometryBatchId(instance.eastHemisphereGeometry, i);
191
- }
192
- }
193
- }
194
-
195
- function geometryPipeline(parameters) {
196
- const instances = parameters.instances;
197
- const projection = parameters.projection;
198
- const uintIndexSupport = parameters.elementIndexUintSupported;
199
- const scene3DOnly = parameters.scene3DOnly;
200
- const vertexCacheOptimize = parameters.vertexCacheOptimize;
201
- const compressVertices = parameters.compressVertices;
202
- const modelMatrix = parameters.modelMatrix;
203
-
204
- let i;
205
- let geometry;
206
- let primitiveType;
207
- let length = instances.length;
208
-
209
- for (i = 0; i < length; ++i) {
210
- if (defaultValue.defined(instances[i].geometry)) {
211
- primitiveType = instances[i].geometry.primitiveType;
212
- break;
213
- }
214
- }
215
-
216
- //>>includeStart('debug', pragmas.debug);
217
- for (i = 1; i < length; ++i) {
218
- if (
219
- defaultValue.defined(instances[i].geometry) &&
220
- instances[i].geometry.primitiveType !== primitiveType
221
- ) {
222
- throw new Check.DeveloperError(
223
- "All instance geometries must have the same primitiveType."
224
- );
225
- }
226
- }
227
- //>>includeEnd('debug');
228
-
229
- // Unify to world coordinates before combining.
230
- transformToWorldCoordinates(instances, modelMatrix, scene3DOnly);
231
-
232
- // Clip to IDL
233
- if (!scene3DOnly) {
234
- for (i = 0; i < length; ++i) {
235
- if (defaultValue.defined(instances[i].geometry)) {
236
- GeometryPipeline.GeometryPipeline.splitLongitude(instances[i]);
237
- }
238
- }
239
- }
240
-
241
- addBatchIds(instances);
242
-
243
- // Optimize for vertex shader caches
244
- if (vertexCacheOptimize) {
245
- for (i = 0; i < length; ++i) {
246
- const instance = instances[i];
247
- if (defaultValue.defined(instance.geometry)) {
248
- GeometryPipeline.GeometryPipeline.reorderForPostVertexCache(instance.geometry);
249
- GeometryPipeline.GeometryPipeline.reorderForPreVertexCache(instance.geometry);
250
- } else if (
251
- defaultValue.defined(instance.westHemisphereGeometry) &&
252
- defaultValue.defined(instance.eastHemisphereGeometry)
253
- ) {
254
- GeometryPipeline.GeometryPipeline.reorderForPostVertexCache(
255
- instance.westHemisphereGeometry
256
- );
257
- GeometryPipeline.GeometryPipeline.reorderForPreVertexCache(
258
- instance.westHemisphereGeometry
259
- );
260
-
261
- GeometryPipeline.GeometryPipeline.reorderForPostVertexCache(
262
- instance.eastHemisphereGeometry
263
- );
264
- GeometryPipeline.GeometryPipeline.reorderForPreVertexCache(
265
- instance.eastHemisphereGeometry
266
- );
267
- }
268
- }
269
- }
270
-
271
- // Combine into single geometry for better rendering performance.
272
- let geometries = GeometryPipeline.GeometryPipeline.combineInstances(instances);
273
-
274
- length = geometries.length;
275
- for (i = 0; i < length; ++i) {
276
- geometry = geometries[i];
277
-
278
- // Split positions for GPU RTE
279
- const attributes = geometry.attributes;
280
- if (!scene3DOnly) {
281
- for (const name in attributes) {
282
- if (
283
- attributes.hasOwnProperty(name) &&
284
- attributes[name].componentDatatype === ComponentDatatype.ComponentDatatype.DOUBLE
285
- ) {
286
- const name3D = `${name}3D`;
287
- const name2D = `${name}2D`;
288
-
289
- // Compute 2D positions
290
- GeometryPipeline.GeometryPipeline.projectTo2D(
291
- geometry,
292
- name,
293
- name3D,
294
- name2D,
295
- projection
296
- );
297
- if (defaultValue.defined(geometry.boundingSphere) && name === "position") {
298
- geometry.boundingSphereCV = Transforms.BoundingSphere.fromVertices(
299
- geometry.attributes.position2D.values
300
- );
301
- }
302
-
303
- GeometryPipeline.GeometryPipeline.encodeAttribute(
304
- geometry,
305
- name3D,
306
- `${name3D}High`,
307
- `${name3D}Low`
308
- );
309
- GeometryPipeline.GeometryPipeline.encodeAttribute(
310
- geometry,
311
- name2D,
312
- `${name2D}High`,
313
- `${name2D}Low`
314
- );
315
- }
316
- }
317
- } else {
318
- for (const name in attributes) {
319
- if (
320
- attributes.hasOwnProperty(name) &&
321
- attributes[name].componentDatatype === ComponentDatatype.ComponentDatatype.DOUBLE
322
- ) {
323
- GeometryPipeline.GeometryPipeline.encodeAttribute(
324
- geometry,
325
- name,
326
- `${name}3DHigh`,
327
- `${name}3DLow`
328
- );
329
- }
330
- }
331
- }
332
-
333
- // oct encode and pack normals, compress texture coordinates
334
- if (compressVertices) {
335
- GeometryPipeline.GeometryPipeline.compressVertices(geometry);
336
- }
337
- }
338
-
339
- if (!uintIndexSupport) {
340
- // Break into multiple geometries to fit within unsigned short indices if needed
341
- let splitGeometries = [];
342
- length = geometries.length;
343
- for (i = 0; i < length; ++i) {
344
- geometry = geometries[i];
345
- splitGeometries = splitGeometries.concat(
346
- GeometryPipeline.GeometryPipeline.fitToUnsignedShortIndices(geometry)
347
- );
348
- }
349
-
350
- geometries = splitGeometries;
351
- }
352
-
353
- return geometries;
354
- }
355
-
356
- function createPickOffsets(instances, geometryName, geometries, pickOffsets) {
357
- let offset;
358
- let indexCount;
359
- let geometryIndex;
360
-
361
- const offsetIndex = pickOffsets.length - 1;
362
- if (offsetIndex >= 0) {
363
- const pickOffset = pickOffsets[offsetIndex];
364
- offset = pickOffset.offset + pickOffset.count;
365
- geometryIndex = pickOffset.index;
366
- indexCount = geometries[geometryIndex].indices.length;
367
- } else {
368
- offset = 0;
369
- geometryIndex = 0;
370
- indexCount = geometries[geometryIndex].indices.length;
371
- }
372
-
373
- const length = instances.length;
374
- for (let i = 0; i < length; ++i) {
375
- const instance = instances[i];
376
- const geometry = instance[geometryName];
377
- if (!defaultValue.defined(geometry)) {
378
- continue;
379
- }
380
-
381
- const count = geometry.indices.length;
382
-
383
- if (offset + count > indexCount) {
384
- offset = 0;
385
- indexCount = geometries[++geometryIndex].indices.length;
386
- }
387
-
388
- pickOffsets.push({
389
- index: geometryIndex,
390
- offset: offset,
391
- count: count,
392
- });
393
- offset += count;
394
- }
395
- }
396
-
397
- function createInstancePickOffsets(instances, geometries) {
398
- const pickOffsets = [];
399
- createPickOffsets(instances, "geometry", geometries, pickOffsets);
400
- createPickOffsets(
401
- instances,
402
- "westHemisphereGeometry",
403
- geometries,
404
- pickOffsets
405
- );
406
- createPickOffsets(
407
- instances,
408
- "eastHemisphereGeometry",
409
- geometries,
410
- pickOffsets
411
- );
412
- return pickOffsets;
413
- }
414
-
415
- /**
416
- * @private
417
- */
418
- const PrimitivePipeline = {};
419
-
420
- /**
421
- * @private
422
- */
423
- PrimitivePipeline.combineGeometry = function (parameters) {
424
- let geometries;
425
- let attributeLocations;
426
- const instances = parameters.instances;
427
- const length = instances.length;
428
- let pickOffsets;
429
-
430
- let offsetInstanceExtend;
431
- let hasOffset = false;
432
- if (length > 0) {
433
- geometries = geometryPipeline(parameters);
434
- if (geometries.length > 0) {
435
- attributeLocations = GeometryPipeline.GeometryPipeline.createAttributeLocations(
436
- geometries[0]
437
- );
438
- if (parameters.createPickOffsets) {
439
- pickOffsets = createInstancePickOffsets(instances, geometries);
440
- }
441
- }
442
- if (
443
- defaultValue.defined(instances[0].attributes) &&
444
- defaultValue.defined(instances[0].attributes.offset)
445
- ) {
446
- offsetInstanceExtend = new Array(length);
447
- hasOffset = true;
448
- }
449
- }
450
-
451
- const boundingSpheres = new Array(length);
452
- const boundingSpheresCV = new Array(length);
453
- for (let i = 0; i < length; ++i) {
454
- const instance = instances[i];
455
- const geometry = instance.geometry;
456
- if (defaultValue.defined(geometry)) {
457
- boundingSpheres[i] = geometry.boundingSphere;
458
- boundingSpheresCV[i] = geometry.boundingSphereCV;
459
- if (hasOffset) {
460
- offsetInstanceExtend[i] = instance.geometry.offsetAttribute;
461
- }
462
- }
463
-
464
- const eastHemisphereGeometry = instance.eastHemisphereGeometry;
465
- const westHemisphereGeometry = instance.westHemisphereGeometry;
466
- if (defaultValue.defined(eastHemisphereGeometry) && defaultValue.defined(westHemisphereGeometry)) {
467
- if (
468
- defaultValue.defined(eastHemisphereGeometry.boundingSphere) &&
469
- defaultValue.defined(westHemisphereGeometry.boundingSphere)
470
- ) {
471
- boundingSpheres[i] = Transforms.BoundingSphere.union(
472
- eastHemisphereGeometry.boundingSphere,
473
- westHemisphereGeometry.boundingSphere
474
- );
475
- }
476
- if (
477
- defaultValue.defined(eastHemisphereGeometry.boundingSphereCV) &&
478
- defaultValue.defined(westHemisphereGeometry.boundingSphereCV)
479
- ) {
480
- boundingSpheresCV[i] = Transforms.BoundingSphere.union(
481
- eastHemisphereGeometry.boundingSphereCV,
482
- westHemisphereGeometry.boundingSphereCV
483
- );
484
- }
485
- }
486
- }
487
-
488
- return {
489
- geometries: geometries,
490
- modelMatrix: parameters.modelMatrix,
491
- attributeLocations: attributeLocations,
492
- pickOffsets: pickOffsets,
493
- offsetInstanceExtend: offsetInstanceExtend,
494
- boundingSpheres: boundingSpheres,
495
- boundingSpheresCV: boundingSpheresCV,
496
- };
497
- };
498
-
499
- function transferGeometry(geometry, transferableObjects) {
500
- const attributes = geometry.attributes;
501
- for (const name in attributes) {
502
- if (attributes.hasOwnProperty(name)) {
503
- const attribute = attributes[name];
504
-
505
- if (defaultValue.defined(attribute) && defaultValue.defined(attribute.values)) {
506
- transferableObjects.push(attribute.values.buffer);
507
- }
508
- }
509
- }
510
-
511
- if (defaultValue.defined(geometry.indices)) {
512
- transferableObjects.push(geometry.indices.buffer);
513
- }
514
- }
515
-
516
- function transferGeometries(geometries, transferableObjects) {
517
- const length = geometries.length;
518
- for (let i = 0; i < length; ++i) {
519
- transferGeometry(geometries[i], transferableObjects);
520
- }
521
- }
522
-
523
- // This function was created by simplifying packCreateGeometryResults into a count-only operation.
524
- function countCreateGeometryResults(items) {
525
- let count = 1;
526
- const length = items.length;
527
- for (let i = 0; i < length; i++) {
528
- const geometry = items[i];
529
- ++count;
530
-
531
- if (!defaultValue.defined(geometry)) {
532
- continue;
533
- }
534
-
535
- const attributes = geometry.attributes;
536
-
537
- count +=
538
- 7 +
539
- 2 * Transforms.BoundingSphere.packedLength +
540
- (defaultValue.defined(geometry.indices) ? geometry.indices.length : 0);
541
-
542
- for (const property in attributes) {
543
- if (
544
- attributes.hasOwnProperty(property) &&
545
- defaultValue.defined(attributes[property])
546
- ) {
547
- const attribute = attributes[property];
548
- count += 5 + attribute.values.length;
549
- }
550
- }
551
- }
552
-
553
- return count;
554
- }
555
-
556
- /**
557
- * @private
558
- */
559
- PrimitivePipeline.packCreateGeometryResults = function (
560
- items,
561
- transferableObjects
562
- ) {
563
- const packedData = new Float64Array(countCreateGeometryResults(items));
564
- const stringTable = [];
565
- const stringHash = {};
566
-
567
- const length = items.length;
568
- let count = 0;
569
- packedData[count++] = length;
570
- for (let i = 0; i < length; i++) {
571
- const geometry = items[i];
572
-
573
- const validGeometry = defaultValue.defined(geometry);
574
- packedData[count++] = validGeometry ? 1.0 : 0.0;
575
-
576
- if (!validGeometry) {
577
- continue;
578
- }
579
-
580
- packedData[count++] = geometry.primitiveType;
581
- packedData[count++] = geometry.geometryType;
582
- packedData[count++] = defaultValue.defaultValue(geometry.offsetAttribute, -1);
583
-
584
- const validBoundingSphere = defaultValue.defined(geometry.boundingSphere) ? 1.0 : 0.0;
585
- packedData[count++] = validBoundingSphere;
586
- if (validBoundingSphere) {
587
- Transforms.BoundingSphere.pack(geometry.boundingSphere, packedData, count);
588
- }
589
-
590
- count += Transforms.BoundingSphere.packedLength;
591
-
592
- const validBoundingSphereCV = defaultValue.defined(geometry.boundingSphereCV)
593
- ? 1.0
594
- : 0.0;
595
- packedData[count++] = validBoundingSphereCV;
596
- if (validBoundingSphereCV) {
597
- Transforms.BoundingSphere.pack(geometry.boundingSphereCV, packedData, count);
598
- }
599
-
600
- count += Transforms.BoundingSphere.packedLength;
601
-
602
- const attributes = geometry.attributes;
603
- const attributesToWrite = [];
604
- for (const property in attributes) {
605
- if (
606
- attributes.hasOwnProperty(property) &&
607
- defaultValue.defined(attributes[property])
608
- ) {
609
- attributesToWrite.push(property);
610
- if (!defaultValue.defined(stringHash[property])) {
611
- stringHash[property] = stringTable.length;
612
- stringTable.push(property);
613
- }
614
- }
615
- }
616
-
617
- packedData[count++] = attributesToWrite.length;
618
- for (let q = 0; q < attributesToWrite.length; q++) {
619
- const name = attributesToWrite[q];
620
- const attribute = attributes[name];
621
- packedData[count++] = stringHash[name];
622
- packedData[count++] = attribute.componentDatatype;
623
- packedData[count++] = attribute.componentsPerAttribute;
624
- packedData[count++] = attribute.normalize ? 1 : 0;
625
- packedData[count++] = attribute.values.length;
626
- packedData.set(attribute.values, count);
627
- count += attribute.values.length;
628
- }
629
-
630
- const indicesLength = defaultValue.defined(geometry.indices)
631
- ? geometry.indices.length
632
- : 0;
633
- packedData[count++] = indicesLength;
634
-
635
- if (indicesLength > 0) {
636
- packedData.set(geometry.indices, count);
637
- count += indicesLength;
638
- }
639
- }
640
-
641
- transferableObjects.push(packedData.buffer);
642
-
643
- return {
644
- stringTable: stringTable,
645
- packedData: packedData,
646
- };
647
- };
648
-
649
- /**
650
- * @private
651
- */
652
- PrimitivePipeline.unpackCreateGeometryResults = function (
653
- createGeometryResult
654
- ) {
655
- const stringTable = createGeometryResult.stringTable;
656
- const packedGeometry = createGeometryResult.packedData;
657
-
658
- let i;
659
- const result = new Array(packedGeometry[0]);
660
- let resultIndex = 0;
661
-
662
- let packedGeometryIndex = 1;
663
- while (packedGeometryIndex < packedGeometry.length) {
664
- const valid = packedGeometry[packedGeometryIndex++] === 1.0;
665
- if (!valid) {
666
- result[resultIndex++] = undefined;
667
- continue;
668
- }
669
-
670
- const primitiveType = packedGeometry[packedGeometryIndex++];
671
- const geometryType = packedGeometry[packedGeometryIndex++];
672
- let offsetAttribute = packedGeometry[packedGeometryIndex++];
673
- if (offsetAttribute === -1) {
674
- offsetAttribute = undefined;
675
- }
676
-
677
- let boundingSphere;
678
- let boundingSphereCV;
679
-
680
- const validBoundingSphere = packedGeometry[packedGeometryIndex++] === 1.0;
681
- if (validBoundingSphere) {
682
- boundingSphere = Transforms.BoundingSphere.unpack(
683
- packedGeometry,
684
- packedGeometryIndex
685
- );
686
- }
687
-
688
- packedGeometryIndex += Transforms.BoundingSphere.packedLength;
689
-
690
- const validBoundingSphereCV = packedGeometry[packedGeometryIndex++] === 1.0;
691
- if (validBoundingSphereCV) {
692
- boundingSphereCV = Transforms.BoundingSphere.unpack(
693
- packedGeometry,
694
- packedGeometryIndex
695
- );
696
- }
697
-
698
- packedGeometryIndex += Transforms.BoundingSphere.packedLength;
699
-
700
- let length;
701
- let values;
702
- let componentsPerAttribute;
703
- const attributes = new GeometryAttributes.GeometryAttributes();
704
- const numAttributes = packedGeometry[packedGeometryIndex++];
705
- for (i = 0; i < numAttributes; i++) {
706
- const name = stringTable[packedGeometry[packedGeometryIndex++]];
707
- const componentDatatype = packedGeometry[packedGeometryIndex++];
708
- componentsPerAttribute = packedGeometry[packedGeometryIndex++];
709
- const normalize = packedGeometry[packedGeometryIndex++] !== 0;
710
-
711
- length = packedGeometry[packedGeometryIndex++];
712
- values = ComponentDatatype.ComponentDatatype.createTypedArray(componentDatatype, length);
713
- for (let valuesIndex = 0; valuesIndex < length; valuesIndex++) {
714
- values[valuesIndex] = packedGeometry[packedGeometryIndex++];
715
- }
716
-
717
- attributes[name] = new GeometryAttribute.GeometryAttribute({
718
- componentDatatype: componentDatatype,
719
- componentsPerAttribute: componentsPerAttribute,
720
- normalize: normalize,
721
- values: values,
722
- });
723
- }
724
-
725
- let indices;
726
- length = packedGeometry[packedGeometryIndex++];
727
-
728
- if (length > 0) {
729
- const numberOfVertices = values.length / componentsPerAttribute;
730
- indices = IndexDatatype.IndexDatatype.createTypedArray(numberOfVertices, length);
731
- for (i = 0; i < length; i++) {
732
- indices[i] = packedGeometry[packedGeometryIndex++];
733
- }
734
- }
735
-
736
- result[resultIndex++] = new GeometryAttribute.Geometry({
737
- primitiveType: primitiveType,
738
- geometryType: geometryType,
739
- boundingSphere: boundingSphere,
740
- boundingSphereCV: boundingSphereCV,
741
- indices: indices,
742
- attributes: attributes,
743
- offsetAttribute: offsetAttribute,
744
- });
745
- }
746
-
747
- return result;
748
- };
749
-
750
- function packInstancesForCombine(instances, transferableObjects) {
751
- const length = instances.length;
752
- const packedData = new Float64Array(1 + length * 19);
753
- let count = 0;
754
- packedData[count++] = length;
755
- for (let i = 0; i < length; i++) {
756
- const instance = instances[i];
757
- Matrix2.Matrix4.pack(instance.modelMatrix, packedData, count);
758
- count += Matrix2.Matrix4.packedLength;
759
- if (defaultValue.defined(instance.attributes) && defaultValue.defined(instance.attributes.offset)) {
760
- const values = instance.attributes.offset.value;
761
- packedData[count] = values[0];
762
- packedData[count + 1] = values[1];
763
- packedData[count + 2] = values[2];
764
- }
765
- count += 3;
766
- }
767
- transferableObjects.push(packedData.buffer);
768
-
769
- return packedData;
770
- }
771
-
772
- function unpackInstancesForCombine(data) {
773
- const packedInstances = data;
774
- const result = new Array(packedInstances[0]);
775
- let count = 0;
776
-
777
- let i = 1;
778
- while (i < packedInstances.length) {
779
- const modelMatrix = Matrix2.Matrix4.unpack(packedInstances, i);
780
- let attributes;
781
- i += Matrix2.Matrix4.packedLength;
782
- if (defaultValue.defined(packedInstances[i])) {
783
- attributes = {
784
- offset: new OffsetGeometryInstanceAttribute(
785
- packedInstances[i],
786
- packedInstances[i + 1],
787
- packedInstances[i + 2]
788
- ),
789
- };
790
- }
791
- i += 3;
792
-
793
- result[count++] = {
794
- modelMatrix: modelMatrix,
795
- attributes: attributes,
796
- };
797
- }
798
-
799
- return result;
800
- }
801
-
802
- /**
803
- * @private
804
- */
805
- PrimitivePipeline.packCombineGeometryParameters = function (
806
- parameters,
807
- transferableObjects
808
- ) {
809
- const createGeometryResults = parameters.createGeometryResults;
810
- const length = createGeometryResults.length;
811
-
812
- for (let i = 0; i < length; i++) {
813
- transferableObjects.push(createGeometryResults[i].packedData.buffer);
814
- }
815
-
816
- return {
817
- createGeometryResults: parameters.createGeometryResults,
818
- packedInstances: packInstancesForCombine(
819
- parameters.instances,
820
- transferableObjects
821
- ),
822
- ellipsoid: parameters.ellipsoid,
823
- isGeographic: parameters.projection instanceof Transforms.GeographicProjection,
824
- elementIndexUintSupported: parameters.elementIndexUintSupported,
825
- scene3DOnly: parameters.scene3DOnly,
826
- vertexCacheOptimize: parameters.vertexCacheOptimize,
827
- compressVertices: parameters.compressVertices,
828
- modelMatrix: parameters.modelMatrix,
829
- createPickOffsets: parameters.createPickOffsets,
830
- };
831
- };
832
-
833
- /**
834
- * @private
835
- */
836
- PrimitivePipeline.unpackCombineGeometryParameters = function (
837
- packedParameters
838
- ) {
839
- const instances = unpackInstancesForCombine(packedParameters.packedInstances);
840
- const createGeometryResults = packedParameters.createGeometryResults;
841
- const length = createGeometryResults.length;
842
- let instanceIndex = 0;
843
-
844
- for (let resultIndex = 0; resultIndex < length; resultIndex++) {
845
- const geometries = PrimitivePipeline.unpackCreateGeometryResults(
846
- createGeometryResults[resultIndex]
847
- );
848
- const geometriesLength = geometries.length;
849
- for (
850
- let geometryIndex = 0;
851
- geometryIndex < geometriesLength;
852
- geometryIndex++
853
- ) {
854
- const geometry = geometries[geometryIndex];
855
- const instance = instances[instanceIndex];
856
- instance.geometry = geometry;
857
- ++instanceIndex;
858
- }
859
- }
860
-
861
- const ellipsoid = Matrix3.Ellipsoid.clone(packedParameters.ellipsoid);
862
- const projection = packedParameters.isGeographic
863
- ? new Transforms.GeographicProjection(ellipsoid)
864
- : new WebMercatorProjection.WebMercatorProjection(ellipsoid);
865
-
866
- return {
867
- instances: instances,
868
- ellipsoid: ellipsoid,
869
- projection: projection,
870
- elementIndexUintSupported: packedParameters.elementIndexUintSupported,
871
- scene3DOnly: packedParameters.scene3DOnly,
872
- vertexCacheOptimize: packedParameters.vertexCacheOptimize,
873
- compressVertices: packedParameters.compressVertices,
874
- modelMatrix: Matrix2.Matrix4.clone(packedParameters.modelMatrix),
875
- createPickOffsets: packedParameters.createPickOffsets,
876
- };
877
- };
878
-
879
- function packBoundingSpheres(boundingSpheres) {
880
- const length = boundingSpheres.length;
881
- const bufferLength = 1 + (Transforms.BoundingSphere.packedLength + 1) * length;
882
- const buffer = new Float32Array(bufferLength);
883
-
884
- let bufferIndex = 0;
885
- buffer[bufferIndex++] = length;
886
-
887
- for (let i = 0; i < length; ++i) {
888
- const bs = boundingSpheres[i];
889
- if (!defaultValue.defined(bs)) {
890
- buffer[bufferIndex++] = 0.0;
891
- } else {
892
- buffer[bufferIndex++] = 1.0;
893
- Transforms.BoundingSphere.pack(boundingSpheres[i], buffer, bufferIndex);
894
- }
895
- bufferIndex += Transforms.BoundingSphere.packedLength;
896
- }
897
-
898
- return buffer;
899
- }
900
-
901
- function unpackBoundingSpheres(buffer) {
902
- const result = new Array(buffer[0]);
903
- let count = 0;
904
-
905
- let i = 1;
906
- while (i < buffer.length) {
907
- if (buffer[i++] === 1.0) {
908
- result[count] = Transforms.BoundingSphere.unpack(buffer, i);
909
- }
910
- ++count;
911
- i += Transforms.BoundingSphere.packedLength;
912
- }
913
-
914
- return result;
915
- }
916
-
917
- /**
918
- * @private
919
- */
920
- PrimitivePipeline.packCombineGeometryResults = function (
921
- results,
922
- transferableObjects
923
- ) {
924
- if (defaultValue.defined(results.geometries)) {
925
- transferGeometries(results.geometries, transferableObjects);
926
- }
927
-
928
- const packedBoundingSpheres = packBoundingSpheres(results.boundingSpheres);
929
- const packedBoundingSpheresCV = packBoundingSpheres(
930
- results.boundingSpheresCV
931
- );
932
- transferableObjects.push(
933
- packedBoundingSpheres.buffer,
934
- packedBoundingSpheresCV.buffer
935
- );
936
-
937
- return {
938
- geometries: results.geometries,
939
- attributeLocations: results.attributeLocations,
940
- modelMatrix: results.modelMatrix,
941
- pickOffsets: results.pickOffsets,
942
- offsetInstanceExtend: results.offsetInstanceExtend,
943
- boundingSpheres: packedBoundingSpheres,
944
- boundingSpheresCV: packedBoundingSpheresCV,
945
- };
946
- };
947
-
948
- /**
949
- * @private
950
- */
951
- PrimitivePipeline.unpackCombineGeometryResults = function (packedResult) {
952
- return {
953
- geometries: packedResult.geometries,
954
- attributeLocations: packedResult.attributeLocations,
955
- modelMatrix: packedResult.modelMatrix,
956
- pickOffsets: packedResult.pickOffsets,
957
- offsetInstanceExtend: packedResult.offsetInstanceExtend,
958
- boundingSpheres: unpackBoundingSpheres(packedResult.boundingSpheres),
959
- boundingSpheresCV: unpackBoundingSpheres(packedResult.boundingSpheresCV),
960
- };
961
- };
962
- var PrimitivePipeline$1 = PrimitivePipeline;
963
-
964
- exports.PrimitivePipeline = PrimitivePipeline$1;
965
-
966
- }));