2024-07-18

Texture
게임 오브젝트를 덮거나 래핑하는 이미지 또는 동영상 파일로 시각적 효과를 만들어낸다.
POT Texture
텍스쳐 가로, 세로 크기가 각각 2의 거듭제곱인 텍스쳐.
장점
- POT 가 아닌 텍스쳐보다 최적화된 처리가 가능하다.
- 메모리에서의 정렬이 용이하다.
- 텍스쳐 맵핑 및 필터링에서 성능이 좋다.
NPOT Texture
텍스쳐 가로, 세로 둘 중 크기가 하나라도 2의 거듭제곱이 아닌 텍스쳐
- NPOT 텍스쳐를 사용하게 되면, GPU 에서 텍스쳐와 가장 가까운 사이즈의 2의 거듭제곱을 찾아 해당 텍스쳐를 복사하게 되므로, 메모리적 측면에서 효율이 좋지않다.
- NPOT 텍스쳐를 임포트할 때, POT 로 변환 시 옵션을 선택할 수 있다.
- ToNearest : 가장 가까운 2의 거듭제곱
- ToLarger : 큰 수 중 가장 가까운 2의 거듭제곱
- ToSmaller : 작은 수 중 가장 가까운 2의 거듭제곱
Sprite Atlas
여러 개의 텍스쳐를 하나의 큰 텍스쳐로 모아 놓은 것
장점
- 여러 개의 작은 텍스쳐를 하나의 큰 텍스쳐로 통합하여 메모리를 효율적으로 사용할 수 있다.
- 하나의 큰 텍스쳐로 통합하여 로딩 시간을 줄일 수 있다.
- 드로우 콜을 줄여 성능을 높일 수 있다.
- 드로우 콜 : GPU 에게 특정 그래픽 객체를 화면에 그리도록 명령하는 호출
오브젝트 풀
객체를 미리 생성해 두고, 필요할 때마다 재사용하는 디자인 패턴
( 자주 생성되고 소멸되는 객체를 관리하는 데 사용 )
장점
- 객체의 빈번한 생성과 소멸로 인한 오버헤드를 줄일 수 있다.
- 메모리 할당과 해제는 비용이 많이 들어성능에 큰 영향을 미친다.
- 객체를 재사용함으로써 메모리 단편화를 줄일 수 있다.
주의점
- 미리 생성해두는 객체의 수가 적다면, NullReferenceException 이나 새로 객체를 생성해야 하기 때문에, 오브젝트 풀을 쓰는 이유가 없어진다.
- 미리 생성해두는 객체의 수가 너무 많다면, 낭비되는 메모리가 많아지므로 적당히 생성해두자.
TIL 마무리
에셋을 다운 받을 때마다,
항상 Sprite Atlas 방식으로 스프라이트가 모아져 있어 그 이유가 궁금했었는데,
최적화 기법 중 Sprite Atlas 방식을 사용하는 이유를 알게되어 의미 있었다.