{"version":3,"file":"AttributeCompression-442278a0.js","sources":["../../../../Source/Scene/AttributeType.js","../../../../Source/Core/AttributeCompression.js"],"sourcesContent":["import Cartesian2 from \"../Core/Cartesian2.js\";\nimport Cartesian3 from \"../Core/Cartesian3.js\";\nimport Cartesian4 from \"../Core/Cartesian4.js\";\nimport Check from \"../Core/Check.js\";\nimport DeveloperError from \"../Core/DeveloperError.js\";\nimport Matrix2 from \"../Core/Matrix2.js\";\nimport Matrix3 from \"../Core/Matrix3.js\";\nimport Matrix4 from \"../Core/Matrix4.js\";\n\n/**\n * An enum describing the attribute type for glTF and 3D Tiles.\n *\n * @enum {String}\n *\n * @private\n */\nconst AttributeType = {\n /**\n * The attribute is a single component.\n *\n * @type {String}\n * @constant\n */\n SCALAR: \"SCALAR\",\n\n /**\n * The attribute is a two-component vector.\n *\n * @type {String}\n * @constant\n */\n VEC2: \"VEC2\",\n\n /**\n * The attribute is a three-component vector.\n *\n * @type {String}\n * @constant\n */\n VEC3: \"VEC3\",\n\n /**\n * The attribute is a four-component vector.\n *\n * @type {String}\n * @constant\n */\n VEC4: \"VEC4\",\n\n /**\n * The attribute is a 2x2 matrix.\n *\n * @type {String}\n * @constant\n */\n MAT2: \"MAT2\",\n\n /**\n * The attribute is a 3x3 matrix.\n *\n * @type {String}\n * @constant\n */\n MAT3: \"MAT3\",\n\n /**\n * The attribute is a 4x4 matrix.\n *\n * @type {String}\n * @constant\n */\n MAT4: \"MAT4\",\n};\n\n/**\n * Gets the scalar, vector, or matrix type for the attribute type.\n *\n * @param {AttributeType} attributeType The attribute type.\n * @returns {*} The math type.\n *\n * @private\n */\nAttributeType.getMathType = function (attributeType) {\n switch (attributeType) {\n case AttributeType.SCALAR:\n return Number;\n case AttributeType.VEC2:\n return Cartesian2;\n case AttributeType.VEC3:\n return Cartesian3;\n case AttributeType.VEC4:\n return Cartesian4;\n case AttributeType.MAT2:\n return Matrix2;\n case AttributeType.MAT3:\n return Matrix3;\n case AttributeType.MAT4:\n return Matrix4;\n //>>includeStart('debug', pragmas.debug);\n default:\n throw new DeveloperError(\"attributeType is not a valid value.\");\n //>>includeEnd('debug');\n }\n};\n\n/**\n * Gets the number of components per attribute.\n *\n * @param {AttributeType} attributeType The attribute type.\n * @returns {Number} The number of components.\n *\n * @private\n */\nAttributeType.getNumberOfComponents = function (attributeType) {\n switch (attributeType) {\n case AttributeType.SCALAR:\n return 1;\n case AttributeType.VEC2:\n return 2;\n case AttributeType.VEC3:\n return 3;\n case AttributeType.VEC4:\n case AttributeType.MAT2:\n return 4;\n case AttributeType.MAT3:\n return 9;\n case AttributeType.MAT4:\n return 16;\n //>>includeStart('debug', pragmas.debug);\n default:\n throw new DeveloperError(\"attributeType is not a valid value.\");\n //>>includeEnd('debug');\n }\n};\n\n/**\n * Gets the GLSL type for the attribute type.\n *\n * @param {AttributeType} attributeType The attribute type.\n * @returns {String} The GLSL type for the attribute type.\n *\n * @private\n */\nAttributeType.getGlslType = function (attributeType) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.string(\"attributeType\", attributeType);\n //>>includeEnd('debug');\n\n switch (attributeType) {\n case AttributeType.SCALAR:\n return \"float\";\n case AttributeType.VEC2:\n return \"vec2\";\n case AttributeType.VEC3:\n return \"vec3\";\n case AttributeType.VEC4:\n return \"vec4\";\n case AttributeType.MAT2:\n return \"mat2\";\n case AttributeType.MAT3:\n return \"mat3\";\n case AttributeType.MAT4:\n return \"mat4\";\n //>>includeStart('debug', pragmas.debug);\n default:\n throw new DeveloperError(\"attributeType is not a valid value.\");\n //>>includeEnd('debug');\n }\n};\n\nexport default Object.freeze(AttributeType);\n","import Cartesian2 from \"./Cartesian2.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport ComponentDatatype from \"./ComponentDatatype.js\";\nimport Check from \"./Check.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport CesiumMath from \"./Math.js\";\nimport AttributeType from \"../Scene/AttributeType.js\";\n\nconst RIGHT_SHIFT = 1.0 / 256.0;\nconst LEFT_SHIFT = 256.0;\n\n/**\n * Attribute compression and decompression functions.\n *\n * @namespace AttributeCompression\n *\n * @private\n */\nconst AttributeCompression = {};\n\n/**\n * Encodes a normalized vector into 2 SNORM values in the range of [0-rangeMax] following the 'oct' encoding.\n *\n * Oct encoding is a compact representation of unit length vectors.\n * The 'oct' encoding is described in \"A Survey of Efficient Representations of Independent Unit Vectors\",\n * Cigolle et al 2014: {@link http://jcgt.org/published/0003/02/01/}\n *\n * @param {Cartesian3} vector The normalized vector to be compressed into 2 component 'oct' encoding.\n * @param {Cartesian2} result The 2 component oct-encoded unit length vector.\n * @param {Number} rangeMax The maximum value of the SNORM range. The encoded vector is stored in log2(rangeMax+1) bits.\n * @returns {Cartesian2} The 2 component oct-encoded unit length vector.\n *\n * @exception {DeveloperError} vector must be normalized.\n *\n * @see AttributeCompression.octDecodeInRange\n */\nAttributeCompression.octEncodeInRange = function (vector, rangeMax, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"vector\", vector);\n Check.defined(\"result\", result);\n const magSquared = Cartesian3.magnitudeSquared(vector);\n if (Math.abs(magSquared - 1.0) > CesiumMath.EPSILON6) {\n throw new DeveloperError(\"vector must be normalized.\");\n }\n //>>includeEnd('debug');\n\n result.x =\n vector.x / (Math.abs(vector.x) + Math.abs(vector.y) + Math.abs(vector.z));\n result.y =\n vector.y / (Math.abs(vector.x) + Math.abs(vector.y) + Math.abs(vector.z));\n if (vector.z < 0) {\n const x = result.x;\n const y = result.y;\n result.x = (1.0 - Math.abs(y)) * CesiumMath.signNotZero(x);\n result.y = (1.0 - Math.abs(x)) * CesiumMath.signNotZero(y);\n }\n\n result.x = CesiumMath.toSNorm(result.x, rangeMax);\n result.y = CesiumMath.toSNorm(result.y, rangeMax);\n\n return result;\n};\n\n/**\n * Encodes a normalized vector into 2 SNORM values in the range of [0-255] following the 'oct' encoding.\n *\n * @param {Cartesian3} vector The normalized vector to be compressed into 2 byte 'oct' encoding.\n * @param {Cartesian2} result The 2 byte oct-encoded unit length vector.\n * @returns {Cartesian2} The 2 byte oct-encoded unit length vector.\n *\n * @exception {DeveloperError} vector must be normalized.\n *\n * @see AttributeCompression.octEncodeInRange\n * @see AttributeCompression.octDecode\n */\nAttributeCompression.octEncode = function (vector, result) {\n return AttributeCompression.octEncodeInRange(vector, 255, result);\n};\n\nconst octEncodeScratch = new Cartesian2();\nconst uint8ForceArray = new Uint8Array(1);\nfunction forceUint8(value) {\n uint8ForceArray[0] = value;\n return uint8ForceArray[0];\n}\n/**\n * @param {Cartesian3} vector The normalized vector to be compressed into 4 byte 'oct' encoding.\n * @param {Cartesian4} result The 4 byte oct-encoded unit length vector.\n * @returns {Cartesian4} The 4 byte oct-encoded unit length vector.\n *\n * @exception {DeveloperError} vector must be normalized.\n *\n * @see AttributeCompression.octEncodeInRange\n * @see AttributeCompression.octDecodeFromCartesian4\n */\nAttributeCompression.octEncodeToCartesian4 = function (vector, result) {\n AttributeCompression.octEncodeInRange(vector, 65535, octEncodeScratch);\n result.x = forceUint8(octEncodeScratch.x * RIGHT_SHIFT);\n result.y = forceUint8(octEncodeScratch.x);\n result.z = forceUint8(octEncodeScratch.y * RIGHT_SHIFT);\n result.w = forceUint8(octEncodeScratch.y);\n return result;\n};\n\n/**\n * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component vector.\n *\n * @param {Number} x The x component of the oct-encoded unit length vector.\n * @param {Number} y The y component of the oct-encoded unit length vector.\n * @param {Number} rangeMax The maximum value of the SNORM range. The encoded vector is stored in log2(rangeMax+1) bits.\n * @param {Cartesian3} result The decoded and normalized vector\n * @returns {Cartesian3} The decoded and normalized vector.\n *\n * @exception {DeveloperError} x and y must be unsigned normalized integers between 0 and rangeMax.\n *\n * @see AttributeCompression.octEncodeInRange\n */\nAttributeCompression.octDecodeInRange = function (x, y, rangeMax, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"result\", result);\n if (x < 0 || x > rangeMax || y < 0 || y > rangeMax) {\n throw new DeveloperError(\n `x and y must be unsigned normalized integers between 0 and ${rangeMax}`\n );\n }\n //>>includeEnd('debug');\n\n result.x = CesiumMath.fromSNorm(x, rangeMax);\n result.y = CesiumMath.fromSNorm(y, rangeMax);\n result.z = 1.0 - (Math.abs(result.x) + Math.abs(result.y));\n\n if (result.z < 0.0) {\n const oldVX = result.x;\n result.x = (1.0 - Math.abs(result.y)) * CesiumMath.signNotZero(oldVX);\n result.y = (1.0 - Math.abs(oldVX)) * CesiumMath.signNotZero(result.y);\n }\n\n return Cartesian3.normalize(result, result);\n};\n\n/**\n * Decodes a unit-length vector in 2 byte 'oct' encoding to a normalized 3-component vector.\n *\n * @param {Number} x The x component of the oct-encoded unit length vector.\n * @param {Number} y The y component of the oct-encoded unit length vector.\n * @param {Cartesian3} result The decoded and normalized vector.\n * @returns {Cartesian3} The decoded and normalized vector.\n *\n * @exception {DeveloperError} x and y must be an unsigned normalized integer between 0 and 255.\n *\n * @see AttributeCompression.octDecodeInRange\n */\nAttributeCompression.octDecode = function (x, y, result) {\n return AttributeCompression.octDecodeInRange(x, y, 255, result);\n};\n\n/**\n * Decodes a unit-length vector in 4 byte 'oct' encoding to a normalized 3-component vector.\n *\n * @param {Cartesian4} encoded The oct-encoded unit length vector.\n * @param {Cartesian3} result The decoded and normalized vector.\n * @returns {Cartesian3} The decoded and normalized vector.\n *\n * @exception {DeveloperError} x, y, z, and w must be unsigned normalized integers between 0 and 255.\n *\n * @see AttributeCompression.octDecodeInRange\n * @see AttributeCompression.octEncodeToCartesian4\n */\nAttributeCompression.octDecodeFromCartesian4 = function (encoded, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"encoded\", encoded);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n const x = encoded.x;\n const y = encoded.y;\n const z = encoded.z;\n const w = encoded.w;\n //>>includeStart('debug', pragmas.debug);\n if (\n x < 0 ||\n x > 255 ||\n y < 0 ||\n y > 255 ||\n z < 0 ||\n z > 255 ||\n w < 0 ||\n w > 255\n ) {\n throw new DeveloperError(\n \"x, y, z, and w must be unsigned normalized integers between 0 and 255\"\n );\n }\n //>>includeEnd('debug');\n\n const xOct16 = x * LEFT_SHIFT + y;\n const yOct16 = z * LEFT_SHIFT + w;\n return AttributeCompression.octDecodeInRange(xOct16, yOct16, 65535, result);\n};\n\n/**\n * Packs an oct encoded vector into a single floating-point number.\n *\n * @param {Cartesian2} encoded The oct encoded vector.\n * @returns {Number} The oct encoded vector packed into a single float.\n *\n */\nAttributeCompression.octPackFloat = function (encoded) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"encoded\", encoded);\n //>>includeEnd('debug');\n return 256.0 * encoded.x + encoded.y;\n};\n\nconst scratchEncodeCart2 = new Cartesian2();\n\n/**\n * Encodes a normalized vector into 2 SNORM values in the range of [0-255] following the 'oct' encoding and\n * stores those values in a single float-point number.\n *\n * @param {Cartesian3} vector The normalized vector to be compressed into 2 byte 'oct' encoding.\n * @returns {Number} The 2 byte oct-encoded unit length vector.\n *\n * @exception {DeveloperError} vector must be normalized.\n */\nAttributeCompression.octEncodeFloat = function (vector) {\n AttributeCompression.octEncode(vector, scratchEncodeCart2);\n return AttributeCompression.octPackFloat(scratchEncodeCart2);\n};\n\n/**\n * Decodes a unit-length vector in 'oct' encoding packed in a floating-point number to a normalized 3-component vector.\n *\n * @param {Number} value The oct-encoded unit length vector stored as a single floating-point number.\n * @param {Cartesian3} result The decoded and normalized vector\n * @returns {Cartesian3} The decoded and normalized vector.\n *\n */\nAttributeCompression.octDecodeFloat = function (value, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"value\", value);\n //>>includeEnd('debug');\n\n const temp = value / 256.0;\n const x = Math.floor(temp);\n const y = (temp - x) * 256.0;\n\n return AttributeCompression.octDecode(x, y, result);\n};\n\n/**\n * Encodes three normalized vectors into 6 SNORM values in the range of [0-255] following the 'oct' encoding and\n * packs those into two floating-point numbers.\n *\n * @param {Cartesian3} v1 A normalized vector to be compressed.\n * @param {Cartesian3} v2 A normalized vector to be compressed.\n * @param {Cartesian3} v3 A normalized vector to be compressed.\n * @param {Cartesian2} result The 'oct' encoded vectors packed into two floating-point numbers.\n * @returns {Cartesian2} The 'oct' encoded vectors packed into two floating-point numbers.\n *\n */\nAttributeCompression.octPack = function (v1, v2, v3, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"v1\", v1);\n Check.defined(\"v2\", v2);\n Check.defined(\"v3\", v3);\n Check.defined(\"result\", result);\n //>>includeEnd('debug');\n\n const encoded1 = AttributeCompression.octEncodeFloat(v1);\n const encoded2 = AttributeCompression.octEncodeFloat(v2);\n\n const encoded3 = AttributeCompression.octEncode(v3, scratchEncodeCart2);\n result.x = 65536.0 * encoded3.x + encoded1;\n result.y = 65536.0 * encoded3.y + encoded2;\n return result;\n};\n\n/**\n * Decodes three unit-length vectors in 'oct' encoding packed into a floating-point number to a normalized 3-component vector.\n *\n * @param {Cartesian2} packed The three oct-encoded unit length vectors stored as two floating-point number.\n * @param {Cartesian3} v1 One decoded and normalized vector.\n * @param {Cartesian3} v2 One decoded and normalized vector.\n * @param {Cartesian3} v3 One decoded and normalized vector.\n */\nAttributeCompression.octUnpack = function (packed, v1, v2, v3) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"packed\", packed);\n Check.defined(\"v1\", v1);\n Check.defined(\"v2\", v2);\n Check.defined(\"v3\", v3);\n //>>includeEnd('debug');\n\n let temp = packed.x / 65536.0;\n const x = Math.floor(temp);\n const encodedFloat1 = (temp - x) * 65536.0;\n\n temp = packed.y / 65536.0;\n const y = Math.floor(temp);\n const encodedFloat2 = (temp - y) * 65536.0;\n\n AttributeCompression.octDecodeFloat(encodedFloat1, v1);\n AttributeCompression.octDecodeFloat(encodedFloat2, v2);\n AttributeCompression.octDecode(x, y, v3);\n};\n\n/**\n * Pack texture coordinates into a single float. The texture coordinates will only preserve 12 bits of precision.\n *\n * @param {Cartesian2} textureCoordinates The texture coordinates to compress. Both coordinates must be in the range 0.0-1.0.\n * @returns {Number} The packed texture coordinates.\n *\n */\nAttributeCompression.compressTextureCoordinates = function (\n textureCoordinates\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"textureCoordinates\", textureCoordinates);\n //>>includeEnd('debug');\n\n // Move x and y to the range 0-4095;\n const x = (textureCoordinates.x * 4095.0) | 0;\n const y = (textureCoordinates.y * 4095.0) | 0;\n return 4096.0 * x + y;\n};\n\n/**\n * Decompresses texture coordinates that were packed into a single float.\n *\n * @param {Number} compressed The compressed texture coordinates.\n * @param {Cartesian2} result The decompressed texture coordinates.\n * @returns {Cartesian2} The modified result parameter.\n *\n */\nAttributeCompression.decompressTextureCoordinates = function (\n compressed,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"compressed\", compressed);\n Check.defined(\"result\", result);\n //>>includeEnd('debug');\n\n const temp = compressed / 4096.0;\n const xZeroTo4095 = Math.floor(temp);\n result.x = xZeroTo4095 / 4095.0;\n result.y = (compressed - xZeroTo4095 * 4096) / 4095;\n return result;\n};\n\nfunction zigZagDecode(value) {\n return (value >> 1) ^ -(value & 1);\n}\n\n/**\n * Decodes delta and ZigZag encoded vertices. This modifies the buffers in place.\n *\n * @param {Uint16Array} uBuffer The buffer view of u values.\n * @param {Uint16Array} vBuffer The buffer view of v values.\n * @param {Uint16Array} [heightBuffer] The buffer view of height values.\n *\n * @see {@link https://github.com/CesiumGS/quantized-mesh|quantized-mesh-1.0 terrain format}\n */\nAttributeCompression.zigZagDeltaDecode = function (\n uBuffer,\n vBuffer,\n heightBuffer\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"uBuffer\", uBuffer);\n Check.defined(\"vBuffer\", vBuffer);\n Check.typeOf.number.equals(\n \"uBuffer.length\",\n \"vBuffer.length\",\n uBuffer.length,\n vBuffer.length\n );\n if (defined(heightBuffer)) {\n Check.typeOf.number.equals(\n \"uBuffer.length\",\n \"heightBuffer.length\",\n uBuffer.length,\n heightBuffer.length\n );\n }\n //>>includeEnd('debug');\n\n const count = uBuffer.length;\n\n let u = 0;\n let v = 0;\n let height = 0;\n\n for (let i = 0; i < count; ++i) {\n u += zigZagDecode(uBuffer[i]);\n v += zigZagDecode(vBuffer[i]);\n\n uBuffer[i] = u;\n vBuffer[i] = v;\n\n if (defined(heightBuffer)) {\n height += zigZagDecode(heightBuffer[i]);\n heightBuffer[i] = height;\n }\n }\n};\n\n/**\n * Dequantizes a quantized typed array into a floating point typed array.\n *\n * @see {@link https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data}\n *\n * @param {Int8Array|Uint8Array|Int16Array|Uint16Array|Int32Array|Uint32Array} typedArray The typed array for the quantized data.\n * @param {ComponentDatatype} componentDatatype The component datatype of the quantized data.\n * @param {AttributeType} type The attribute type of the quantized data.\n * @param {Number} count The number of attributes referenced in the dequantized array.\n *\n * @returns {Float32Array} The dequantized array.\n */\nAttributeCompression.dequantize = function (\n typedArray,\n componentDatatype,\n type,\n count\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"typedArray\", typedArray);\n Check.defined(\"componentDatatype\", componentDatatype);\n Check.defined(\"type\", type);\n Check.defined(\"count\", count);\n //>>includeEnd('debug');\n\n const componentsPerAttribute = AttributeType.getNumberOfComponents(type);\n\n let divisor;\n switch (componentDatatype) {\n case ComponentDatatype.BYTE:\n divisor = 127.0;\n break;\n case ComponentDatatype.UNSIGNED_BYTE:\n divisor = 255.0;\n break;\n case ComponentDatatype.SHORT:\n divisor = 32767.0;\n break;\n case ComponentDatatype.UNSIGNED_SHORT:\n divisor = 65535.0;\n break;\n case ComponentDatatype.INT:\n divisor = 2147483647.0;\n break;\n case ComponentDatatype.UNSIGNED_INT:\n divisor = 4294967295.0;\n break;\n //>>includeStart('debug', pragmas.debug);\n default:\n throw new DeveloperError(\n `Cannot dequantize component datatype: ${componentDatatype}`\n );\n //>>includeEnd('debug');\n }\n\n const dequantizedTypedArray = new Float32Array(\n count * componentsPerAttribute\n );\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < componentsPerAttribute; j++) {\n const index = i * componentsPerAttribute + j;\n dequantizedTypedArray[index] = Math.max(\n typedArray[index] / divisor,\n -1.0\n );\n }\n }\n\n return dequantizedTypedArray;\n};\n\n/**\n * Decode RGB565-encoded colors into a floating point typed array containing\n * normalized RGB values.\n *\n * @param {Uint16Array} typedArray Array of RGB565 values\n * @param {Float32Array} [result] Array to store the normalized VEC3 result\n */\nAttributeCompression.decodeRGB565 = function (typedArray, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"typedArray\", typedArray);\n\n const expectedLength = typedArray.length * 3;\n if (defined(result)) {\n Check.typeOf.number.equals(\n \"result.length\",\n \"typedArray.length * 3\",\n result.length,\n expectedLength\n );\n }\n //>>includeEnd('debug');\n\n const count = typedArray.length;\n if (!defined(result)) {\n result = new Float32Array(count * 3);\n }\n\n const mask5 = (1 << 5) - 1;\n const mask6 = (1 << 6) - 1;\n const normalize5 = 1.0 / 31.0;\n const normalize6 = 1.0 / 63.0;\n for (let i = 0; i < count; i++) {\n const value = typedArray[i];\n const red = value >> 11;\n const green = (value >> 5) & mask6;\n const blue = value & mask5;\n\n const offset = 3 * i;\n result[offset] = red * normalize5;\n result[offset + 1] = green * normalize6;\n result[offset + 2] = blue * normalize5;\n }\n\n return result;\n};\n\nexport default AttributeCompression;\n"],"names":["Cartesian2","Cartesian3","Cartesian4","Matrix2","Matrix3","Matrix4","DeveloperError","Check","CesiumMath","defined","AttributeType","ComponentDatatype"],"mappings":"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"}