static compressUvs( mesh ) {

			if ( ! mesh.geometry ) {

				console.error( 'Mesh must contain geometry property. ' );

			}

			const uvs = mesh.geometry.attributes.uv;

			if ( ! uvs ) {

				console.error( 'Geometry must contain uv attribute. ' );

			}

			if ( uvs.isPacked ) return;
			const range = {
				min: Infinity,
				max: - Infinity
			};
			const array = uvs.array;

			for ( let i = 0; i < array.length; i ++ ) {

				range.min = Math.min( range.min, array[ i ] );
				range.max = Math.max( range.max, array[ i ] );

			}

			let result;

			if ( range.min >= - 1.0 && range.max <= 1.0 ) {

				// use default encoding method
				result = new Uint16Array( array.length );

				for ( let i = 0; i < array.length; i += 2 ) {

					const encoded = EncodingFuncs.defaultEncode( array[ i ], array[ i + 1 ], 0, 2 );
					result[ i ] = encoded[ 0 ];
					result[ i + 1 ] = encoded[ 1 ];

				}

				mesh.geometry.setAttribute( 'uv', new THREE.BufferAttribute( result, 2, true ) );
				mesh.geometry.attributes.uv.isPacked = true;
				mesh.geometry.attributes.uv.needsUpdate = true;
				mesh.geometry.attributes.uv.bytes = result.length * 2;

				if ( ! ( mesh.material instanceof PackedPhongMaterial ) ) {

					mesh.material = new PackedPhongMaterial().copy( mesh.material );

				}

				mesh.material.defines.USE_PACKED_UV = 0;

			} else {

				// use quantized encoding method
				result = EncodingFuncs.quantizedEncodeUV( array, 2 );
				mesh.geometry.setAttribute( 'uv', new THREE.BufferAttribute( result.quantized, 2 ) );
				mesh.geometry.attributes.uv.isPacked = true;
				mesh.geometry.attributes.uv.needsUpdate = true;
				mesh.geometry.attributes.uv.bytes = result.quantized.length * 2;

				if ( ! ( mesh.material instanceof PackedPhongMaterial ) ) {

					mesh.material = new PackedPhongMaterial().copy( mesh.material );

				}

				mesh.material.defines.USE_PACKED_UV = 1;
				mesh.material.uniforms.quantizeMatUV.value = result.decodeMat;
				mesh.material.uniforms.quantizeMatUV.needsUpdate = true;

			}

		}
Make the input mesh.geometry's uv attribute encoded and compressed.
Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the uv data.

@param {THREE.Mesh} mesh