Unity 검색

Sample image/scene with HDR tone mapping applied
Sample image/scene with HDR tone mapping applied
공유

Is this article helpful for you?

Thank you for your feedback!

안녕하세요, Unity 그래픽스 팀입니다. Unity 2023.2.0a18(및 2023.2 베타)부터 Unity 에디터 및 스탠드얼론 플레이어에서 이제 크로스 플랫폼을 지원하며 유니버설고해상도 렌더 파이프라인과도 완벽하게 호환되는 HDR 출력이 제공된다는 기쁜 소식을 전해 드립니다.

HDR(High Dynamic Range) 디스플레이의 사용이 점점 더 많아지는 추세입니다. HDR 디스플레이는 더 높은 최고 밝기와 더 넓은 색역으로 이미지를 재현하여 향상된 콘트라스트(하이라이트/섀도우)와 색 채도를 구현할 수 있습니다. 그 결과 씬 전반의 폭넓은 휘도가 더 사실적으로 구현되고 표면 디테일이 향상되며, 깊이감 또한 개선됩니다.

HDR Gamut View: The larger triangle represents the Rec.2020 color space
HDR 색역 뷰: 더 큰 삼각형이 Rec.2020 색 공간을 나타냄

프로젝트에서 HDR 디스플레이를 활성화하는 방법에 관한 정보와 함께 플랫폼 지원 및 유용한 가이드라인을 알려 드리기 전에, HDR 렌더링 및 디스플레이의 개념을 간단히 살펴보겠습니다.

HDR 렌더링 및 디스플레이

HDR 렌더링을 활성화하면 카메라가 씬을 부동 소수점 프레임버퍼로 렌더링하며 이를 통해 렌더 파이프라인에서 폭넓은 색상 값을 저장하고 디테일을 보존할 수 있습니다. 조명과 포스트 프로세싱 같은 셰이더 계산을 수행할 때 SDR 렌더링보다 더 정확한 값을 사용하므로 더 실감 나는 결과물이 구현됩니다.

수년간 HDR 렌더링이 기본 워크플로로 사용되어 왔으나, HDR 지원 디스플레이가 없으면 표현 가능한 이미지의 색심도가 채널당 최대 8비트로 제한됩니다. 이 경우 하나의 픽셀에서 표현될 수 있는 최대 색상 수(16,777,216가지의 색상 값)와 최대 밝기 범위가 제한됩니다. HDR에서 SDR로의 톤 매핑을 사용해 색상 버퍼의 HDR 값을 LDR(Low Dynamic Range)로 다시 매핑하고 선택적으로 감마 보정을 적용한 다음, 마지막으로 스왑 체인 이미지에 결과를 작성해 표현이 이뤄집니다.

스크러빙: HDR 톤 매핑 적용(ACES 모드)

Unity 2022.1에는 데스크톱과 콘솔 플랫폼 타게팅 시 HDRP(고해상도 렌더 파이프라인)에서의 HDR 디스플레이 지원이 도입되었던 바 있습니다. 이는 스왑 체인 생성 시 디바이스의 기본 색 공간을 설정하고, 커스텀 HDR 톤 매핑을 사용하여 색상 버퍼의 콘텐츠를 디스플레이의 기본 HDR 범위로 다시 매핑하는 방식으로 작동합니다. HDR 인코딩은 이후 HDR 스왑 체인 이미지에 작성하기 전 최종 단계로 적용됩니다.

HDR 출력이 활성화된 상태에서 스왑 체인 이미지 포맷은 더 높은 색심도를 활성화하도록 설정됩니다(채널당 10비트 또는 16비트). 이러한 설정으로 각 픽셀에서 더 폭넓은 색상 값이 표현되며(대략 680억 가지의 값) 밝기 범위가 대폭 증가합니다.

Unity 2023.2 릴리스를 통해 이제 모든 렌더 파이프라인과 실행 가능한 플랫폼을 대상으로 Unity 에디터 및 스탠드얼론 플레이어에서 전체 HDR 톤 매핑 및 디스플레이 지원이 제공됩니다.

프로젝트에서 HDR 디스플레이 활성화

메뉴에서 Edit > Project Settings > Player > Other Settings로 이동해 플레이어 설정 창을 열면 다음과 같은 새 HDR 디스플레이 설정 항목을 찾을 수 있습니다.

  • Allow HDR Display Output
  • Use HDR Display Output

이러한 설정을 사용하면 지원되는 플랫폼에서 실행할 때 Unity 스탠드얼론 플레이어 및 에디터의 HDR 출력을 활성화할 수 있습니다.

Moving Editor capture of how to enable HDR Player settings

HDR 출력을 활성화하면, 표현된 이미지에서 Swap Chain Bit Depth가 낮거나(채널당 10비트) 높은(채널당 16비트) 선호 색심도로 설정되도록 구성할 수도 있습니다. 참고: 일부 디바이스는 16비트 버퍼 포맷을 지원하지 않으며 대신 10비트를 사용할 수 있습니다.

URP(유니버설 렌더 파이프라인)를 사용할 때는 현재 렌더 파이프라인 에셋에서 HDR 렌더링이 활성화되도록 설정해야 합니다. 프로젝트에 포함된 RP 에셋을 선택하고(보통 Assets > Settings 폴더에 있음) 프로젝트 인스펙터로 이동하여 Quality > HDR을 활성화합니다.

Enabling HDR display in the Unity Editor’s Player Settings
Unity 에디터의 플레이어 설정에서 HDR 디스플레이 활성화

마지막으로 HDR 톤 매핑을 활성화하도록 카메라에 영향을 미치는 포스트 프로세싱 볼륨에 Tonemapping 컴포넌트를 추가합니다. HDR 출력을 활성화하면 다음 Tonemapping 설정이 디스플레이의 HDR 기능에 따라 구성됩니다.

  • 최소 지원 밝기
  • 최대 지원 밝기
  • Paper White 값: 이 값은 디스플레이에서 표현되는 페이퍼 화이트 표면의 밝기를 나타내며 디스플레이의 전반적인 밝기를 결정합니다.

C# API를 사용해 디스플레이의 HDR 범위와 페이퍼 화이트 값에 액세스할 수 있습니다.

HDR tone mapping settings accessed via volume overrides
볼륨 오버라이드를 통해 HDR 톤 매핑 설정에 액세스

최적의 뷰어 경험을 구현하려면 지정된 HDR 보정 인터페이스를 통해 이러한 파라미터에 대한 런타임 제어를 제공하는 것이 좋습니다. 새로운 HDR 보정 샘플 프로젝트를 곧 공유해 드릴 예정이며, 해당 프로젝트를 레퍼런스 구현으로 활용해 작업을 시작할 수 있습니다.

HDR 톤 매핑 및 출력에 대한 더 자세한 정보는 URP의 HDR 출력 HDRP의 HDR 출력에 관해 업데이트된 기술 자료를 참조하세요.

플랫폼 지원

런타임에 HDR 출력을 활용하려면 디바이스가 HDR 출력 가능 디스플레이에 연결되어 있어야 하며 GPU에 HDR 스왑 체인 및 표현 활성화에 필요한 기능을 지원해야 합니다.

호환되지 않는 디바이스에서 실행하면 런타임에 HDR 출력이 자동으로 비활성화됩니다. HDROutputSettings.available을 통해 메인 디스플레이에서 HDR 디스플레이가 지원되는지, HDR 출력이 활성화되어 있는지 쿼리할 수 있습니다.

Unity 2022에서 제공되었던 기존 데스크톱 및 콘솔 지원 외에 Unity 2023.2에서는 다음과 같은 모바일 플랫폼을 추가로 지원합니다.

  • iOS 플레이어(iOS 16+, iPadOS 16+)
  • Vulkan 및 GLES를 사용하는 Android 플레이어(Android 9+, 단 디바이스 성능에 따라 다름)

HDR 디스플레이 지원을 제공하는 일반적인 일부 모바일 디바이스에는 iPhone X 이상 버전, 삼성 Galaxy S10 이상 버전, Galaxy Note 10 이상 버전, Galaxy Tab S6 이상 버전이 포함됩니다.

이번 릴리스에는 실행 가능한 플랫폼을 위한 XR 지원도 포함됩니다. HDR 디스플레이 지원을 확인하려면 XR 플랫폼 기술 자료를 참조하세요.

가이드라인 및 제한 사항

HDR 프로세싱은 HDR 톤 매핑과 인코딩이라는 두 단계로 적용되며, 두 단계 모두 최종 포스트 프로세싱 렌더 패스에서 적용되는 것이 일반적입니다.

한 가지 예외는 URP에서 포스트 프로세싱 이후에 실행되는 추가 패스를 삽입할 때입니다. 이 경우 ‘최종 블릿’ 패스에서 HDR 인코딩이 별도로 적용되며 항상 렌더 파이프라인 끝에서 호출됩니다.

RenderPassEvent.AfterRenderingPostProcessing 이벤트에 삽입된 커스텀 오버레이 패스에는 HDR 출력을 위한 특수 처리가 필요합니다. HDR 출력이 활성 상태이고 포스트 프로세싱이 활성화된 경우 이전 패스에서는 톤 매핑과 색 공간 전환을 적용했을 것입니다. 그 결과, 원하는 동적 범위 및 색 공간과 연동되도록 커스텀 효과를 제작해야 합니다.

HDR 출력을 사용할 때는 디스플레이 가능한 모든 카메라에서 HDR 렌더링을 활성화하는 것이 좋습니다. 카메라별로 HDR 렌더링을 계속 비활성화할 수도 있지만 포스트 프로세싱이나 포스트 프로세싱 이후 패스를 삽입하는 효과 이후에 렌더 패스가 실행되지 않도록 해야 합니다. HDR 출력으로 SDR 렌더링을 사용할 때는 다음 기능이 지원되지 않습니다.

  • 업스케일링
  • FXAA
  • HDR 디버그 모드
  • 포스트 프로세싱 이후 커스텀 패스

2D 렌더러에서 HDR 출력으로 SDR 렌더링을 사용하려는 경우 포스트 프로세싱을 꺼야 합니다.

위에서 언급한 제한 사항과 가이드라인에 대한 자세한 정보는 다음 공식 기술 자료를 참조하세요.

문의하기

프로젝트에서 새로운 HDR 디스플레이 지원을 사용해 보고 의견을 들려 주시기 바랍니다.

여러분의 피드백은 매우 중요하며 유니티가 가장 중요한 솔루션의 우선순위를 정하는 데 큰 도움이 됩니다. 유니티의 공개 로드맵을 확인하고 가장 필요한 기능에 투표해 주시기 바랍니다. 추가로 원하는 변경 사항이 있다면 언제든지 기능을 요청하거나 팀에 직접 문의해 주세요.

자세히 살펴보고 싶다면 연재 중인 Tech from the Trenches 시리즈에서 Unity 개발자들이 전하는 미래의 기술 정보도 확인해 보시기 바랍니다.

Is this article helpful for you?

Thank you for your feedback!

포럼에서 토론에 참여하기
관련 게시물