마지막 업데이트: 21 Sept, 2026

게임 개발자를 위한 이미지 파일 포맷: DDS, TGA, PNG, 및 KTX
게임 개발에서 텍스처는 런타임 메모리 사용량과 설치 빌드 크기 모두에서 가장 큰 비중을 차지합니다. 인디 스타일 플랫폼 게임을 만들든 AAA 오픈월드 RPG에서 포토리얼리즘을 추구하든, 텍스처 데이터를 저장, 처리 및 로드하는 방식은 프레임 레이트, 로드 시간 및 하드웨어 호환성에 직접적인 영향을 미칩니다.
초보자들이 흔히 저지르는 실수는 게임 텍스처를 웹 그래픽처럼 다루는 것입니다—디스크상의 가벼운 파일이 게임 엔진에서도 가벼운 성능을 의미한다고 가정하죠. GPU 세계에서는 런타임 현실이 전혀 다릅니다.
이번 심층 탐구에서는 현대 게임 개발에서 가장 중요한 네 가지 텍스처 및 이미지 파일 포맷인 DDS, TGA, PNG, 그리고 KTX를 분석합니다. 각각이 어떻게 작동하고, 에셋 파이프라인에서 어디에 위치하며, 언제 사용해야 하는지를 살펴볼 것입니다.
황금 규칙: 디스크 저장소 vs. 비디오 RAM (VRAM)
개별 포맷을 분석하기 전에, 개발자는 디스크 저장 압축과 GPU 하드웨어 블록 압축 사이의 근본적인 차이를 이해해야 합니다.
1. 디스크 압축 (PNG, JPEG, WebP)
PNG와 같은 포맷은 무손실 엔트로피 인코딩(DEFLATE)을 사용합니다. PNG가 SSD나 다운로드 서버에서 엄청난 공간을 절약해 주지만, 최신 GPU는 PNG 파일을 직접 샘플링할 수 없습니다. 게임 엔진이 PNG를 로드할 때:
- CPU는 파일을 시스템 메모리의 원시, 압축되지 않은 32비트 RGBA 픽셀로 압축 해제해야 합니다.
- 압축되지 않은 비트맵이 VRAM에 업로드됩니다.
- 2048×2048 텍스처는 PNG 파일이 디스크에서 1 MB이든 3 MB이든 관계없이 대략 16 MB의 VRAM을 차지합니다.
2. GPU 블록 압축 (BCn, ASTC, ETC2)
전용 GPU 포맷은 고정된 픽셀 블록(보통 4×4 픽셀 블록)을 더 작은 비트 표현으로 압축합니다. 그래픽 하드웨어는 CPU 측 압축 해제 없이 이러한 블록을 VRAM에서 직접 샘플링합니다:
- 런타임 압축 해제 오버헤드가 전혀 없는 직접적인 VRAM 랜덤 액세스.
- BC7/ASTC를 사용한 동일한 2048×2048 텍스처는 대략 4 MB의 VRAM만 차지합니다(75% 감소).
- Mipmaps는 컨테이너 파일에 직접 포함될 수 있습니다.
DDS와 KTX와 같은 컨테이너는 이러한 GPU 네이티브 포맷을 감싸기 위해 특별히 설계되었으며, PNG와 TGA는 파이프라인 초기에 별도의 역할을 수행합니다.
1. DDS (DirectDraw Surface)
Microsoft가 DirectX 7과 함께 도입한 DirectDraw Surface (.dds) 포맷은 PC, Xbox 및 콘솔 게임 개발을 위한 확고한 업계 표준입니다.
기술적 특성
- 컨테이너 유형: 네이티브 GPU 텍스처 컨테이너.
- 지원 압축: BC1부터 BC7까지 (블록 압축 / DXT 계열), 압축되지 않은 RGBA, 부동소수점 포맷 (HDR용 BC6H).
- 핵심 기능: 사전 생성된 mipmap, 큐브 맵, 텍스처 배열, 볼륨(3D) 텍스처.
개발자가 DDS를 사용하는 이유
DDS는 본질적으로 그래픽 하드웨어가 필요로 하는 데이터를 직접 메모리 덤프한 것입니다. 사전 생성된 mipmap이 포함된 DDS 텍스처를 로드할 때 엔진은 CPU 압축 해제를 완전히 건너뛰고 Direct3D 또는 Vulkan 메모리 복사를 GPU에 직접 전달합니다. 이는 스트리밍 및 레벨 로딩 중 CPU 병목 현상을 제거합니다.
장점
- 초고속 로드 시간: 런타임에 압축 해제 CPU 사이클이 전혀 필요하지 않습니다.
- 사전 생성된 Mipmap: 오프라인 mipmap 생성은 아티스트가 LOD 전반에 걸쳐 필터링, 샤프닝 및 노멀맵 정규화를 제어할 수 있게 합니다.
- VRAM 효율성: 업계 표준 BC 압축 알고리즘을 네이티브로 활용합니다.
단점
- DirectX/Windows Bias: 역사적으로 Microsoft 생태계와 연결되어 있었지만, 현대 데스크톱 엔진에서도 널리 지원됩니다.
- Lossy Compression Artifacts: 블록 압축(특히 노멀 맵의 BC1)은 BC5/BC7을 사용하지 않으면 블록 현상이 발생할 수 있습니다.
- Limited Mobile Support: 모바일 GPU는 일반적으로 데스크톱 BC 포맷보다 ASTC 또는 ETC2를 선호합니다.
2. TGA (Truevision Targa)
1984년에 만들어진 **TGA (.tga)**는 무압축 또는 런-길이 인코딩(RLE) 래스터 그래픽 파일 포맷으로, 30년 넘게 견고한 파이프라인 필수 요소로 남아 있습니다.
기술 사양
- Container Type: 압축되지 않은 저작/교환 비트맵.
- Bit Depths: 픽셀당 8, 16, 24, 32비트(RGB + 전용 8비트 알파 채널).
- Compression: 없음 또는 기본 RLE(런-길이 인코딩).
개발자들이 TGA를 사용하는 이유
TGA는 그 순수한 구조적 단순성 때문에 기술 아티스트와 엔진 프로그래머에게 선호됩니다. 복잡한 필터링 매트릭스에 알파 채널을 삽입하는 PNG와 달리, TGA는 색 데이터와 알파 채널을 완전히 별개로 유지하고 손대지 않습니다.
맞춤 마스크를 제작할 때(예: 거칠기를 빨간색에, 금속성을 초록색에, 앰비언트 오클루전을 파란색에, 높이를 알파에 패킹하는 경우), TGA는 채널 간에 미묘한 알고리즘 블렌딩이나 색 번짐이 발생하지 않도록 보장합니다.
장점
- 깨끗한 데이터 충실도: 채널 값의 비트 정확도 보존; 채널-패킹된 ORM(오클루전-거칠기-금속성) 텍스처에 이상적입니다.
- 간단한 파싱: 사내 파이프라인 도구, 맞춤형 익스포터 및 자동화 스크립트는 최소한의 코드 라인으로 TGA 파일을 읽고 쓸 수 있습니다.
- 범용 DCC 지원: Maya, 3ds Max, Blender, Substance 3D 및 Photoshop은 기본적으로 번거롭지 않은 TGA 내보내기를 제공합니다.
단점
- 거대한 파일 크기: Git/Perforce 저장소에서 큰 용량을 차지하고, 분산 팀에서 다운로드 속도가 느립니다.
- 런타임에 부적합: 압축 형식으로 GPU가 직접 사용할 수 없으며, 엔진이 요리 단계에서 변환해야 합니다.
3. PNG (Portable Network Graphics)
PNG (.png) 은 세계에서 가장 널리 인식되는 무손실 이미지 포맷으로, zlib/DEFLATE 압축을 활용해 풍부한 24비트 및 32비트 이미지를 놀라울 정도로 작은 파일로 압축합니다.
기술 사양
- 컨테이너 유형: 무손실 저작 및 전달 포맷.
- 비트 깊이: 채널당 최대 16비트 (48비트 RGB, 64비트 RGBA).
- 압축: 무손실 DEFLATE 알고리즘.
개발자들이 PNG를 사용하는 이유
PNG는 UI 자산, 스프라이트, 홍보 자료 및 중간 소스 텍스처의 주요 배포 형식으로 사용됩니다. Unity, Godot, 또는 Unreal Engine으로 만든 2D 게임의 경우, PNG는 선명한 픽셀 정확도와 완벽한 투명 마스크를 제공합니다.
장점
- 컴팩트 저장소 용량: 압축되지 않은 TGA에 비해 프로젝트 체크아웃 크기를 크게 줄입니다.
- 무손실 색상 품질: 고대비 가장자리와 벡터 스타일 일러스트레이션에서 압축 아티팩트가 전혀 없습니다.
- 네이티브 알파 투명도: 복잡한 반투명 UI 요소와 파티클 시트에 대한 깨끗한 8비트 알파 채널을 지원합니다.
단점
- 무거운 CPU 디코딩: 런타임에 큰 PNG를 압축 해제하면 프레임 레이트가 지연되고 GPU 업로드 전 메모리 사용량이 급증합니다.
- 프리멀티플라이드 알파 주의점: 일부 이미지 편집기는 완전히 투명한 픽셀의 RGB 데이터를 버려 텍스처 블리딩을 손상시키고 스프라이트 주변에 어두운 윤곽선을 만들 수 있습니다.
- 제로 VRAM 절감: GPU 내부에서 엔진의 텍스처 쿠커에 의해 처리되지 않는 한 전체 32비트 원시 메모리로 압축 해제됩니다.
4. KTX (Khronos Texture) 및 KTX 2.0
Khronos Group이 개발했으며—Vulkan, OpenGL, glTF의 관리 기관—**KTX (.ktx)**와 KTX 2.0은 크로스 플랫폼 GPU 텍스처를 위한 최신 오픈 표준을 나타냅니다.
기술적 특성
- 컨테이너 유형: 표준화된 오픈 GPU 텍스처 컨테이너.
- 압축 지원: Basis Universal (ETC1S 및 UASTC), ASTC, BCn, ETC2.
- 핵심 기능: 범용 텍스처 트랜스코딩, mipmap, 큐브맵, 배열 텍스처, glTF 통합.
개발자들이 KTX를 사용하는 이유
KTX 2.0은 파편화된 크로스 플랫폼 압축 문제를 해결합니다. 전통적으로 개발자는 데스크톱/콘솔용으로 DDS(BCn)를, 모바일/태블릿용으로 ASTC/ETC2를 제공해야 했습니다.
KTX 2.0과 Basis Universal을 사용하면:
- 텍스처를 작고 범용적으로 압축 가능한 포맷에 저장합니다.
- 런타임에 클라이언트 하드웨어는 파일을 로컬 GPU가 선호하는 블록 형식으로 직접 트랜스코딩합니다(예: GeForce RTX에서는 BC7, iPhone에서는 ASTC, 구형 Android 기기에서는 ETC2).
- 슈퍼압축(Zstandard)은 디스크에서 JPEG보다 작은 파일을 생성하며, 이를 밀리초 안에 네이티브 VRAM 블록으로 트랜스코딩합니다.
장점
- 진정한 크로스 플랫폼 표준: Vulkan, WebGL, WebGPU 및 모바일 기기에서 원활하게 실행됩니다.
- Basis Universal 트랜스코딩: 하나의 에셋 빌드로 데스크톱, 모바일, 브라우저를 대상으로 중복 텍스처 내보내기 없이 지원합니다.
- 일류 glTF 동반자: 현대 3D 웹 경험, 메타버스 엔진 및 오픈 렌더링 파이프라인에 필수적입니다.
단점
- 파이프라인 툴링 성숙도: 최신 빌드 체인(예: KTX-Software 스위트의
toktx)이 필요합니다; 오래된 독점 엔진은 기본 통합이 부족할 수 있습니다. - 트랜스코더 오버헤드: 약간의 런타임 트랜스코드 지연이 있지만(전체 PNG 소프트웨어 디코딩보다 수 배 빠름).
헤드 투 헤드 비교
| 기능 / 기준 | DDS | TGA | PNG | KTX / KTX 2.0 |
|---|---|---|---|---|
| 주요 사용 사례 | PC/콘솔 런타임 | 소스 저작 및 마스크 | 2D 스프라이트 및 소스 아트 | 크로스 플랫폼 및 웹 런타임 |
| 직접 GPU 샘플링 | 예 (네이티브) | 아니오 | 아니오 | 예 (네이티브 또는 트랜스코딩) |
| VRAM 압축 | 예 (BC1–BC7) | 아니오 (압축되지 않음) | 아니오 (압축되지 않음) | 예 (ASTC, BCn, Basis) |
| 프리베이크된 Mipmaps | 예 | 아니오 | 아니오 | 예 |
| 디스크 크기 | 보통 | 매우 높음 | 작음 | 극도로 작음 (Basis + Zstandard) |
| 생태계 | DirectX / 데스크톱 엔진 | DCC 소프트웨어 / 소스 파이프라인 | 범용 웹 및 2D 엔진 | Vulkan, WebGPU, glTF |
실용 가이드: 이상적인 에셋 파이프라인 구축
상업용 제작 파이프라인에서 이 네 가지 포맷을 어떻게 구성해야 할까요? 다음은 주요 스튜디오가 텍스처 파이프라인을 구성하는 방식입니다:
[DCC & Authoring] [Engine Ingestion / Cook] [Runtime GPU Target]
Substance / Photoshop / Blender Unreal / Unity / Custom Toolset VRAM Memory Blocks
• TGA (Clean packed masks) ──────► Build Engine Texture Cooker ──────► DDS (DirectX / Windows / Xbox)
• PNG (UI & 2D Sprites) ──────► Generates Mipmaps & Block ──────► KTX2 (Vulkan / WebGPU / Mobile)
• PSD / EXR (HDR & masters) ──────► Compression Automatically
- Source Assets: 마스터 파일 및 채널이 결합된 데이터를 프로젝트 저장소 내 TGA 또는 PNG 형식으로 저장하여 색상 정보가 손상되지 않도록 보장합니다.
- PC & Console Builds: 소스 텍스처를 DDS 파일로 변환하고, 고세부 알베도/노멀 맵에는 BC7을, 단일 및 이중 채널 마스크에는 BC4/BC5를 사용합니다.
- Cross-Platform, Web & Mobile Builds: 런타임 3D 에셋을 KTX 2.0으로 패키징하여 Android, iOS 및 WebGPU 전반에 걸친 범용 트랜스코딩을 활용하고 별도의 아트 브랜치를 유지할 필요가 없습니다.
- User Interfaces: 런타임 UI 텍스처를 선명한 비압축 포맷으로 유지하거나 고해상도 PNG 소스 파일에서 파생된 무손실 엔진 아틀라스로 보관합니다.
자주 묻는 질문 (FAQ)
Q1. 게임 엔진이 비디오 메모리에서 PNG를 직접 샘플링할 수 있나요?
A1: 아니요; GPU는 PNG 압축을 파싱할 수 없으므로 엔진은 PNG 파일을 메모리 내에서 원시 32비트 비트맵으로 디코딩한 후 VRAM에 업로드해야 합니다.
Q2. 기술 아티스트가 마스크 패킹에 PNG보다 TGA를 선호하는 이유는 무엇인가요?
A2: TGA는 순수하고 압축되지 않은 채널 데이터를 저장하며, 개별 RGB 및 알파 채널 전반에 걸쳐 색 번짐이나 파괴적인 가장자리 투명도 필터링이 없습니다.
Q3. 노멀 맵을 위한 DDS 컨테이너 내부에서 어떤 블록 압축 알고리즘을 사용해야 할까요?
A3: 노멀 맵에는 BC5(두 채널 탄젠트 스페이스 압축)를 사용하여 표준 BC1 블록 아티팩트 없이 깨끗한 표면 곡률을 유지합니다.
Q4. KTX 2.0이 크로스 플랫폼 게임에서 DDS보다 더 나은 이유는 무엇인가요?
A4: KTX 2.0은 Basis Universal을 지원하여 단일 파일이 실행 시 실시간으로 데스크톱 BCn 포맷이나 모바일 ASTC/ETC 포맷으로 트랜스코드될 수 있게 합니다.
Q5. DDS 또는 KTX 파일에 mipmap을 사전 베이킹하면 디스크 용량이 증가하나요?
A5: 예, 전체 mipmap 체인을 포함하면 파일에 약 33% 더 많은 원시 데이터가 추가되지만, 런타임 쉼머링을 제거하고 캐시 지역성을 개선하며 GPU 렌더링 성능을 향상시킵니다.