---
title: "텍스처를 합치는 것이 곧 배칭을 합치는 것"
description: "아틀라스는 메모리 최적화로 알려져 있지만 실제 효과는 배칭 쪽이 큽니다. 그리고 묶는 기준은 기능이 아니라 로딩 시점입니다."
author: "유니얼"
pubDate: 2026-09-09
category: "game-dev/unity/rendering"
tags: ["Unity", "최적화", "Batching", "텍스처"]
canonical: https://blog.unialgames.com/posts/unity-sprite-atlas/
---
스프라이트 아틀라스는 여러 스프라이트를 **하나의 물리적 텍스처**로 병합합니다.
보통 "메모리를 아끼려고 쓴다" 고 알려져 있는데, 실무에서 체감이 큰 쪽은 다른 데 있습니다.

텍스처가 머티리얼 상태의 일부라는 것을 앞에서 봤습니다.
그러니 **텍스처를 합치면 상태가 합쳐지고, 상태가 합쳐지면 배치가 이어집니다.**

## 슈팅 게임에서 재 본 예

비행기 여러 종류, 총알 여러 종류, 그림자가 각각 다른 텍스처를 쓰고 있는 상태였습니다.

- **적용 전**: 비행기 종류별로, 총알 종류별로, 그림자별로 드로우 콜이 갈렸습니다.
  같은 종류끼리만 겨우 이어졌습니다
- **적용 후**: 아틀라스 4장으로 묶으니 **드로우 콜 4회** 로 정리됐습니다.
  서로 다른 종류의 비행기가 한 번에 그려집니다

숫자가 극적으로 보이지만 원리는 단순합니다.
텍스처 바인딩이 4번밖에 안 일어나니 상태 변경도 4번뿐입니다.

## 메모리도 줄지만 이유가 다르다

스프라이트는 사각형이 아닌 경우가 많고, 남는 자리는 투명입니다.
그리고 **투명한 영역도 메모리에는 그대로 올라갑니다.** 알파 값이 0일 뿐 픽셀은 픽셀입니다.

아틀라스로 묶으면서 Tight Packing 을 켜면 그 여백에 다른 스프라이트가 들어갑니다.
실제로 쓰는 픽셀의 비율이 올라가고, 그만큼 메모리와 빌드 용량이 같이 줄어듭니다.

다만 여기에는 한계가 있습니다.
스프라이트가 거의 꽉 찬 사각형이면 아낄 여백이 애초에 없습니다.
**메모리를 노리고 아틀라스를 쓰는 것이라면 먼저 여백이 얼마나 되는지 봐야 합니다.**
배칭을 노린다면 여백과 무관하게 이득입니다.

## 묶는 기준은 로딩 시점이다

여기서 대부분이 틀립니다. **기능별로 묶으면 안 됩니다.**

아틀라스는 하나의 텍스처라 **일부만 올릴 수가 없습니다.**
스프라이트 하나를 쓰려고 하면 그 아틀라스가 통째로 메모리에 올라옵니다.

```text
나쁜 묶음 (기능 무관, 로딩 시점 무관)
  Atlas_All
    UI 아이콘 전부
    레벨1 배경 타일
    레벨2 보스 파츠
    이펙트 시퀀스
  결과: UI 하나 띄우는데 보스 텍스처까지 메모리에 상주

좋은 묶음 (로딩 시점 기준)
  Atlas_UI_Common          앱이 켜져 있는 내내 상주
  Atlas_Level2_Environment 레벨2 진입 시 로드
  Atlas_Level2_Characters  레벨2 진입 시 로드
  Atlas_FX_Combat          전투 진입 시 로드
```

기준을 한 문장으로 하면 이렇습니다.
**같이 올라오고 같이 내려가는 것끼리 묶습니다.**

레벨2의 배경과 레벨2의 캐릭터가 늘 같이 필요하면 한 장으로 묶어도 됩니다.
배경은 계속 필요한데 보스는 마지막에만 나온다면 나눠야 합니다.

## 크기

아틀라스 한 장의 최대 크기는 2048에서 4096 사이가 무난합니다.

- **8192는 쓰지 마세요.** 저사양 모바일에서 로드 자체가 실패하거나
  메모리가 감당이 안 됩니다. 한 장이 8K면 압축해도 상당한 크기입니다
- 반대로 **스프라이트 한두 장짜리 아틀라스**도 의미가 없습니다.
  빈 공간만 늘고 배치 이득도 없습니다. 그냥 개별 텍스처로 두거나 다른 아틀라스에 합칩니다