1 line
27 KiB
Plaintext
1 line
27 KiB
Plaintext
{"version":3,"file":"createVectorTilePolygons.js","sources":["../../../../Source/WorkersES6/createVectorTilePolygons.js"],"sourcesContent":["import AttributeCompression from \"../Core/AttributeCompression.js\";\nimport Cartesian3 from \"../Core/Cartesian3.js\";\nimport Cartographic from \"../Core/Cartographic.js\";\nimport Color from \"../Core/Color.js\";\nimport defined from \"../Core/defined.js\";\nimport Ellipsoid from \"../Core/Ellipsoid.js\";\nimport IndexDatatype from \"../Core/IndexDatatype.js\";\nimport CesiumMath from \"../Core/Math.js\";\nimport OrientedBoundingBox from \"../Core/OrientedBoundingBox.js\";\nimport Rectangle from \"../Core/Rectangle.js\";\nimport createTaskProcessorWorker from \"./createTaskProcessorWorker.js\";\n\nconst scratchCenter = new Cartesian3();\nconst scratchEllipsoid = new Ellipsoid();\nconst scratchRectangle = new Rectangle();\nconst scratchScalars = {\n min: undefined,\n max: undefined,\n indexBytesPerElement: undefined,\n};\n\nfunction unpackBuffer(buffer) {\n const packedBuffer = new Float64Array(buffer);\n\n let offset = 0;\n scratchScalars.indexBytesPerElement = packedBuffer[offset++];\n\n scratchScalars.min = packedBuffer[offset++];\n scratchScalars.max = packedBuffer[offset++];\n\n Cartesian3.unpack(packedBuffer, offset, scratchCenter);\n offset += Cartesian3.packedLength;\n\n Ellipsoid.unpack(packedBuffer, offset, scratchEllipsoid);\n offset += Ellipsoid.packedLength;\n\n Rectangle.unpack(packedBuffer, offset, scratchRectangle);\n}\n\nfunction packedBatchedIndicesLength(batchedIndices) {\n const length = batchedIndices.length;\n let count = 0;\n for (let i = 0; i < length; ++i) {\n count += Color.packedLength + 3 + batchedIndices[i].batchIds.length;\n }\n return count;\n}\n\nfunction packBuffer(indexDatatype, boundingVolumes, batchedIndices) {\n const numBVs = boundingVolumes.length;\n const length =\n 1 +\n 1 +\n numBVs * OrientedBoundingBox.packedLength +\n 1 +\n packedBatchedIndicesLength(batchedIndices);\n\n const packedBuffer = new Float64Array(length);\n\n let offset = 0;\n packedBuffer[offset++] = indexDatatype;\n packedBuffer[offset++] = numBVs;\n\n for (let i = 0; i < numBVs; ++i) {\n OrientedBoundingBox.pack(boundingVolumes[i], packedBuffer, offset);\n offset += OrientedBoundingBox.packedLength;\n }\n\n const indicesLength = batchedIndices.length;\n packedBuffer[offset++] = indicesLength;\n\n for (let j = 0; j < indicesLength; ++j) {\n const batchedIndex = batchedIndices[j];\n\n Color.pack(batchedIndex.color, packedBuffer, offset);\n offset += Color.packedLength;\n\n packedBuffer[offset++] = batchedIndex.offset;\n packedBuffer[offset++] = batchedIndex.count;\n\n const batchIds = batchedIndex.batchIds;\n const batchIdsLength = batchIds.length;\n packedBuffer[offset++] = batchIdsLength;\n\n for (let k = 0; k < batchIdsLength; ++k) {\n packedBuffer[offset++] = batchIds[k];\n }\n }\n\n return packedBuffer;\n}\n\nconst maxShort = 32767;\n\nconst scratchEncodedPosition = new Cartesian3();\nconst scratchNormal = new Cartesian3();\nconst scratchScaledNormal = new Cartesian3();\nconst scratchMinHeightPosition = new Cartesian3();\nconst scratchMaxHeightPosition = new Cartesian3();\nconst scratchBVCartographic = new Cartographic();\nconst scratchBVRectangle = new Rectangle();\n\nfunction createVectorTilePolygons(parameters, transferableObjects) {\n unpackBuffer(parameters.packedBuffer);\n\n let indices;\n const indexBytesPerElement = scratchScalars.indexBytesPerElement;\n if (indexBytesPerElement === 2) {\n indices = new Uint16Array(parameters.indices);\n } else {\n indices = new Uint32Array(parameters.indices);\n }\n\n const positions = new Uint16Array(parameters.positions);\n const counts = new Uint32Array(parameters.counts);\n const indexCounts = new Uint32Array(parameters.indexCounts);\n const batchIds = new Uint32Array(parameters.batchIds);\n const batchTableColors = new Uint32Array(parameters.batchTableColors);\n\n const boundingVolumes = new Array(counts.length);\n\n const center = scratchCenter;\n const ellipsoid = scratchEllipsoid;\n let rectangle = scratchRectangle;\n const minHeight = scratchScalars.min;\n const maxHeight = scratchScalars.max;\n\n let minimumHeights = parameters.minimumHeights;\n let maximumHeights = parameters.maximumHeights;\n if (defined(minimumHeights) && defined(maximumHeights)) {\n minimumHeights = new Float32Array(minimumHeights);\n maximumHeights = new Float32Array(maximumHeights);\n }\n\n let i;\n let j;\n let rgba;\n\n const positionsLength = positions.length / 2;\n const uBuffer = positions.subarray(0, positionsLength);\n const vBuffer = positions.subarray(positionsLength, 2 * positionsLength);\n AttributeCompression.zigZagDeltaDecode(uBuffer, vBuffer);\n\n const decodedPositions = new Float64Array(positionsLength * 3);\n for (i = 0; i < positionsLength; ++i) {\n const u = uBuffer[i];\n const v = vBuffer[i];\n\n const x = CesiumMath.lerp(rectangle.west, rectangle.east, u / maxShort);\n const y = CesiumMath.lerp(rectangle.south, rectangle.north, v / maxShort);\n\n const cart = Cartographic.fromRadians(x, y, 0.0, scratchBVCartographic);\n const decodedPosition = ellipsoid.cartographicToCartesian(\n cart,\n scratchEncodedPosition\n );\n Cartesian3.pack(decodedPosition, decodedPositions, i * 3);\n }\n\n const countsLength = counts.length;\n const offsets = new Array(countsLength);\n const indexOffsets = new Array(countsLength);\n let currentOffset = 0;\n let currentIndexOffset = 0;\n for (i = 0; i < countsLength; ++i) {\n offsets[i] = currentOffset;\n indexOffsets[i] = currentIndexOffset;\n\n currentOffset += counts[i];\n currentIndexOffset += indexCounts[i];\n }\n\n const batchedPositions = new Float32Array(positionsLength * 3 * 2);\n const batchedIds = new Uint16Array(positionsLength * 2);\n const batchedIndexOffsets = new Uint32Array(indexOffsets.length);\n const batchedIndexCounts = new Uint32Array(indexCounts.length);\n let batchedIndices = [];\n\n const colorToBuffers = {};\n for (i = 0; i < countsLength; ++i) {\n rgba = batchTableColors[i];\n if (!defined(colorToBuffers[rgba])) {\n colorToBuffers[rgba] = {\n positionLength: counts[i],\n indexLength: indexCounts[i],\n offset: 0,\n indexOffset: 0,\n batchIds: [i],\n };\n } else {\n colorToBuffers[rgba].positionLength += counts[i];\n colorToBuffers[rgba].indexLength += indexCounts[i];\n colorToBuffers[rgba].batchIds.push(i);\n }\n }\n\n // get the offsets and counts for the positions and indices of each primitive\n let buffer;\n let byColorPositionOffset = 0;\n let byColorIndexOffset = 0;\n for (rgba in colorToBuffers) {\n if (colorToBuffers.hasOwnProperty(rgba)) {\n buffer = colorToBuffers[rgba];\n buffer.offset = byColorPositionOffset;\n buffer.indexOffset = byColorIndexOffset;\n\n const positionLength = buffer.positionLength * 2;\n const indexLength = buffer.indexLength * 2 + buffer.positionLength * 6;\n\n byColorPositionOffset += positionLength;\n byColorIndexOffset += indexLength;\n\n buffer.indexLength = indexLength;\n }\n }\n\n const batchedDrawCalls = [];\n\n for (rgba in colorToBuffers) {\n if (colorToBuffers.hasOwnProperty(rgba)) {\n buffer = colorToBuffers[rgba];\n\n batchedDrawCalls.push({\n color: Color.fromRgba(parseInt(rgba)),\n offset: buffer.indexOffset,\n count: buffer.indexLength,\n batchIds: buffer.batchIds,\n });\n }\n }\n\n for (i = 0; i < countsLength; ++i) {\n rgba = batchTableColors[i];\n\n buffer = colorToBuffers[rgba];\n const positionOffset = buffer.offset;\n let positionIndex = positionOffset * 3;\n let batchIdIndex = positionOffset;\n\n const polygonOffset = offsets[i];\n const polygonCount = counts[i];\n const batchId = batchIds[i];\n\n let polygonMinimumHeight = minHeight;\n let polygonMaximumHeight = maxHeight;\n if (defined(minimumHeights) && defined(maximumHeights)) {\n polygonMinimumHeight = minimumHeights[i];\n polygonMaximumHeight = maximumHeights[i];\n }\n\n let minLat = Number.POSITIVE_INFINITY;\n let maxLat = Number.NEGATIVE_INFINITY;\n let minLon = Number.POSITIVE_INFINITY;\n let maxLon = Number.NEGATIVE_INFINITY;\n\n for (j = 0; j < polygonCount; ++j) {\n const position = Cartesian3.unpack(\n decodedPositions,\n polygonOffset * 3 + j * 3,\n scratchEncodedPosition\n );\n ellipsoid.scaleToGeodeticSurface(position, position);\n\n const carto = ellipsoid.cartesianToCartographic(\n position,\n scratchBVCartographic\n );\n const lat = carto.latitude;\n const lon = carto.longitude;\n\n minLat = Math.min(lat, minLat);\n maxLat = Math.max(lat, maxLat);\n minLon = Math.min(lon, minLon);\n maxLon = Math.max(lon, maxLon);\n\n const normal = ellipsoid.geodeticSurfaceNormal(position, scratchNormal);\n let scaledNormal = Cartesian3.multiplyByScalar(\n normal,\n polygonMinimumHeight,\n scratchScaledNormal\n );\n const minHeightPosition = Cartesian3.add(\n position,\n scaledNormal,\n scratchMinHeightPosition\n );\n\n scaledNormal = Cartesian3.multiplyByScalar(\n normal,\n polygonMaximumHeight,\n scaledNormal\n );\n const maxHeightPosition = Cartesian3.add(\n position,\n scaledNormal,\n scratchMaxHeightPosition\n );\n\n Cartesian3.subtract(maxHeightPosition, center, maxHeightPosition);\n Cartesian3.subtract(minHeightPosition, center, minHeightPosition);\n\n Cartesian3.pack(maxHeightPosition, batchedPositions, positionIndex);\n Cartesian3.pack(minHeightPosition, batchedPositions, positionIndex + 3);\n\n batchedIds[batchIdIndex] = batchId;\n batchedIds[batchIdIndex + 1] = batchId;\n\n positionIndex += 6;\n batchIdIndex += 2;\n }\n\n rectangle = scratchBVRectangle;\n rectangle.west = minLon;\n rectangle.east = maxLon;\n rectangle.south = minLat;\n rectangle.north = maxLat;\n\n boundingVolumes[i] = OrientedBoundingBox.fromRectangle(\n rectangle,\n minHeight,\n maxHeight,\n ellipsoid\n );\n\n let indicesIndex = buffer.indexOffset;\n\n const indexOffset = indexOffsets[i];\n const indexCount = indexCounts[i];\n\n batchedIndexOffsets[i] = indicesIndex;\n\n for (j = 0; j < indexCount; j += 3) {\n const i0 = indices[indexOffset + j] - polygonOffset;\n const i1 = indices[indexOffset + j + 1] - polygonOffset;\n const i2 = indices[indexOffset + j + 2] - polygonOffset;\n\n // triangle on the top of the extruded polygon\n batchedIndices[indicesIndex++] = i0 * 2 + positionOffset;\n batchedIndices[indicesIndex++] = i1 * 2 + positionOffset;\n batchedIndices[indicesIndex++] = i2 * 2 + positionOffset;\n\n // triangle on the bottom of the extruded polygon\n batchedIndices[indicesIndex++] = i2 * 2 + 1 + positionOffset;\n batchedIndices[indicesIndex++] = i1 * 2 + 1 + positionOffset;\n batchedIndices[indicesIndex++] = i0 * 2 + 1 + positionOffset;\n }\n\n // indices for the walls of the extruded polygon\n for (j = 0; j < polygonCount; ++j) {\n const v0 = j;\n const v1 = (j + 1) % polygonCount;\n\n batchedIndices[indicesIndex++] = v0 * 2 + 1 + positionOffset;\n batchedIndices[indicesIndex++] = v1 * 2 + positionOffset;\n batchedIndices[indicesIndex++] = v0 * 2 + positionOffset;\n\n batchedIndices[indicesIndex++] = v0 * 2 + 1 + positionOffset;\n batchedIndices[indicesIndex++] = v1 * 2 + 1 + positionOffset;\n batchedIndices[indicesIndex++] = v1 * 2 + positionOffset;\n }\n\n buffer.offset += polygonCount * 2;\n buffer.indexOffset = indicesIndex;\n\n batchedIndexCounts[i] = indicesIndex - batchedIndexOffsets[i];\n }\n\n batchedIndices = IndexDatatype.createTypedArray(\n batchedPositions.length / 3,\n batchedIndices\n );\n\n const batchedIndicesLength = batchedDrawCalls.length;\n for (let m = 0; m < batchedIndicesLength; ++m) {\n const tempIds = batchedDrawCalls[m].batchIds;\n let count = 0;\n const tempIdsLength = tempIds.length;\n for (let n = 0; n < tempIdsLength; ++n) {\n count += batchedIndexCounts[tempIds[n]];\n }\n batchedDrawCalls[m].count = count;\n }\n\n const indexDatatype =\n batchedIndices.BYTES_PER_ELEMENT === 2\n ? IndexDatatype.UNSIGNED_SHORT\n : IndexDatatype.UNSIGNED_INT;\n const packedBuffer = packBuffer(\n indexDatatype,\n boundingVolumes,\n batchedDrawCalls\n );\n\n transferableObjects.push(\n batchedPositions.buffer,\n batchedIndices.buffer,\n batchedIndexOffsets.buffer,\n batchedIndexCounts.buffer,\n batchedIds.buffer,\n packedBuffer.buffer\n );\n\n return {\n positions: batchedPositions.buffer,\n indices: batchedIndices.buffer,\n indexOffsets: batchedIndexOffsets.buffer,\n indexCounts: batchedIndexCounts.buffer,\n batchIds: batchedIds.buffer,\n packedBuffer: packedBuffer.buffer,\n };\n}\nexport default createTaskProcessorWorker(createVectorTilePolygons);\n"],"names":["Cartesian3","Ellipsoid","Rectangle","Color","OrientedBoundingBox","Cartographic","defined","AttributeCompression","CesiumMath","IndexDatatype"],"mappings":"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"} |