Unity XR SDK PreInit 인터페이스 가이드

이 문서에서는 Unity의 XR SDK PreInit 인터페이스에 대해 쉽게 이해할 수 있도록 설명합니다. 이 인터페이스는 그래픽스 기기가 생성되기 전에 초기 설정 작업을 수행하는 데 사용됩니다. 주로 멀티 GPU 환경에서 특정 GPU 선택, 그래픽스 확장 활성화 및 버퍼 수정 등의 작업에 활용됩니다.

개요

XR SDK PreInit 인터페이스는 네이티브 심볼 XRSDKPreInit을 익스포트하여 런타임 초기화가 시작되기 전에 호출될 수 있도록 합니다. 공급자는 이 과정에서 필요한 정보를 엔진에 제공하기 위해 UnityXRPreInitProvider 구조체를 채워야 합니다.

XRLoader 구현

Unity 프로젝트의 빌드 과정에서 XRSDKPreInit을 호출하기 위해 공급자 라이브러리의 이름이 필요합니다. 이를 위해 XRLoader에 다음 인터페이스를 구현합니다:

public string GetPreInitLibraryName(BuildTarget buildTarget, BuildTargetGroup buildTargetGroup)
{
    return "XRSDKMyProviderLibraryName";
}

이 코드가 Unity 시작 시 실행되어 라이브러리를 로드합니다. 이후 이 라이브러리를 열고 XRSDKPreInit을 호출하게 됩니다.

PreInit 등록

다음은 초기 엔진 초기화에 사용할 콜백을 등록하는 간단한 예제입니다:

XRSDKPreInit(IUnityInterfaces * interfaces)
{
    IUnityXRPreInit* preInit = (IUnityXRPreInit*)interfaces->GetInterface(GetUnityInterfaceGUID<IUnityXRPreInit>());

    UnityXRPreInitProvider provider = { 0 };

    provider.userData = nullptr;
    provider.GetPreInitFlags = GetPreInitFlags;
    provider.GetGraphicsAdapterId = GetGraphicsAdapterId;
    provider.GetVulkanInstanceExtensions = GetVulkanInstanceExtensions;
    provider.GetVulkanDeviceExtensions = GetVulkanDeviceExtensions;

    preInit->RegisterPreInitProvider(&provider);
}

필요하지 않은 모든 콜백은 nullptr로 설정해야 하며, 각 콜백은 다음과 같은 목적을 가지고 있습니다.

콜백 이름 설명
GetPreInitFlags 플래그의 64비트 비트필드를 반환합니다.
GetGraphicsAdapterId 그래픽스 API 초기화를 위해 사용하는 그래픽스 어댑터를 설정합니다.
GetVulkanDeviceExtensions Vulkan 초기화에 필요한 특정 확장을 반환합니다.
GetVulkanInstanceExtensions 인스턴스에 대한 특정 확장을 반환합니다.

알려진 문제

  • 현재 GetPreInitLibraryName은 XRManager 프리팹의 첫 번째 XRLoader에서만 호출되므로, 첫 번째 공급자만 런타임 시점에 PreInit 엔트리 포인트를 제공할 수 있습니다.
  • PreInit는 초기 엔진 초기화 동안 노출되며, 현재 에디터에는 적용되지 않습니다.

예제 활용 및 응용

  1. 멀티 GPU 환경: 그래픽스 어댑터를 선택하여 특정 GPU에서 XR 환경을 실행할 수 있습니다. 이는 매우 중요한 설정입니다.
  2. Vulkan 지원: VR 환경에서 Vulkan을 사용해야 하는 경우, 공급자는 필요한 확장 리스트를 제공해야 합니다.
  3. EGL 초기화: Android 장치와 같은 플랫폼에서 EGL을 초기화할 때 PBuffer 또는 NO_ERROR 컨텍스트와 같은 특별한 설정이 필요할 수 있습니다.

Unity XR SDK PreInit 인터페이스는 복잡한 그래픽스 환경을 설정하는데 매우 유용하며, 특히 VR 및 AR 응용 프로그램 개발에 있어 필수적인 요소입니다.

Read more

Unity 매뉴얼 스크립팅 API 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 간단한 해설과 활용 예제들을 포함하고 있습니다. Unity는 게임 개발 플랫폼으로, 스크립팅 API를 통해 게임의 다양한 기능을 제어하고 수정할 수 있습니다. 버전 Unity 스크립팅 API는 여러 버전으로 제공됩니다. 주의 깊게 선택하여 사용하는 것이 중요합니다. 버전 설명 2023.2 최신 기능 및 버그 수정이 추가됨

By 이재협/실장/시스템개발실/PHYSIA

Unity 매뉴얼 스크립팅 API 설명서 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 정보를 제공하며, 버전에 따라 다르게 적용되는 내용들을 설명합니다. 본 문서에서는 주요 내용을 간단히 정리하고 활용 가능 예제를 통해 이해를 돕겠습니다. 기본 개념 Unity에서 스크립팅 API는 게임 오브젝트와 그들의 동작을 제어하기 위한 강력한 도구입니다. 이를 통해 게임의 로직, 물리 엔진, 애니메이션 및 사용자 인터페이스를

By 이재협/실장/시스템개발실/PHYSIA

Unity 스크립팅 API 가이드

이 문서는 Unity의 스크립팅 API에 대해 설명합니다. Unity는 게임 개발을 위한 인기 있는 엔진으로, 강력한 스크립팅 기능을 제공합니다. 이 가이드는 Unity에서 스크립트를 작성하고 사용하는 방법을 이해하는 데 도움을 드립니다. 목차 * Unity 스크립팅 소개 * 기본 스크립트 생성 * 스크립트 사용 예제 * 응용 프로그램 * 참고 자료 Unity 스크립팅 소개 Unity는 C# 프로그래밍 언어를

By 이재협/실장/시스템개발실/PHYSIA