Unity 매뉴얼: Android의 프레임버퍼 방향
개요
Android 애플리케이션의 프레임버퍼 방향은 기기의 기본 디스플레이 방향과 일치해야 합니다. 만약 일치하지 않는 경우, Android는 화면을 매 프레임마다 회전시킵니다. 이는 기기의 성능에 영향을 미칠 수 있습니다. Vulkan을 사용하는 경우, Unity는 이 회전을 최적화하여 성능에 미치는 영향을 최소화합니다.
사전 회전(Pre-Transform) 사용
사전 회전 활성화 방법
- C# 스크립트 사용:
csharp PlayerSettings.vulkanEnablePreTransform = true;
- Unity 에디터 사용:
- Edit > Project Settings를 선택합니다.
- Project settings 창에서 Player 탭을 선택합니다.
- 아래와 같이 Android Player Settings의 Other Settings 섹션에서 "Apply display rotation during rendering"을 활성화합니다.
사전 회전의 작동 방식
- Unity는 백버퍼에 직접 렌더링할 때 사전 회전을 적용합니다.
- 이 회전은 빌트인 셰이더 변수인
UNITY_MATRIX_MVP
와UNITY_MATRIX_P
에 영향을 미칩니다. - 회전 후에도
Screen.width
와 같은 API 호출은 그대로 사용할 수 있습니다.
특별한 매크로와 제한 사항
주요 매크로
UNITY_PRETRANSFORM_TO_DISPLAY_ORIENTATION
: 여러 조건을 충족해야 정의됩니다.UNITY_DISPLAY_ORIENTATION_PRETRANSFORM
: 현재 설정된 회전 값입니다.
제한 사항
- Unity의 투사 매트릭스를 사용하지 않는 셰이더
- 화면 공간을 사용하는 셰이더와 같은 경우, 추가 수정을 요구할 수 있습니다.
- Vulkan 스왑체인 이미지를 사용하는 경우, 네이티브 렌더링 플러그인이 수정되어야 할 수 있습니다.
추가 리소스
- Android 개발자 웹사이트의 Vulkan 설계 가이드라인
- Arm 커뮤니티 웹사이트의 Vulkan 모바일 베스트 프랙티스
정리
사전 회전 기능은 Android 플랫폼에서 Vulkan 그래픽스 API를 효율적으로 사용할 수 있게 도와줍니다. 성능 최적화를 위해 Unity의 다양한 API와 매크로를 활용할 수 있으며, 기능의 적절한 사용은 애플리케이션의 사용자 경험을 향상시킬 수 있습니다.
활용 예제
- 게임 개발: 게임이 다양한 화면 방향에서 잘 작동하도록 하고 싶을 때, 사전 회전 기능을 활용하여 무엇이든 원활하게 표시될 수 있습니다.
- AR/VR 애플리케이션: 현실 세계의 방향에 대한 선명한 표시가 필요한 증강현실 애플리케이션에서 이 방식이 유용하게 쓰일 수 있습니다.