다음을 통해 공유


고급 색을 사용하여 ICC 프로필 동작

고급 색은 표준 디스플레이보다 색상 충실도가 훨씬 높은 디스플레이에 대한 OS 기술의 우산 용어입니다. 자세한 내용은 높은/표준 동적 범위 디스플레이에서 고급 색으로 DirectX 사용을 참조하세요. 고급 색 및 자동 색 관리는 레거시 및 최신 앱 모두에 대해 일관되고 색이 정확한 디스플레이 색을 보장합니다. 그러나 앱은 이미 ICC(International Color Consortium) 색 프로필을 사용하여 고유한 명시적 색 관리를 수행할 수 있습니다.

SDR 또는 HDR 디스플레이에서 고급 색이 활성화되면 디스플레이 ICC 프로필의 동작이 이전 버전과 호환되지 않는 방식으로 변경됩니다. 앱이 디스플레이 ICC 프로필과 함께 작동하는 경우 Windows는 앱이 계속해서 올바른 동작을 얻을 수 있도록 호환성 도우미를 제공합니다. 고급 색 인식 앱은 Windows에서 프로필을 추상화하는 대체 앱 연결 API를 제공하므로 디스플레이 ICC 프로필과 직접 상호 작용하지 않아야 합니다. 전체 지침은 높은/표준 동적 범위 디스플레이에서 고급 색이 있는 DirectX 사용에서 사용할 수 있습니다.

이 항목에서는 ICC 프로필 동작의 변경 내용에 대해 설명합니다. 또한 색 관리 앱에서 디스플레이 ICC 프로필을 계속 사용해야 하는 경우 이 항목에서는 고급 색 혜택을 증분 방식으로 활용하도록 앱을 조정하는 방법을 보여 줍니다.

레거시 Windows 색 관리 동작

고급 색이 비활성 상태인 경우 Windows는 앱의 시각적 콘텐츠 출력(예: GDI hDC, DirectX 스왑 체인 또는 컴퍼지션 시각적 개체)에서 색 관리를 수행하지 않습니다. 실제로 앱 콘텐츠가 표준 sRGB 색 공간에 있다고 가정합니다. 활성 디스플레이에서 정확한 색 재현을 원하는 경우 앱은 ICC(International Color Consortium) 색 프로필을 사용하여 자체 색 관리를 수행해야 합니다. 기본 개념 단계는 다음과 같습니다.

  1. 디스플레이의 색 특성을 가져옵니다.
  2. 디스플레이의 색 공간으로 색 공간 변환을 수행합니다.
  3. 디스플레이의 영역으로 제한하기 위해 영역 매핑을 수행합니다.

다음은 세 단계의 ech에 대한 자세한 내용입니다.

디스플레이의 색 특성 가져오기

Win32 앱은 Windows Color System 프로필 관리 기능을 사용하여 기본 ICC 프로필을 가져옵니다. 이 프로필은 사용 가능한 색 영역을 포함하여 디스플레이의 색상 특성을 알려줍니다.

유니버설 Windows 플랫폼 앱은 DisplayInformation.GetColorProfileAsync 메서드를 대신 사용합니다.

디스플레이의 색 공간으로 색 공간 변환 수행

디스플레이의 색 공간이 콘텐츠의 색 공간과 일치하지 않는 경우 색 공간 변환을 수행해야 합니다. 예를 들어 디지털 콘텐츠는 종종 sRGB로 인코딩되지만 디스플레이는 넓은 영역 DCI-P3일 수 있습니다. 일반적으로 ICC 프로필을 읽고 콘텐츠의 색 값을 일치하도록 변환하는 ICC 색 관리 라이브러리를 사용합니다. Windows는 여러 ICC 색 관리 엔진을 제공합니다. 예를 들어 Direct2D 색 관리 효과입니다.

ICC 프로필 기반 색 관리는 표시 참조 또는 출력 참조라는 점에 유의해야 합니다. 즉, 색 값은 절대(장면 참조) 색으로 저장되지 않고 디스플레이의 색 공간(출력 디바이스)을 기준으로 인코딩됩니다. 예를 들어 앱이 sRGB 빨간색을 렌더링하는 경우 렌더링된 출력에서와 같이 RGB(1, 0, 0) 표시됩니다. 그러나 Adobe RGB 디스플레이 RGB(1, 0, 0) 에서 해당 콘텐츠를 렌더링하는 경우 디스플레이에서 가장 포화된 빨간색(Adobe RGB 빨간색)으로 해석되기만 하면 잘못됩니다. ICC 색 변환을 적용하면 색을 로 RGB(0.858659, 0, 0)다시 인코딩하고 Adobe RGB 디스플레이에서 렌더링하면 sRGB 빨간색으로 올바르게 재현됩니다.

영역 매핑을 수행하여 디스플레이의 영역으로 제한

디스플레이의 색 공간과 일치하도록 색 값을 재해석하는 것 외에도 디스플레이가 콘텐츠의 모든 색을 물리적으로 재현할 수 없는 경우를 처리해야 합니다. 콘텐츠의 색 영역이 디스플레이보다 크면 입니다. 이 프로세스를 영역 매핑이라고 합니다.

콘텐츠의 더 큰 영역을 근사치로 계산하는 방법을 절충해야 하기 때문에 영역 매핑은 손실됩니다. 가장 간단한 방법은 디스플레이 영역 내에 있는 색이 유지되고 영역 외부의 색이 가장 가까운 영역 내 값으로 잘리는 색 메트릭입니다.

ICC 프로필 기반 워크플로에서 영역 매핑은 일반적으로 색 관리 라이브러리에서 자동으로 처리됩니다. 렌더링 의도를 선택하여 매핑 동작을 제어할 수 있습니다(렌더링 의도 모드 참조).

참고

고급 색 워크플로에 있는 경우 HDR 및 일부 WCG 디스플레이에 사용되는 것보다 색 영역이 작은 SDR 원본 및 대상용으로 설계되었기 때문에 원본이나 대상 모두에 대해 지각 렌더링 의도를 사용하지 않는 것이 좋습니다. 을 사용하면 예기치 않은 동작이 발생할 수 있습니다.

Windows 자동 시스템 색 관리

고급 색이 활성화되면 Windows에서 자동 시스템 색 관리를 수행합니다. 그러면 앱의 색 콘텐츠가 디스플레이에서 정확하게 재현됩니다. 고급 앱은 최대 색 및 지각 정확도를 위해 추가 처리를 계속 수행할 수 있지만 앱에서 필요한 작업을 크게 간소화할 수 있습니다. 자세한 내용은 높은/표준 동적 범위 디스플레이에서 고급 색으로 DirectX 사용을 참조하세요.

디스플레이의 색 특성 가져오기

고급 색 인식 앱은 디스플레이 ICC 프로필과 직접 상호 작용해서는 안 됩니다. 대신 DisplayInformation::GetAdvancedColorInfo 또는 IDXGIOutput6을 사용하여 디스플레이의 색 속성을 가져올 수 있습니다.

디스플레이의 색 공간으로 색 공간 변환 수행

Windows는 현재 기본 색 프로필에 의해 결정되는 디스플레이의 색 공간으로 색 공간 변환을 수행합니다. 프로필이 없으면 EDID 색시계 데이터가 사용됩니다. 앱은 장면 참조 색 동작을 자동으로 가져옵니다. 예를 들어 로 인코딩된 sRGB 빨간색을 RGB(1, 0, 0) 렌더링하고 Adobe RGB 모니터에 표시하는 경우 Windows는 이를 sRGB 빨간색으로 올바르게 재현합니다. 고급 색 인식 앱은 IDXGISwapChain3::SetColorSpace1을 사용하여 Windows에 알리기 위해 올바른 색 공간으로 콘텐츠에 태그를 지정해야 합니다. 표준 정수 픽셀 형식(예: 8비트 RGBA)으로 렌더링되는 모든 고급 색 인식 앱의 경우 Windows는 앱을 sRGB로 명시적으로 처리합니다. 고급 색 시나리오에서 AdobeRGB 빨간색을 렌더링하려면 scRGB 태그가 지정된 표면에서 렌더링 RGB(1.158157,0,0) 해야 합니다(디스플레이의 영역으로 제한됨).

영역 매핑을 수행하여 디스플레이의 영역으로 제한

GPU의 디스플레이 파이프라인은 영역 외 색에서 숫자 클리핑을 수행합니다. 앱에서 보다 정교한 매핑을 사용하려는 경우 직접 매핑해야 합니다.

고급 색을 사용하여 ICC 프로필 기본 동작

자동 시스템 색 관리는 기존 ICC 프로필 기반 앱이 동작하는 방식에 반드시 영향을 줍니다. 현재 OS(운영 체제)에서 처리하는 많은 작업을 수행하고 있기 때문에 Windows는 ICC 프로필 기반 앱에 기본 동작(아래 설명)을 적용합니다. 이렇게 하면 해당 앱에 잘못된 동작이 없습니다. 그러나 추가 작업이 없으면 확장된 색 기능에 액세스할 수 없습니다.

특히 기본적으로 ICC 프로필 기반 앱은 모니터가 실제로 더 넓은 영역인 경우에도 sRGB 영역으로 제한됩니다. Windows는 또한 ICC 앱에 디스플레이의 전체 영역 액세스 권한을 부여할 수 있는 ICC 호환성 도우미를 제공합니다. 자세한 내용은 이 항목의 ICC 프로필 호환성 도우미 표시 섹션을 참조하세요.

디스플레이의 색 특성 가져오기

고급 색이 활성화되면 실제로 설치된 프로필에 관계없이 디스플레이의 기본 프로필을 가져오기 위해 색 프로필 관리 API를 호출하면 "프로필 없음"이 반환됩니다. 규칙에 따라 "프로필 없음"은 sRGB로 해석되어야 합니다.

표시 ICC 프로필은 여전히 유효하며 고급 색과 함께 사용되지만 시스템 수준에서만 사용되며 대부분의 앱은 직접 상호 작용하면 안 됩니다. 아래 정보는 일반적으로 앱이 모든 표시 프로필을 열거하거나 프로필을 작성/설치하는 유틸리티인 경우에만 필요합니다.

이를 적용하기 위해 Windows는 및 EXTENDED 색 프로필 하위 형식의 STANDARD 개념을 추가합니다. 이는 COLORPROFILESUBTYPE을 사용하는 모든 색 프로필 관리 API에 적용됩니다.

CPST_STANDARD_DISPLAY_COLOR_MODE
CPST_EXTENDED_DISPLAY_COLOR_MODE

참고

STANDARDEXTENDED 하위 형식은 프로필 자체 내에 저장된 속성이 아니라 프로필의 디스플레이 연결(즉, 프로필이 디스플레이의 프로필 연결 목록에 추가되는 경우)에 적용됩니다. 단일 프로필은 디스플레이의 및 하위 형식 모두 STANDARDEXTENDED 연결될 수 있으므로 표준 및 고급 색 시나리오 모두에 사용할 수 있습니다.

일반 SDR이든 고급 색 SDR이든 SDR에서 사용하기 위한 표시 프로필 연결에는 하위 형식 STANDARD (값이 지정되지 않은 경우 기본값)이 있습니다. HDR 모드에서 사용할 디스플레이 프로필 연결은 하위 형식 EXTENDED입니다. 앱에서 하위 형식을 지정하지 않으면 로 해석됩니다 STANDARD.

COLORPROFILESUBTYPE을 사용하는 모든 getter API는 일치 STANDARD 하거나 EXTENDED 하위 형식이 있는 프로필만 반환합니다. 예를 들어 HDR이 활성 상태인 경우 하위 형식이 있는 EXTENDED 유일한 표시 프로필은 사용할 수 있으며 STANDARD 하위 형식 프로필은 사용되지 않습니다. Setter API는 하위 형식(STANDARD 기본값)을 지정할 수 있습니다.

디스플레이의 색 공간으로 색 공간 변환 수행

ADVANCED Color가 활성화되면 ICC 프로필 관리 API가 sRGB를 반환하므로 ICC 프로필 기반 앱은 sRGB로 색 관리를 하고 Windows는 디스플레이에서 sRGB로 올바르게 재현합니다.

영역 매핑을 수행하여 디스플레이의 영역으로 제한

기존 영역 매핑 동작은 유지됩니다.

ICC 프로필 호환성 도우미 표시

고급 색이 활성화되면 Windows는 디스플레이의 전체 영역 액세스 권한을 제공하는 디스플레이 ICC 프로필에 대한 호환성 도우미를 제공합니다. 이러한 방식으로 앱은 현재 레거시 비고급 색 모드에서 보정된 와이드 영역 모니터에서 사용할 수 있는 동일한 기능인 디스플레이의 보고된 기능까지 정확하고 넓은 영역 색을 계속 얻을 수 있습니다. 해당 도우미가 없으면 앱이 sRGB인 기본 동작으로 제한됩니다( 고급 색을 사용하는 ICC 프로필 기본 동작 참조).

해당 도우미는 Windows 11 시작하여 사용할 수 있습니다. 더 높은 정밀도/비트 깊이 또는 높은 동적 범위에 대한 액세스를 포함하여 고급 색의 다른 이점은 제공하지 않습니다. 고급 색을 인식하도록 앱을 수정해야 합니다.

디스플레이 ICC 호환성 도우미 사용

디스플레이 ICC 호환성 도우미는 앱별로 사용하도록 설정됩니다. 기본적으로는 사용하도록 설정되어 있지 않습니다.

사용자는 실행 파일 속성의 호환성 탭으로 이동하고 레거시 디스플레이 ICC 색 관리 사용을 선택하여 앱에 사용하도록 설정할 수 있습니다. 호환성 도우미는 전체 프로세스에 적용되며 디스플레이에 고급 색을 사용하도록 설정한 경우에만 활성화되며 표준 SDR 디스플레이에는 영향을 주지 않습니다.

실행 파일에 대한 디스플레이 ICC 호환성 도우미를 사용하도록 설정하는 UI

Windows는 ICC 색 프로필 관리를 사용하는 것으로 알려진 일부 인기 있는 앱에 대해 도우미를 자동으로 사용하도록 설정합니다.

앱에 해당 호환성 도우미를 사용하도록 설정하는 프로그래밍 방식의 방법은 없습니다.

디스플레이의 색 특성 가져오기

호환성 도우미가 활성 상태인 경우 앱이 Windows Color System 프로필 관리 함수를 사용하여 기본 STANDARD 색 프로필을 쿼리할 때 Windows는 고급 색 표시 기능 API를 채우는 동일한 데이터를 사용하여 가상 ICC 프로필을 생성합니다. 가상 프로필의 데이터는 현재 색 프로필의 조합, 디스플레이의 EDID 또는 DisplayID 또는 다른 원본에서 올 수 있습니다.

앱이 기본 EXTENDED 색 프로필을 쿼리하는 경우 앱이 고급 색 인식이며 실제 EXTENDED 프로필을 수신한다는 것을 나타냅니다.

디스플레이의 색 공간으로 색 공간 변환 수행

호환성 도우미가 활성화된 경우 앱은 ICC 색 관리를 사용하여 가상 디스플레이 프로필을 대상으로 해야 합니다. Windows에서는 앱이 해당 색 공간을 대상으로 하고 있다고 가정하고 올바른 색 공간 변환을 수행하여 디스플레이에 정확하게 렌더링되도록 합니다.

색 공간 변환은 전체 앱 프로세스에 적용되므로 일부 앱이 색 관리되지 않고 명목상 sRGB(예: UI)를 대상으로 하는 경우에도 모든 앱의 시각적 콘텐츠가 디스플레이의 색 공간을 대상으로 하는 것으로 처리됩니다. 색 공간 변환은 그래픽 API(GDI, DirectX, XAML 등), 픽셀 형식 또는 렌더링된 콘텐츠의 기타 특성에 관계없이 적용됩니다.

영역 매핑을 수행하여 디스플레이의 영역으로 제한

기존의 모든 영역 매핑 동작은 유지됩니다.

사용자가 볼 수 있는 동작 변경

사용자는 호환성 속성 탭을 확인하여 실행 파일에 대해 디스플레이 ICC 호환성 도우미가 활성 상태인지 확인할 수 있습니다. 앱에 기본 표시 ICC 프로필에 대한 정보가 표시되면 사용자에게 가상 프로필임을 알 수 있습니다. 프로필의 설명 내용(이름 포함)은 구현 세부 정보입니다.

실제 색 동작은 고급 색을 사용하지 않도록 설정한 경우와 동일해야 합니다. 두 경우 모두 앱은 ICC 프로필에 설명된 대로 디스플레이의 전체 영역으로 액세스할 수 있는 정확한 색을 렌더링합니다.