Unity 매뉴얼: Android의 프레임버퍼 방향

개요

Android 애플리케이션의 프레임버퍼 방향은 기기의 기본 디스플레이 방향과 일치해야 합니다. 만약 일치하지 않는 경우, Android는 화면을 매 프레임마다 회전시킵니다. 이는 기기의 성능에 영향을 미칠 수 있습니다. Vulkan을 사용하는 경우, Unity는 이 회전을 최적화하여 성능에 미치는 영향을 최소화합니다.

사전 회전(Pre-Transform) 사용

사전 회전 활성화 방법

  1. C# 스크립트 사용: csharp PlayerSettings.vulkanEnablePreTransform = true;
  2. Unity 에디터 사용:
  3. Edit > Project Settings를 선택합니다.
  4. Project settings 창에서 Player 탭을 선택합니다.
  5. 아래와 같이 Android Player Settings의 Other Settings 섹션에서 "Apply display rotation during rendering"을 활성화합니다.

사전 회전의 작동 방식

  • Unity는 백버퍼에 직접 렌더링할 때 사전 회전을 적용합니다.
  • 이 회전은 빌트인 셰이더 변수인 UNITY_MATRIX_MVPUNITY_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 애플리케이션: 현실 세계의 방향에 대한 선명한 표시가 필요한 증강현실 애플리케이션에서 이 방식이 유용하게 쓰일 수 있습니다.