1 line
59 KiB
Plaintext
1 line
59 KiB
Plaintext
{"version":3,"file":"upsampleQuantizedTerrainMesh.js","sources":["../../../../Source/Core/Intersections2D.js","../../../../Source/WorkersES6/upsampleQuantizedTerrainMesh.js"],"sourcesContent":["import Cartesian2 from \"./Cartesian2.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport Check from \"./Check.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\n\n/**\n * Contains functions for operating on 2D triangles.\n *\n * @namespace Intersections2D\n */\nconst Intersections2D = {};\n\n/**\n * Splits a 2D triangle at given axis-aligned threshold value and returns the resulting\n * polygon on a given side of the threshold. The resulting polygon may have 0, 1, 2,\n * 3, or 4 vertices.\n *\n * @param {Number} threshold The threshold coordinate value at which to clip the triangle.\n * @param {Boolean} keepAbove true to keep the portion of the triangle above the threshold, or false\n * to keep the portion below.\n * @param {Number} u0 The coordinate of the first vertex in the triangle, in counter-clockwise order.\n * @param {Number} u1 The coordinate of the second vertex in the triangle, in counter-clockwise order.\n * @param {Number} u2 The coordinate of the third vertex in the triangle, in counter-clockwise order.\n * @param {Number[]} [result] The array into which to copy the result. If this parameter is not supplied,\n * a new array is constructed and returned.\n * @returns {Number[]} The polygon that results after the clip, specified as a list of\n * vertices. The vertices are specified in counter-clockwise order.\n * Each vertex is either an index from the existing list (identified as\n * a 0, 1, or 2) or -1 indicating a new vertex not in the original triangle.\n * For new vertices, the -1 is followed by three additional numbers: the\n * index of each of the two original vertices forming the line segment that\n * the new vertex lies on, and the fraction of the distance from the first\n * vertex to the second one.\n *\n * @example\n * const result = Cesium.Intersections2D.clipTriangleAtAxisAlignedThreshold(0.5, false, 0.2, 0.6, 0.4);\n * // result === [2, 0, -1, 1, 0, 0.25, -1, 1, 2, 0.5]\n */\nIntersections2D.clipTriangleAtAxisAlignedThreshold = function (\n threshold,\n keepAbove,\n u0,\n u1,\n u2,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(threshold)) {\n throw new DeveloperError(\"threshold is required.\");\n }\n if (!defined(keepAbove)) {\n throw new DeveloperError(\"keepAbove is required.\");\n }\n if (!defined(u0)) {\n throw new DeveloperError(\"u0 is required.\");\n }\n if (!defined(u1)) {\n throw new DeveloperError(\"u1 is required.\");\n }\n if (!defined(u2)) {\n throw new DeveloperError(\"u2 is required.\");\n }\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n result = [];\n } else {\n result.length = 0;\n }\n\n let u0Behind;\n let u1Behind;\n let u2Behind;\n if (keepAbove) {\n u0Behind = u0 < threshold;\n u1Behind = u1 < threshold;\n u2Behind = u2 < threshold;\n } else {\n u0Behind = u0 > threshold;\n u1Behind = u1 > threshold;\n u2Behind = u2 > threshold;\n }\n\n const numBehind = u0Behind + u1Behind + u2Behind;\n\n let u01Ratio;\n let u02Ratio;\n let u12Ratio;\n let u10Ratio;\n let u20Ratio;\n let u21Ratio;\n\n if (numBehind === 1) {\n if (u0Behind) {\n u01Ratio = (threshold - u0) / (u1 - u0);\n u02Ratio = (threshold - u0) / (u2 - u0);\n\n result.push(1);\n\n result.push(2);\n\n if (u02Ratio !== 1.0) {\n result.push(-1);\n result.push(0);\n result.push(2);\n result.push(u02Ratio);\n }\n\n if (u01Ratio !== 1.0) {\n result.push(-1);\n result.push(0);\n result.push(1);\n result.push(u01Ratio);\n }\n } else if (u1Behind) {\n u12Ratio = (threshold - u1) / (u2 - u1);\n u10Ratio = (threshold - u1) / (u0 - u1);\n\n result.push(2);\n\n result.push(0);\n\n if (u10Ratio !== 1.0) {\n result.push(-1);\n result.push(1);\n result.push(0);\n result.push(u10Ratio);\n }\n\n if (u12Ratio !== 1.0) {\n result.push(-1);\n result.push(1);\n result.push(2);\n result.push(u12Ratio);\n }\n } else if (u2Behind) {\n u20Ratio = (threshold - u2) / (u0 - u2);\n u21Ratio = (threshold - u2) / (u1 - u2);\n\n result.push(0);\n\n result.push(1);\n\n if (u21Ratio !== 1.0) {\n result.push(-1);\n result.push(2);\n result.push(1);\n result.push(u21Ratio);\n }\n\n if (u20Ratio !== 1.0) {\n result.push(-1);\n result.push(2);\n result.push(0);\n result.push(u20Ratio);\n }\n }\n } else if (numBehind === 2) {\n if (!u0Behind && u0 !== threshold) {\n u10Ratio = (threshold - u1) / (u0 - u1);\n u20Ratio = (threshold - u2) / (u0 - u2);\n\n result.push(0);\n\n result.push(-1);\n result.push(1);\n result.push(0);\n result.push(u10Ratio);\n\n result.push(-1);\n result.push(2);\n result.push(0);\n result.push(u20Ratio);\n } else if (!u1Behind && u1 !== threshold) {\n u21Ratio = (threshold - u2) / (u1 - u2);\n u01Ratio = (threshold - u0) / (u1 - u0);\n\n result.push(1);\n\n result.push(-1);\n result.push(2);\n result.push(1);\n result.push(u21Ratio);\n\n result.push(-1);\n result.push(0);\n result.push(1);\n result.push(u01Ratio);\n } else if (!u2Behind && u2 !== threshold) {\n u02Ratio = (threshold - u0) / (u2 - u0);\n u12Ratio = (threshold - u1) / (u2 - u1);\n\n result.push(2);\n\n result.push(-1);\n result.push(0);\n result.push(2);\n result.push(u02Ratio);\n\n result.push(-1);\n result.push(1);\n result.push(2);\n result.push(u12Ratio);\n }\n } else if (numBehind !== 3) {\n // Completely in front of threshold\n result.push(0);\n result.push(1);\n result.push(2);\n }\n // else Completely behind threshold\n\n return result;\n};\n\n/**\n * Compute the barycentric coordinates of a 2D position within a 2D triangle.\n *\n * @param {Number} x The x coordinate of the position for which to find the barycentric coordinates.\n * @param {Number} y The y coordinate of the position for which to find the barycentric coordinates.\n * @param {Number} x1 The x coordinate of the triangle's first vertex.\n * @param {Number} y1 The y coordinate of the triangle's first vertex.\n * @param {Number} x2 The x coordinate of the triangle's second vertex.\n * @param {Number} y2 The y coordinate of the triangle's second vertex.\n * @param {Number} x3 The x coordinate of the triangle's third vertex.\n * @param {Number} y3 The y coordinate of the triangle's third vertex.\n * @param {Cartesian3} [result] The instance into to which to copy the result. If this parameter\n * is undefined, a new instance is created and returned.\n * @returns {Cartesian3} The barycentric coordinates of the position within the triangle.\n *\n * @example\n * const result = Cesium.Intersections2D.computeBarycentricCoordinates(0.0, 0.0, 0.0, 1.0, -1, -0.5, 1, -0.5);\n * // result === new Cesium.Cartesian3(1.0 / 3.0, 1.0 / 3.0, 1.0 / 3.0);\n */\nIntersections2D.computeBarycentricCoordinates = function (\n x,\n y,\n x1,\n y1,\n x2,\n y2,\n x3,\n y3,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(x)) {\n throw new DeveloperError(\"x is required.\");\n }\n if (!defined(y)) {\n throw new DeveloperError(\"y is required.\");\n }\n if (!defined(x1)) {\n throw new DeveloperError(\"x1 is required.\");\n }\n if (!defined(y1)) {\n throw new DeveloperError(\"y1 is required.\");\n }\n if (!defined(x2)) {\n throw new DeveloperError(\"x2 is required.\");\n }\n if (!defined(y2)) {\n throw new DeveloperError(\"y2 is required.\");\n }\n if (!defined(x3)) {\n throw new DeveloperError(\"x3 is required.\");\n }\n if (!defined(y3)) {\n throw new DeveloperError(\"y3 is required.\");\n }\n //>>includeEnd('debug');\n\n const x1mx3 = x1 - x3;\n const x3mx2 = x3 - x2;\n const y2my3 = y2 - y3;\n const y1my3 = y1 - y3;\n const inverseDeterminant = 1.0 / (y2my3 * x1mx3 + x3mx2 * y1my3);\n const ymy3 = y - y3;\n const xmx3 = x - x3;\n const l1 = (y2my3 * xmx3 + x3mx2 * ymy3) * inverseDeterminant;\n const l2 = (-y1my3 * xmx3 + x1mx3 * ymy3) * inverseDeterminant;\n const l3 = 1.0 - l1 - l2;\n\n if (defined(result)) {\n result.x = l1;\n result.y = l2;\n result.z = l3;\n return result;\n }\n return new Cartesian3(l1, l2, l3);\n};\n\n/**\n * Compute the intersection between 2 line segments\n *\n * @param {Number} x00 The x coordinate of the first line's first vertex.\n * @param {Number} y00 The y coordinate of the first line's first vertex.\n * @param {Number} x01 The x coordinate of the first line's second vertex.\n * @param {Number} y01 The y coordinate of the first line's second vertex.\n * @param {Number} x10 The x coordinate of the second line's first vertex.\n * @param {Number} y10 The y coordinate of the second line's first vertex.\n * @param {Number} x11 The x coordinate of the second line's second vertex.\n * @param {Number} y11 The y coordinate of the second line's second vertex.\n * @param {Cartesian2} [result] The instance into to which to copy the result. If this parameter\n * is undefined, a new instance is created and returned.\n * @returns {Cartesian2} The intersection point, undefined if there is no intersection point or lines are coincident.\n *\n * @example\n * const result = Cesium.Intersections2D.computeLineSegmentLineSegmentIntersection(0.0, 0.0, 0.0, 2.0, -1, 1, 1, 1);\n * // result === new Cesium.Cartesian2(0.0, 1.0);\n */\nIntersections2D.computeLineSegmentLineSegmentIntersection = function (\n x00,\n y00,\n x01,\n y01,\n x10,\n y10,\n x11,\n y11,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"x00\", x00);\n Check.typeOf.number(\"y00\", y00);\n Check.typeOf.number(\"x01\", x01);\n Check.typeOf.number(\"y01\", y01);\n Check.typeOf.number(\"x10\", x10);\n Check.typeOf.number(\"y10\", y10);\n Check.typeOf.number(\"x11\", x11);\n Check.typeOf.number(\"y11\", y11);\n //>>includeEnd('debug');\n\n const numerator1A = (x11 - x10) * (y00 - y10) - (y11 - y10) * (x00 - x10);\n const numerator1B = (x01 - x00) * (y00 - y10) - (y01 - y00) * (x00 - x10);\n const denominator1 = (y11 - y10) * (x01 - x00) - (x11 - x10) * (y01 - y00);\n\n // If denominator = 0, then lines are parallel. If denominator = 0 and both numerators are 0, then coincident\n if (denominator1 === 0) {\n return;\n }\n\n const ua1 = numerator1A / denominator1;\n const ub1 = numerator1B / denominator1;\n\n if (ua1 >= 0 && ua1 <= 1 && ub1 >= 0 && ub1 <= 1) {\n if (!defined(result)) {\n result = new Cartesian2();\n }\n\n result.x = x00 + ua1 * (x01 - x00);\n result.y = y00 + ua1 * (y01 - y00);\n\n return result;\n }\n};\nexport default Intersections2D;\n","import AttributeCompression from \"../Core/AttributeCompression.js\";\nimport BoundingSphere from \"../Core/BoundingSphere.js\";\nimport Cartesian2 from \"../Core/Cartesian2.js\";\nimport Cartesian3 from \"../Core/Cartesian3.js\";\nimport Cartographic from \"../Core/Cartographic.js\";\nimport defined from \"../Core/defined.js\";\nimport Ellipsoid from \"../Core/Ellipsoid.js\";\nimport EllipsoidalOccluder from \"../Core/EllipsoidalOccluder.js\";\nimport IndexDatatype from \"../Core/IndexDatatype.js\";\nimport Intersections2D from \"../Core/Intersections2D.js\";\nimport CesiumMath from \"../Core/Math.js\";\nimport OrientedBoundingBox from \"../Core/OrientedBoundingBox.js\";\nimport Rectangle from \"../Core/Rectangle.js\";\nimport TerrainEncoding from \"../Core/TerrainEncoding.js\";\nimport createTaskProcessorWorker from \"./createTaskProcessorWorker.js\";\n\nconst maxShort = 32767;\nconst halfMaxShort = (maxShort / 2) | 0;\n\nconst clipScratch = [];\nconst clipScratch2 = [];\nconst verticesScratch = [];\nconst cartographicScratch = new Cartographic();\nlet cartesian3Scratch = new Cartesian3();\nconst uScratch = [];\nconst vScratch = [];\nconst heightScratch = [];\nconst indicesScratch = [];\nconst normalsScratch = [];\nconst horizonOcclusionPointScratch = new Cartesian3();\nconst boundingSphereScratch = new BoundingSphere();\nconst orientedBoundingBoxScratch = new OrientedBoundingBox();\nconst decodeTexCoordsScratch = new Cartesian2();\nconst octEncodedNormalScratch = new Cartesian3();\n\nfunction upsampleQuantizedTerrainMesh(parameters, transferableObjects) {\n const isEastChild = parameters.isEastChild;\n const isNorthChild = parameters.isNorthChild;\n\n const minU = isEastChild ? halfMaxShort : 0;\n const maxU = isEastChild ? maxShort : halfMaxShort;\n const minV = isNorthChild ? halfMaxShort : 0;\n const maxV = isNorthChild ? maxShort : halfMaxShort;\n\n const uBuffer = uScratch;\n const vBuffer = vScratch;\n const heightBuffer = heightScratch;\n const normalBuffer = normalsScratch;\n\n uBuffer.length = 0;\n vBuffer.length = 0;\n heightBuffer.length = 0;\n normalBuffer.length = 0;\n\n const indices = indicesScratch;\n indices.length = 0;\n\n const vertexMap = {};\n\n const parentVertices = parameters.vertices;\n let parentIndices = parameters.indices;\n parentIndices = parentIndices.subarray(0, parameters.indexCountWithoutSkirts);\n\n const encoding = TerrainEncoding.clone(parameters.encoding);\n const hasVertexNormals = encoding.hasVertexNormals;\n\n let vertexCount = 0;\n const quantizedVertexCount = parameters.vertexCountWithoutSkirts;\n\n const parentMinimumHeight = parameters.minimumHeight;\n const parentMaximumHeight = parameters.maximumHeight;\n\n const parentUBuffer = new Array(quantizedVertexCount);\n const parentVBuffer = new Array(quantizedVertexCount);\n const parentHeightBuffer = new Array(quantizedVertexCount);\n const parentNormalBuffer = hasVertexNormals\n ? new Array(quantizedVertexCount * 2)\n : undefined;\n\n const threshold = 20;\n let height;\n\n let i, n;\n let u, v;\n for (i = 0, n = 0; i < quantizedVertexCount; ++i, n += 2) {\n const texCoords = encoding.decodeTextureCoordinates(\n parentVertices,\n i,\n decodeTexCoordsScratch\n );\n height = encoding.decodeHeight(parentVertices, i);\n\n u = CesiumMath.clamp((texCoords.x * maxShort) | 0, 0, maxShort);\n v = CesiumMath.clamp((texCoords.y * maxShort) | 0, 0, maxShort);\n parentHeightBuffer[i] = CesiumMath.clamp(\n (((height - parentMinimumHeight) /\n (parentMaximumHeight - parentMinimumHeight)) *\n maxShort) |\n 0,\n 0,\n maxShort\n );\n\n if (u < threshold) {\n u = 0;\n }\n\n if (v < threshold) {\n v = 0;\n }\n\n if (maxShort - u < threshold) {\n u = maxShort;\n }\n\n if (maxShort - v < threshold) {\n v = maxShort;\n }\n\n parentUBuffer[i] = u;\n parentVBuffer[i] = v;\n\n if (hasVertexNormals) {\n const encodedNormal = encoding.getOctEncodedNormal(\n parentVertices,\n i,\n octEncodedNormalScratch\n );\n parentNormalBuffer[n] = encodedNormal.x;\n parentNormalBuffer[n + 1] = encodedNormal.y;\n }\n\n if (\n ((isEastChild && u >= halfMaxShort) ||\n (!isEastChild && u <= halfMaxShort)) &&\n ((isNorthChild && v >= halfMaxShort) ||\n (!isNorthChild && v <= halfMaxShort))\n ) {\n vertexMap[i] = vertexCount;\n uBuffer.push(u);\n vBuffer.push(v);\n heightBuffer.push(parentHeightBuffer[i]);\n if (hasVertexNormals) {\n normalBuffer.push(parentNormalBuffer[n]);\n normalBuffer.push(parentNormalBuffer[n + 1]);\n }\n\n ++vertexCount;\n }\n }\n\n const triangleVertices = [];\n triangleVertices.push(new Vertex());\n triangleVertices.push(new Vertex());\n triangleVertices.push(new Vertex());\n\n const clippedTriangleVertices = [];\n clippedTriangleVertices.push(new Vertex());\n clippedTriangleVertices.push(new Vertex());\n clippedTriangleVertices.push(new Vertex());\n\n let clippedIndex;\n let clipped2;\n\n for (i = 0; i < parentIndices.length; i += 3) {\n const i0 = parentIndices[i];\n const i1 = parentIndices[i + 1];\n const i2 = parentIndices[i + 2];\n\n const u0 = parentUBuffer[i0];\n const u1 = parentUBuffer[i1];\n const u2 = parentUBuffer[i2];\n\n triangleVertices[0].initializeIndexed(\n parentUBuffer,\n parentVBuffer,\n parentHeightBuffer,\n parentNormalBuffer,\n i0\n );\n triangleVertices[1].initializeIndexed(\n parentUBuffer,\n parentVBuffer,\n parentHeightBuffer,\n parentNormalBuffer,\n i1\n );\n triangleVertices[2].initializeIndexed(\n parentUBuffer,\n parentVBuffer,\n parentHeightBuffer,\n parentNormalBuffer,\n i2\n );\n\n // Clip triangle on the east-west boundary.\n const clipped = Intersections2D.clipTriangleAtAxisAlignedThreshold(\n halfMaxShort,\n isEastChild,\n u0,\n u1,\n u2,\n clipScratch\n );\n\n // Get the first clipped triangle, if any.\n clippedIndex = 0;\n\n if (clippedIndex >= clipped.length) {\n continue;\n }\n clippedIndex = clippedTriangleVertices[0].initializeFromClipResult(\n clipped,\n clippedIndex,\n triangleVertices\n );\n\n if (clippedIndex >= clipped.length) {\n continue;\n }\n clippedIndex = clippedTriangleVertices[1].initializeFromClipResult(\n clipped,\n clippedIndex,\n triangleVertices\n );\n\n if (clippedIndex >= clipped.length) {\n continue;\n }\n clippedIndex = clippedTriangleVertices[2].initializeFromClipResult(\n clipped,\n clippedIndex,\n triangleVertices\n );\n\n // Clip the triangle against the North-south boundary.\n clipped2 = Intersections2D.clipTriangleAtAxisAlignedThreshold(\n halfMaxShort,\n isNorthChild,\n clippedTriangleVertices[0].getV(),\n clippedTriangleVertices[1].getV(),\n clippedTriangleVertices[2].getV(),\n clipScratch2\n );\n addClippedPolygon(\n uBuffer,\n vBuffer,\n heightBuffer,\n normalBuffer,\n indices,\n vertexMap,\n clipped2,\n clippedTriangleVertices,\n hasVertexNormals\n );\n\n // If there's another vertex in the original clipped result,\n // it forms a second triangle. Clip it as well.\n if (clippedIndex < clipped.length) {\n clippedTriangleVertices[2].clone(clippedTriangleVertices[1]);\n clippedTriangleVertices[2].initializeFromClipResult(\n clipped,\n clippedIndex,\n triangleVertices\n );\n\n clipped2 = Intersections2D.clipTriangleAtAxisAlignedThreshold(\n halfMaxShort,\n isNorthChild,\n clippedTriangleVertices[0].getV(),\n clippedTriangleVertices[1].getV(),\n clippedTriangleVertices[2].getV(),\n clipScratch2\n );\n addClippedPolygon(\n uBuffer,\n vBuffer,\n heightBuffer,\n normalBuffer,\n indices,\n vertexMap,\n clipped2,\n clippedTriangleVertices,\n hasVertexNormals\n );\n }\n }\n\n const uOffset = isEastChild ? -maxShort : 0;\n const vOffset = isNorthChild ? -maxShort : 0;\n\n const westIndices = [];\n const southIndices = [];\n const eastIndices = [];\n const northIndices = [];\n\n let minimumHeight = Number.MAX_VALUE;\n let maximumHeight = -minimumHeight;\n\n const cartesianVertices = verticesScratch;\n cartesianVertices.length = 0;\n\n const ellipsoid = Ellipsoid.clone(parameters.ellipsoid);\n const rectangle = Rectangle.clone(parameters.childRectangle);\n\n const north = rectangle.north;\n const south = rectangle.south;\n let east = rectangle.east;\n const west = rectangle.west;\n\n if (east < west) {\n east += CesiumMath.TWO_PI;\n }\n\n for (i = 0; i < uBuffer.length; ++i) {\n u = Math.round(uBuffer[i]);\n if (u <= minU) {\n westIndices.push(i);\n u = 0;\n } else if (u >= maxU) {\n eastIndices.push(i);\n u = maxShort;\n } else {\n u = u * 2 + uOffset;\n }\n\n uBuffer[i] = u;\n\n v = Math.round(vBuffer[i]);\n if (v <= minV) {\n southIndices.push(i);\n v = 0;\n } else if (v >= maxV) {\n northIndices.push(i);\n v = maxShort;\n } else {\n v = v * 2 + vOffset;\n }\n\n vBuffer[i] = v;\n\n height = CesiumMath.lerp(\n parentMinimumHeight,\n parentMaximumHeight,\n heightBuffer[i] / maxShort\n );\n if (height < minimumHeight) {\n minimumHeight = height;\n }\n if (height > maximumHeight) {\n maximumHeight = height;\n }\n\n heightBuffer[i] = height;\n\n cartographicScratch.longitude = CesiumMath.lerp(west, east, u / maxShort);\n cartographicScratch.latitude = CesiumMath.lerp(south, north, v / maxShort);\n cartographicScratch.height = height;\n\n ellipsoid.cartographicToCartesian(cartographicScratch, cartesian3Scratch);\n\n cartesianVertices.push(cartesian3Scratch.x);\n cartesianVertices.push(cartesian3Scratch.y);\n cartesianVertices.push(cartesian3Scratch.z);\n }\n\n const boundingSphere = BoundingSphere.fromVertices(\n cartesianVertices,\n Cartesian3.ZERO,\n 3,\n boundingSphereScratch\n );\n const orientedBoundingBox = OrientedBoundingBox.fromRectangle(\n rectangle,\n minimumHeight,\n maximumHeight,\n ellipsoid,\n orientedBoundingBoxScratch\n );\n\n const occluder = new EllipsoidalOccluder(ellipsoid);\n const horizonOcclusionPoint = occluder.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid(\n boundingSphere.center,\n cartesianVertices,\n 3,\n boundingSphere.center,\n minimumHeight,\n horizonOcclusionPointScratch\n );\n\n const heightRange = maximumHeight - minimumHeight;\n\n const vertices = new Uint16Array(\n uBuffer.length + vBuffer.length + heightBuffer.length\n );\n\n for (i = 0; i < uBuffer.length; ++i) {\n vertices[i] = uBuffer[i];\n }\n\n let start = uBuffer.length;\n\n for (i = 0; i < vBuffer.length; ++i) {\n vertices[start + i] = vBuffer[i];\n }\n\n start += vBuffer.length;\n\n for (i = 0; i < heightBuffer.length; ++i) {\n vertices[start + i] =\n (maxShort * (heightBuffer[i] - minimumHeight)) / heightRange;\n }\n\n const indicesTypedArray = IndexDatatype.createTypedArray(\n uBuffer.length,\n indices\n );\n\n let encodedNormals;\n if (hasVertexNormals) {\n const normalArray = new Uint8Array(normalBuffer);\n transferableObjects.push(\n vertices.buffer,\n indicesTypedArray.buffer,\n normalArray.buffer\n );\n encodedNormals = normalArray.buffer;\n } else {\n transferableObjects.push(vertices.buffer, indicesTypedArray.buffer);\n }\n\n return {\n vertices: vertices.buffer,\n encodedNormals: encodedNormals,\n indices: indicesTypedArray.buffer,\n minimumHeight: minimumHeight,\n maximumHeight: maximumHeight,\n westIndices: westIndices,\n southIndices: southIndices,\n eastIndices: eastIndices,\n northIndices: northIndices,\n boundingSphere: boundingSphere,\n orientedBoundingBox: orientedBoundingBox,\n horizonOcclusionPoint: horizonOcclusionPoint,\n };\n}\n\nfunction Vertex() {\n this.vertexBuffer = undefined;\n this.index = undefined;\n this.first = undefined;\n this.second = undefined;\n this.ratio = undefined;\n}\n\nVertex.prototype.clone = function (result) {\n if (!defined(result)) {\n result = new Vertex();\n }\n\n result.uBuffer = this.uBuffer;\n result.vBuffer = this.vBuffer;\n result.heightBuffer = this.heightBuffer;\n result.normalBuffer = this.normalBuffer;\n result.index = this.index;\n result.first = this.first;\n result.second = this.second;\n result.ratio = this.ratio;\n\n return result;\n};\n\nVertex.prototype.initializeIndexed = function (\n uBuffer,\n vBuffer,\n heightBuffer,\n normalBuffer,\n index\n) {\n this.uBuffer = uBuffer;\n this.vBuffer = vBuffer;\n this.heightBuffer = heightBuffer;\n this.normalBuffer = normalBuffer;\n this.index = index;\n this.first = undefined;\n this.second = undefined;\n this.ratio = undefined;\n};\n\nVertex.prototype.initializeFromClipResult = function (\n clipResult,\n index,\n vertices\n) {\n let nextIndex = index + 1;\n\n if (clipResult[index] !== -1) {\n vertices[clipResult[index]].clone(this);\n } else {\n this.vertexBuffer = undefined;\n this.index = undefined;\n this.first = vertices[clipResult[nextIndex]];\n ++nextIndex;\n this.second = vertices[clipResult[nextIndex]];\n ++nextIndex;\n this.ratio = clipResult[nextIndex];\n ++nextIndex;\n }\n\n return nextIndex;\n};\n\nVertex.prototype.getKey = function () {\n if (this.isIndexed()) {\n return this.index;\n }\n return JSON.stringify({\n first: this.first.getKey(),\n second: this.second.getKey(),\n ratio: this.ratio,\n });\n};\n\nVertex.prototype.isIndexed = function () {\n return defined(this.index);\n};\n\nVertex.prototype.getH = function () {\n if (defined(this.index)) {\n return this.heightBuffer[this.index];\n }\n return CesiumMath.lerp(this.first.getH(), this.second.getH(), this.ratio);\n};\n\nVertex.prototype.getU = function () {\n if (defined(this.index)) {\n return this.uBuffer[this.index];\n }\n return CesiumMath.lerp(this.first.getU(), this.second.getU(), this.ratio);\n};\n\nVertex.prototype.getV = function () {\n if (defined(this.index)) {\n return this.vBuffer[this.index];\n }\n return CesiumMath.lerp(this.first.getV(), this.second.getV(), this.ratio);\n};\n\nlet encodedScratch = new Cartesian2();\n// An upsampled triangle may be clipped twice before it is assigned an index\n// In this case, we need a buffer to handle the recursion of getNormalX() and getNormalY().\nlet depth = -1;\nconst cartesianScratch1 = [new Cartesian3(), new Cartesian3()];\nconst cartesianScratch2 = [new Cartesian3(), new Cartesian3()];\nfunction lerpOctEncodedNormal(vertex, result) {\n ++depth;\n\n let first = cartesianScratch1[depth];\n let second = cartesianScratch2[depth];\n\n first = AttributeCompression.octDecode(\n vertex.first.getNormalX(),\n vertex.first.getNormalY(),\n first\n );\n second = AttributeCompression.octDecode(\n vertex.second.getNormalX(),\n vertex.second.getNormalY(),\n second\n );\n cartesian3Scratch = Cartesian3.lerp(\n first,\n second,\n vertex.ratio,\n cartesian3Scratch\n );\n Cartesian3.normalize(cartesian3Scratch, cartesian3Scratch);\n\n AttributeCompression.octEncode(cartesian3Scratch, result);\n\n --depth;\n\n return result;\n}\n\nVertex.prototype.getNormalX = function () {\n if (defined(this.index)) {\n return this.normalBuffer[this.index * 2];\n }\n\n encodedScratch = lerpOctEncodedNormal(this, encodedScratch);\n return encodedScratch.x;\n};\n\nVertex.prototype.getNormalY = function () {\n if (defined(this.index)) {\n return this.normalBuffer[this.index * 2 + 1];\n }\n\n encodedScratch = lerpOctEncodedNormal(this, encodedScratch);\n return encodedScratch.y;\n};\n\nconst polygonVertices = [];\npolygonVertices.push(new Vertex());\npolygonVertices.push(new Vertex());\npolygonVertices.push(new Vertex());\npolygonVertices.push(new Vertex());\n\nfunction addClippedPolygon(\n uBuffer,\n vBuffer,\n heightBuffer,\n normalBuffer,\n indices,\n vertexMap,\n clipped,\n triangleVertices,\n hasVertexNormals\n) {\n if (clipped.length === 0) {\n return;\n }\n\n let numVertices = 0;\n let clippedIndex = 0;\n while (clippedIndex < clipped.length) {\n clippedIndex = polygonVertices[numVertices++].initializeFromClipResult(\n clipped,\n clippedIndex,\n triangleVertices\n );\n }\n\n for (let i = 0; i < numVertices; ++i) {\n const polygonVertex = polygonVertices[i];\n if (!polygonVertex.isIndexed()) {\n const key = polygonVertex.getKey();\n if (defined(vertexMap[key])) {\n polygonVertex.newIndex = vertexMap[key];\n } else {\n const newIndex = uBuffer.length;\n uBuffer.push(polygonVertex.getU());\n vBuffer.push(polygonVertex.getV());\n heightBuffer.push(polygonVertex.getH());\n if (hasVertexNormals) {\n normalBuffer.push(polygonVertex.getNormalX());\n normalBuffer.push(polygonVertex.getNormalY());\n }\n polygonVertex.newIndex = newIndex;\n vertexMap[key] = newIndex;\n }\n } else {\n polygonVertex.newIndex = vertexMap[polygonVertex.index];\n polygonVertex.uBuffer = uBuffer;\n polygonVertex.vBuffer = vBuffer;\n polygonVertex.heightBuffer = heightBuffer;\n if (hasVertexNormals) {\n polygonVertex.normalBuffer = normalBuffer;\n }\n }\n }\n\n if (numVertices === 3) {\n // A triangle.\n indices.push(polygonVertices[0].newIndex);\n indices.push(polygonVertices[1].newIndex);\n indices.push(polygonVertices[2].newIndex);\n } else if (numVertices === 4) {\n // A quad - two triangles.\n indices.push(polygonVertices[0].newIndex);\n indices.push(polygonVertices[1].newIndex);\n indices.push(polygonVertices[2].newIndex);\n\n indices.push(polygonVertices[0].newIndex);\n indices.push(polygonVertices[2].newIndex);\n indices.push(polygonVertices[3].newIndex);\n }\n}\nexport default createTaskProcessorWorker(upsampleQuantizedTerrainMesh);\n"],"names":["defined","DeveloperError","Cartesian3","Check","Cartesian2","Cartographic","BoundingSphere","OrientedBoundingBox","TerrainEncoding","CesiumMath","Ellipsoid","Rectangle","EllipsoidalOccluder","IndexDatatype","AttributeCompression"],"mappings":"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"} |