이 문서는 Unity에서 사용되는 다양한 텍스처 포맷과 그 활용에 대해 설명합니다. 각 플랫폼별 텍스처 포맷, 압축 방식, 품질 등 다양한 정보를 제공합니다.
용어 정의
- 픽셀당 비트 (bpp): 한 텍스처 픽셀이 차지하는 저장 공간의 크기. bpp 값이 낮을수록 디스크와 메모리를 덜 차지.
- LDR (Low Dynamic Range): 일반적인 이미지 포맷으로, RGB 값이 0.0(검정)에서 1.0(흰색) 사이에 위치.
- HDR (High Dynamic Range): 0-1 이상의 색상을 가진 특수 이미지 및 텍스처 포맷.
- RGB/RGBA: 각각 빨강, 초록, 파랑, 알파(투명도)를 포함한 색상 모델.
- VBR (Variable Bit Rate): 픽셀당 비트가 고정되지 않고 콘텐츠에 따라 달라지는 방식.
플랫폼별 권장 텍스처 포맷
플랫폼 |
RGB 텍스처 |
RGBA 텍스처 |
HDR 텍스처 |
데스크톱 |
DXT1 |
BC7 또는 DXT5 |
BC6H |
iOS |
ASTC |
ASTC |
N/A |
Android |
ASTC, ETC2 |
ETC2 |
N/A |
텍스처 임포트 설정
Unity에서는 텍스처 임포트 설정을 통해 각 텍스처의 포맷과 압축을 제어할 수 있습니다. 일반적으로 다음과 같은 설정을 사용합니다.
- 기본 텍스처 포맷: 플랫폼별로 基本값으로 설정됩니다.
- 압축 설정: 사용자가 직접 압축 방식을 선택할 수 있습니다.
플랫폼별 기본 텍스처 포맷
플랫폼 |
일반 품질 |
높은 품질 |
낮은 품질(성능 위주) |
Windows |
RGB Compressed DXT1 |
RGBA Compressed BC7 |
RGB Compressed DXT1 |
Android |
RGB Compressed DXT1 |
RGBA Compressed ASTC |
RGBA Compressed ETC2 |
iOS |
RGBA Compressed ASTC |
RGBA Compressed PVRTC |
N/A |
품질별 텍스처 포맷
텍스처 포맷 |
설명 |
품질 |
픽셀당 비트 |
텍스처 크기(MB) |
RGB(A) Compressed BC7 |
고품질 압축된 RGB 또는 RGBA |
높음 |
8 |
1.0 |
RGBA Crunched DXT5 |
RGBA, 추가 디스크 크런치 압축 |
낮음 |
가변 |
가변 |
RGB Compressed DXT1 |
중간 품질의 압축된 RGB |
중간 |
4 |
0.5 |
플랫폼별 지원되는 텍스처 포맷
텍스처 포맷 |
Windows |
macOS |
Linux |
Android |
iOS & tvOS |
RGB(A) Compressed BC7 |
지원 |
지원 |
지원 |
지원 안 함 |
지원 안 함 |
RGBA Compressed DXT5 |
지원 |
지원 |
지원 |
지원 안 함 |
지원 안 함 |
RGBA Compressed ASTC |
지원 안 함 |
지원 안 함 |
지원 안 함 |
부분적 지원 |
지원 |
예제를 통한 적용
예제 1: 데스크톱 및 모바일에서 최적의 텍스처 포맷 적용하기
using UnityEngine;
public class TextureExample : MonoBehaviour
{
public Texture2D myTexture;
void Start()
{
// 텍스처 임포트 설정 적용
myTexture = new Texture2D(1024, 1024);
myTexture.wrapMode = TextureWrapMode.Repeat;
myTexture.filterMode = FilterMode.Bilinear;
// 예외적으로 저사양 플랫폼에 맞춰 압축된 텍스처 사용
if (Application.platform == RuntimePlatform.Android)
{
// ETC2 포맷으로 텍스처 설정
myTexture.Compress(TextureFormat.ETC2_RGBA8);
}
}
}
예제 2: HUD에 텍스처 적용하기
using UnityEngine;
public class HUDController : MonoBehaviour
{
public Texture2D hudTexture;
void OnGUI()
{
// HUD 텍스처 그리기
GUI.DrawTexture(new Rect(10, 10, 100, 100), hudTexture);
}
}
결론
Unity에서 텍스처 포맷은 플랫폼별로 다르게 설정해야 최상의 성능을 발휘할 수 있습니다. 이를 통해 게임의 그래픽 품질과 실행 성능을 최적화할 수 있습니다. 텍스처 포맷에 대한 깊은 이해는 효율적인 게임 개발에 큰 도움이 됩니다.