유니티(Unity) 게임 그래픽에서 텍스처 최적화 방법 몇가지
- 유니티게임개발/최적화
- 2018. 12. 9.
유니티(Unity) 게임 그래픽에서 텍스처 최적화 방법 몇가지
텍스처 크기(Resolution)
텍스처 해상도가 클수록 메모리 사용량이 많아지고 성능 저하가 발생합니다. 필요 이상으로 큰 텍스처를 사용하지 않도록 하고 텍스처 크기를 적절히 줄여서 최적화합니다.
Texture Import Settings에서 Max Size를 적절한 값으로 설정
텍스처 비율(Aspect Ratio)
비정형 크기의 텍스처는 그래픽카드에서 빈공간을 자동으로 채워 정형 텍스처로 변환후 GPU로 전송, 불필요한 메모리 대역폭을 낭비할수있습니다. 텍스처의 비율을 Power of Two (2의 거듭제곱) 크기로 설정하여 최적화할수있습니다.
예를들어 128x128, 256x256, 512x512
텍스처 압축 포맷(Compression)
텍스처 파일을 압축하여 메모리 사용량을 줄일수있습니다. Unity에서 다양한 종류의 텍스처 압축 형식을 제공하며 게임의 대상 플랫폼에 적합한 포맷을 선택합니다.
예를 들어 모바일에서는 ETC(ETC1, ETC2) 압축을 사용 PC 또는 콘솔에서는 DXT, ASTC 압축을 사용
밉맵(Mipmap) 설정
밉맵은 원본 텍스처의 다양한 해상도(점차적으로 더 작아지는) 버전을 준비하여 객체가 카메라에서 멀어질수록 더 작은 텍스처를 사용하도록 하는 방법입니다. 밉맵 사용 또는 미사용(거리에 따른 크기 변화가없는 텍스처는 불필요)을 설정하여 메모리 사용량을 줄이고 렌더링 속도를 개선할 수 있습니다.
Texture Import Settings에서 Generate Mip Maps 옵션을 활성화
https://learnandcreate.tistory.com/876
밉맵(mipmaps) - 원본 텍스처의 다양한 해상도로 구성된 이미지 집합
밉맵(mipmaps) - 원본 텍스처의 다양한 해상도로 구성된 이미지 집합 밉맵(mipmaps, MIP maps)은 컴퓨터그래픽에서 텍스처 맵핑에 사용되는 기술로 원본 텍스처의 다양한 해상도(점차적으로 더 작아지
learnandcreate.tistory.com
텍스처 아틀라싱(Texture Atlas)
여러 개의 작은 텍스처를 하나의 큰 텍스처로 합치는 방법인 텍스처 아틀라스(Texture Atlas)를 사용하여 드로우 콜을 줄이고 성능을 향상시킬 수 있습니다. 아틀라싱에 따른 품질 저하가 발생하지않고 메모리 사용량이 동일하지만 드로우콜이 줄어서 CPU 작업량이 감소합니다.
동일한 재질의 오브젝트들에 대해서 사용가능, Skinned Mesh Renderer의 경우 드로우콜 감소하지않음
모바일의 경우 비디오 메모리에 할당할수있는 텍스처 이미지 크기가 제한적일수있음. 파일의 크기가 너무 크면 더 작은 크기로 분할해야함
텍스처 알파 채널(Alpha)
알파 채널(투명도)을 사용하는 텍스처는 성능에 영향을 미칩니다. 알파 채널이 불필요한 경우 텍스처의 알파 채널을 제거하거나 Alpha Is Transparency를 비활성화하여 알파 채널 사용 유무를 설정합니다.
텍스처 필터링 방식 최적화(Texture Filtering)
적절한 텍스처 필터링 방법을 설정합니다(Bilinear, Trilinear, Anisotropic)
Texture Import Settings에서 텍스처의 필터링 방법을 설정
https://en.wikipedia.org/wiki/Texture_filtering
동적 텍스처 로딩 및 언로딩
게임의 성능을 최적화하기 위해 필요할 때만 텍스처를 로드하고 사용하지 않는 텍스처는 언로딩하는 방법을 사용합니다.
Resources.UnloadUnusedAssets() 등을 활용하여 동적으로 텍스처를 관리
'유니티게임개발 > 최적화' 카테고리의 다른 글
유니티에서 정적배칭(static batching) 사용하기 (1) | 2021.02.18 |
---|---|
유니티의 렌더링 파이프라인(built-in, SRP, URP, HDRP) (0) | 2021.02.03 |
skinned mesh renderer 게임 오브젝트의 인스턴싱 (0) | 2021.02.02 |
유니티 최적화 GPU 인스턴싱(instancing) (2) | 2021.02.02 |
유니티 게임 그래픽 최적화 주제 모음 (0) | 2021.01.31 |