Unity 메탈 그래픽스 가이드 (2022.3)
이 문서는 Unity의 메탈 그래픽스 API에 대한 기본 정보를 제공하며, iOS, tvOS, macOS 환경에서 Metal을 사용할 때의 요구 사항을 다룹니다.
1. Metal이란?
Metal은 Apple의 그래픽스 API로, 고성능 그래픽과 연산을 지원합니다. Unity는 Metal을 사용하여 Apple 기기에서 최적화된 그래픽 성능을 제공합니다.
2. 플랫폼 호환성
Unity는 다음 플랫폼에서 Metal을 지원합니다: - iOS - tvOS - macOS (Unity 플레이어용) - macOS (Unity 에디터용)
3. 하드웨어 호환성
Unity는 모든 Apple 기기에서 Metal을 지원합니다. 즉, 최신 iOS 기기부터 macOS 기기에 이르기까지 다양한 장치에서 Metal을 활용할 수 있습니다.
4. 렌더 파이프라인 호환성
렌더 파이프라인 | Metal 지원 |
---|---|
빌트인 렌더 파이프라인 | 지원 |
유니버설 렌더 파이프라인 (URP) | 지원 |
고해상도 렌더 파이프라인 (HDRP) | macOS만 지원 |
커스텀 스크립터블 렌더 파이프라인 (SRP) | 지원 |
5. 셰이더 호환성
Metal은 최소 셰이더 컴파일 타겟으로 3.5를 요구합니다. 또한 Metal은 지오메트리 셰이더를 지원하지 않음에 유의해야 합니다.
5.1 셰이더 데이터 타입
- 특정 Metal 기기는 16비트
half
데이터 타입을 지원하지 않습니다. - 이로 인해 Unity 셰이더는
half
를 32비트float
로 변환하여 사용합니다. real
데이터 타입은 모바일 디바이스에서half
로, 데스크톱에서는float
로 표현됩니다.
6. 성능 최적화
half
데이터 타입을 적절히 사용하면 작업 속도를 높이고 메모리 사용량 및 모바일 디바이스의 배터리 소모를 줄일 수 있습니다. 예를 들어, 고정밀도가 필요 없는 값에 half
를 사용하면 성능이 향상됩니다.
7. 지원의 시사점
16비트 부동 소수점(half
)의 사용은 32비트(float
)에 비해 정밀도가 낮습니다. 따라서 다음과 같은 사항에 유의해야 합니다: - half
를 지원하는 기기에서 애플리케이션을 테스트해야 정밀도 문제를 조기에 발견하고 수정할 수 있습니다. - half
를 지원하지 않는 기기에서의 테스트는 나중에 문제가 발생할 수 있으므로 주의해야 합니다. - CPU 코드에서도 버퍼에 값을 쓸 때 사용하는 데이터 타입을 고려해야 합니다.
8. 관련 자료
- Unity 공식 홈페이지의 메탈 그래픽스 디버깅 및 기술 자료에서 추가 정보를 확인하세요.
이 가이드는 Unity에서 Metal을 효과적으로 활용하고, 플랫폼 간의 호환성을 관리하며, 성능을 최적화할 수 있도록 돕기 위한 기초를 제공합니다.