[TIL] Unity - 최적화 기법

MINO·2024년 7월 18일
post-thumbnail

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 방식을 사용하는 이유를 알게되어 의미 있었다.

profile
안녕하세요 게임 개발하는 MINO 입니다.

0개의 댓글