One_KWS

Unity 최적화 - Asset 본문

Unity

Unity 최적화 - Asset

One-Kim 2023. 4. 19. 02:47

에셋 파이프라인은 애플리케이션의 성능에 큰 영향을 미칠 수 있다. 에셋의 설정에 따라 빌드 크기 및 시간을 증가시키고 메모리 사용량에 영향을 미칠 수 있다.

Texture 

Max Size 

해당 Texture가 가질 수 있는 최대 크기이다. Max Size 값이 작으면 Texture의 품질이 낮아지지만, 메모리 사용량이 줄어들고 더 빠르게 로드된다. 반면, Max Size 값이 크면 Texture의 품질은 높아지지만, 더 많은 메모리를 사용하게 되고 로드 시간이 늘어난다. 모바일에서는 보통 Texture의 Max Size를 2048 또는 1024로 설정한다.

 

Max Size가 2048일 때와 1024일 때의 크기

Power Of Two (POT)

Texture Compression이 ETC 또는 PVRCT일 경우 POT 텍스처를 사용해야 압축이 된다. POT 텍스처는 너비와 높이가 2의 거듭제곱인 텍스처를 말한다. 너비와 높이가 2의 거듭제곱이 아닐경우 NPOT 텍스처로 압축이 되지 않는다. 

NPOT 텍스처와 POT 텍스처

텍스처의 Advanced에 Non-Power of 2 옵션을 이용하여 Unity에서 NPOT 텍스처를 POT 텍스처로 자동으로 변환하게 선택할 수 있다. 

  • None: 텍스처 크기가 동일하게 유지된다.
  • To nearest: 텍스처를 가장 가까운 2의 제곱수 크기로 스케일한다. (257x511px 텍스처는 512x512px로 스케일된다.)
  • To larger: 텍스처를 최대 크기 값의 2의 제곱수 크기로 스케일한다. (257x511px 텍스처는 512x512px로 스케일된다.)
  • To smaller: 텍스처를 최소 크기 값의 2의 제곱수 크기로 스케일한다. (257x511px 텍스처는 256x256px로 스케일된다.)

Read/Write

Read/Write 옵션이 활성화되면, CPU와 GPU에서 각각 메모리에 복사본을 만들어 텍스처의 메모리 사용량이 2배로 커진다. 대부분의 경우 이 옵션을 비활성화한다. 

Generate Mip Maps

2D 스프라이트 및 UI 그래픽과 같이 화면에서 일정한 크기를 유지하는 텍스처에 대해서는 Mip Maps가 필요하지 않기 때문에 비활성화 하는 것이 좋다. 카메라와의 거리가 변하는 3D 모델의 경우 Mip Maps를 사용한다.

Adaptive Scalable Texture Compression (ATSC)

ATSC는 기존 포맷들의 약점을 개선하여 이미지 품질과 압축 효율을 끌어올린 포맷으로 다른 압축 방식에 비해 더 낮은 메모리 사용량과 더 높은 품질을 제공한다. Android와 iOS 양쪽 모두 사용이 가능하지만 OpenGL ES 3.2 이상을 지원하는 디바이스에서만 사용이 가능하며, 갤럭시 S6 아이폰6 이후 발매된 대부분의 기종에서 지원된다. 

 

Mesh

 Mesh Compression

메시 데이터를 압축하여 파일 크기를 줄일 수 있다. 하지만 로딩 시간 증가, 로딩 시 임시 메모리 사용량 증가 등의 단점이 있다.

Read/Write

Read/Write 옵션을 활성화하면 메모리에 메시가 복제되어 시스템 메모리와 GPU 메모리에 모두 하나의 메시 복사본이 유지된다. 대부분의 경우 이 옵션은 비활성화한다. (Unity 2019.2 이전 버전에서는 이 옵션이 기본으로 활성화된다.)

Rig, BlendShapes

메시에 골격 또는 블렌드 셰이프 애니메이션이 필요하지 않다면 비활성화한다.

Normal, Tangent

메시의 머티리얼에 노멀 또는 탄젠트가 필요하지 않다면 비활성화하여 메모리를 절감할 수 있다.

Reference

모바일 게임 성능 최적화: 그래픽과 에셋에 관한 전문가 팁 - Unity Blog

텍스처 압축 포맷 - 나무위키

 

 

'Unity' 카테고리의 다른 글

Android Plugin 만들기  (0) 2023.04.25
스프라이트 아틀라스 (Sprite Atlas)  (0) 2023.04.22
Mono, IL2CPP  (3) 2023.04.01
Addressable System #5 - Build layout report  (0) 2023.03.24
Unity - Editor.Log  (0) 2023.03.24