Unity는 두 가지의 메시 압축 방식을 제공합니다. 이 둘은 서로 다르게 작동하며 성능의 여러 측면에 영향을 미칩니다.
메시 압축 설정에 액세스하려면 Model Import 설정 창을 열고 Model 탭의 Meshes 섹션으로 이동한 다음 Mesh Compression 드롭다운을 사용합니다.
동일한 프로젝트에서 두 압축 방법을 모두 사용할 수 있지만, 동일한 메시에 사용할 수는 없습니다. 메시에 메시 압축을 적용하는 경우 Unity는 해당 메시에 버텍스 압축을 적용하지 않습니다.
참고: 버텍스 압축과 메시 압축에 대한 Unity의 기본 설정은 대부분의 프로젝트에 적합합니다. 문제가 있는 경우에만 이 설정을 변경하고, 변경 사항이 도움이 되었는지 결과를 평가해야 합니다.
버텍스 압축 설정을 사용하면 프로젝트의 모든 메시에 더 낮은 정밀도 데이터 포맷을 사용할 수 있습니다. 특정 데이터 채널에 대한 데이터 유형을 설정하면 됩니다.
특정 채널의 데이터 유형을 FP32(Floating Point32, 32비트 부동 소수점 숫자)에서 FP16(Floating Point16, 반정밀도 부동 소수점이라고도 함)으로 변경할 수 있습니다. FP16 포맷은 FP32 숫자보다 소수점 뒤의 숫자를 더 적게 저장하므로 공간을 더 적게 차지하지만 정밀도가 약간 낮아집니다.
FP32에서 FP16으로 전환된 데이터는 메모리 공간을 적게 차지하고 디스크 공간을 약간 적게 차지합니다. 이 데이터는 GPU에서 메모리 대역폭을 더 적게 사용하므로 GPU 성능이 약간 향상될 수 있습니다.
버텍스 압축 기법은 압축하려는 버텍스 속성의 수에 따라 메시를 비율만큼 압축하는 것입니다. 노멀, 탄젠트, 컬러, UV 좌표 세 세트를 압축할 때 압축비는 보통 약 1.45배입니다.
메시 압축 설정을 사용하여 디스크의 특정 모델 에셋에 대한 메시 데이터를 압축할 수 있습니다. 메시 압축 알고리즘은 버텍스 압축 기법보다 더 공격적인 방식으로 작동하므로 압축비가 높아져서 파일 크기가 더 작아집니다. 하지만 단점도 더 많습니다
이 설정을 적용하면 Unity는 알고리즘을 사용하여 각 압축 채널의 명시적 값을 최댓값과 최솟값 사이의 범위로 대체하고, 고정된 비트 수는 각 값이 해당 범위 내에 있는 위치를 나타냅니다. 이렇게 하면 디스크의 메시 데이터 크기가 줄어듭니다. Unity는 메시를 메모리에 로드하면 데이터의 압축을 풀어 이 범위를 원래 값으로 되돌립니다. 이후에는 성능에 영향을 미치지 않습니다.
이 기술은 최종 빌드 크기 또는 메시가 최대로 존재할 수 있는 에셋 번들의 크기를 줄여야 하거나 런타임 압축 풀기로 인한 성능 저하가 허용되는 경우에 유용할 수 있습니다.
런타임 시 메시 압축 풀기는 추가 CPU 리소스를 사용하므로 메시 데이터를 로드하는 시간이 더 오래 걸립니다. 또한 Unity는 메시의 압축을 풀 때 임시 메모리를 더 많이 사용합니다.
또한 압축비가 상대적으로 높으면 Unity가 메시의 압축을 풀 때 원치 않는 결함이 나타날 수 있습니다. 이러한 결함을 방지하려면 압축하려는 메시에 대한 각 옵션을 테스트하고 메시가 올바르게 표시되는지 확인해야 합니다.