CSS 색상 HDR 모듈 레벨 1

W3C 최초 공개 작업 초안,

이 문서에 대한 추가 정보
이 버전:
https://www.w3.org/TR/2024/WD-css-color-hdr-1-20241217/
최신 공개 버전:
https://www.w3.org/TR/css-color-hdr-1/
편집자 초안:
https://drafts.csswg.org/css-color-hdr-1/
변경 이력:
https://www.w3.org/standards/history/css-color-hdr-1/
피드백:
CSSWG 이슈 저장소
명세 내 인라인
편집자:
Chris Lilley (W3C)
이 명세에 대한 수정 제안:
GitHub 편집기
테스트 스위트:
https://wpt.fyi/results/css/css-color-hdr/

요약

이 모듈은 고명암비(HDR)를 가능하게 하기 위해 CSS Color 4에 대한 추가 사항을 정의합니다.

CSS는 구조화된 문서(HTML, XML 등)의 렌더링을 화면, 인쇄물 등에서 설명하기 위한 언어입니다.

이 문서의 상태

이 섹션은 본 문서가 발행될 당시의 상태를 설명합니다. 현재 W3C 발행 목록과 이 기술보고서의 최신 개정본은 W3C 기술 보고서 인덱스 https://www.w3.org/TR/에서 확인할 수 있습니다.

이 문서는 CSS 작업 그룹에 의해 최초 공개 작업 초안으로 권고안 트랙을 사용하여 발행되었습니다. 최초 공개 작업 초안으로 발행되었다고 해서 W3C 및 그 회원의 지지를 의미하지는 않습니다.

이 문서는 초안이며, 언제든지 다른 문서에 의해 갱신, 대체 또는 폐기될 수 있습니다. 진행 중인 작업 이외의 것으로 본 문서를 인용하는 것은 적절하지 않습니다.

피드백은 GitHub에 이슈 등록(권장) 시 명세 코드 “css-color-hdr”를 제목에 포함해 주세요. 예: “[css-color-hdr] …의견 요약…”. 모든 이슈와 의견은 아카이브됩니다. 또는, (아카이브된) 공개 메일링 리스트 www-style@w3.org로 피드백을 보낼 수 있습니다.

이 문서는 2023년 11월 3일 W3C 프로세스 문서에 따라 관리됩니다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹에 의해 작성되었습니다. W3C는 이 그룹 산출물과 관련된 공개 특허 공개 목록을 유지합니다. 해당 페이지에는 특허 공개 방법에 대한 안내도 포함되어 있습니다. 어떤 개인이 해당 개인이 본질적 청구항(Essential Claim(s))을 포함한다고 생각되는 특허에 대해 실제로 알고 있는 경우, W3C 특허 정책 6절에 따라 정보를 공개해야 합니다.

1. 소개

이 섹션은 규범적이지 않습니다.

CSS Color 4는 오픈 웹 플랫폼에 와이드 컬러 가멧(WCG) 색 공간을 추가합니다. 설계상, 이들은 모두 표준 다이내믹 레인지(SDR) 색 공간입니다. 본 명세는 고명암비(HDR)를 지원하기 위한 추가 사항을 정의합니다.

네 가지 색 공간의 전기-광 변환 함수(EOTF): 확장 sRGB 및 선형광도 sRGB (CSS Color 4에서 정의됨)와 본 명세에서 정의된 PQ(Perceptual Quantizer), HLG(Hybrid Log-Gamma)의 EOTF를 [Rec_BT.2100]에서 가져옴.

WCG 명세는 수십 년간 안정적으로 유지되어 왔으나, HDR 표준은 덜 성숙하여 최근 10년간 빈번하게 개정되었습니다.

1.1. 값 정의

이 명세는 CSS 속성 정의 관례[CSS2]에서, 값 정의 구문[CSS-VALUES-3]에서 따릅니다. 본 명세에서 정의되지 않은 값 타입은 CSS Values & Units [CSS-VALUES-3]에 정의되어 있습니다. 다른 CSS 모듈과의 조합으로 이 값 타입의 정의가 확장될 수 있습니다.

각 속성 정의에 나열된 속성별 값 외에도, 본 명세에 정의된 모든 속성은 CSS-전역 키워드도 속성 값으로 허용합니다. 가독성을 위해 명시적으로 반복하지 않았습니다.

2. 다이내믹 레인지 제어

2.1. 다이내믹 레인지 정의

다이내믹 레인지란, 휘도가장 밝은 색상과 가장 어두운 색상 간의 차이를 의미합니다. 다이내믹 레인지는 사진 촬영에서 스톱(stops) 단위로 측정됩니다. 한 스톱은 휘도가 두 배가 되는 것을 의미합니다.

function DynamicRange (high, low) {
  return Math.log2(high) - Math.log2(low);
  } 

표준 다이내믹 레인지(SDR)에서는 미디어 화이트(일반적인 흰색 배경색 또는 어두운 배경의 흰색 텍스트)가 가장 밝은 색상입니다.

예를 들어, sRGB에서 흰색은 휘도 80 cd/m², 검정은 휘도 0.2 cd/m²로 정의되어 있습니다. 따라서 다이내믹 레인지는 8.6 스톱입니다.

SDR의 경우 휘도는 미디어 화이트에 상대적으로 처리됩니다. 화면이 더 밝아져도 다이내믹 레인지는 변하지 않으며, 가장 어두운 색도 함께 밝아지기 때문입니다.

예를 들어, sRGB 화면에서 흰색 휘도를 160 cd/m²로 설정하면 가장 어두운 검정은 0.4 cd/m²가 됩니다. 다이내믹 레인지는 여전히 8.6 스톱입니다.

고명암비(HDR)의 경우, 미디어 화이트보다 더 밝은 색상을 표시할 수 있습니다. 예를 들어, HDR 디스플레이에서 미디어 화이트가 약 200 cd/m²로 설정되어 있으면, 하이라이트를 1000 cd/m²로 표시할 수 있습니다. 일반적으로, 가장 밝은 색상은 화면의 작은 영역에서만, 제한된 시간 동안 표시할 수 있습니다. 이는 에너지 사용량과 발열 문제 때문입니다.

예를 들어, HDR 기준 마스터링 디스플레이에서 소면적 피크 화이트가 휘도 1000 cd/m², 가장 어두운 검정이 0.05 cd/m²일 때, 다이내믹 레인지는 14.3 스톱입니다.

HDR의 경우 휘도는 미디어 화이트에 상대적이 아닌 절대적으로 처리됩니다. 더 밝은 화면을 사용하면 다이내믹 레인지가 증가하며, 미디어 화이트의 휘도는 일정하게 유지됩니다.

예를 들어, rec2100-pq 색 공간을 [Rec_BT.2100]에서 정의한 경우, 가장 밝은 피크 화이트는 10000 cd/m², 가장 어두운 검정은 0.001 cd/m²로 정의됩니다. 따라서 인코딩된 다이내믹 레인지는 23.3 스톱입니다.

2.2. 헤드룸 도입

이 섹션은 비규범적입니다.

HDR 디스플레이가 제공할 수 있는 휘도 수준은 매우 다양합니다.

피크 화이트가 미디어 화이트보다 더 큰 정도를 HDR 헤드룸이라고 하며, 미디어 화이트 수준, 사용자 선호도, 시청 환경에 따라 달라집니다.

일반적으로 사진 스톱(stops) 단위로 표현합니다. 따라서, 표준 다이내믹 레인지(SDR)는 정의상 HDR 헤드룸이 0스톱입니다. 가장 밝은 흰색이 미디어 화이트이기 때문입니다.

예를 들어, 저가형 HDR 디스플레이는 (DisplayHDR 400의 최소 기준을 충족, Vesa 인증 DisplayHDR의 최저 등급 [DisplayHDR]) 미디어 화이트를 최대 200 cd/m2로, 피크 화이트는 400 cd/m2로 표시할 수 있습니다(가장 밝은 미디어 화이트에서 HDR 헤드룸이 1스톱에 불과함).
예를 들어, 고급 HDR 디스플레이는 (DisplayHDR 1400 기준을 초과, 현재 Vesa 인증 DisplayHDR의 최고 등급) 미디어 화이트를 최대 400 cd/m2로, 피크 화이트는 1600 cd/m2로 표시할 수 있습니다.

어두운 시청 환경에서 미디어 화이트를 100 cd/m2로 설정하면 HDR 헤드룸이 4스톱(16배) 확보됩니다.

웹 플랫폼은 현재 디스플레이의 헤드룸 수준을 직접적으로 공개하지 않습니다. 이는 시청 환경에 따라 다르며, 실시간·정밀한 헤드룸 정보가 추적 벡터가 될 수 있기 때문입니다 (예를 들어, 사용자가 실외로 이동했고 맑은 날임을 감지하는 경우).

항상 사용 가능한 최대 HDR 헤드룸을 사용하는 것이 바람직하지는 않습니다. CSS는 대략적으로 원하는 헤드룸 수준을 제어할 방법을 제공합니다. 이 수준은 엘리먼트별로, 시간에 따라 달라질 수 있습니다.

예를 들어, 사진 그리드를 표시하는 웹페이지를 생각해보세요. 일부 사진은 HDR이며, 태양을 정면으로 촬영한 것과 같이 매우 높은 다이내믹 레인지 이미지를 포함할 수 있습니다. 사진 전체를 최대 다이내믹 레인지로 보면 피로할 수 있습니다. 반면, 모든 이미지를 SDR 범위로 압축하면 개별 사진의 특성을 제대로 표현하지 못합니다. 설계 목표는 여러 사진을 평가할 수 있을 만큼 "충분한" HDR을 제공하는 것입니다.

2.3. dynamic-range-limit 속성

이름: dynamic-range-limit
값: standard | high | constrained-high | <dynamic-range-limit-mix()>
초기값: high
적용 대상: 모든 요소
상속: yes
퍼센트 값: n/a
계산값: dynamic-range-limit의 계산된 값 참고
정규 순서: 문법에 따름
애니메이션 타입: dynamic-range-limit-mix() 기준
테스트
standard
표시되는 최대 휘도 색상은 미디어 화이트와 동일합니다. 즉, CSS 색상 white입니다.
high
표시되는 피크 최대 휘도가 미디어 화이트보다 훨씬 큽니다. 즉, CSS 색상 white이 기준이며, 정확한 수준은 명시되지 않습니다.
constrained-high
표시되는 피크 최대 휘도는 미디어 화이트보다 다소 큽니다. 즉, CSS 색상 white 기준이며, SDR 및 HDR 콘텐츠를 함께 편안하게 볼 수 있는 수준입니다.
body { dynamic-range-limit: standard; }
div.photogrid img { dynamic-range-limit: constrained-high }

2.4. 다이내믹 레인지 제한 혼합: dynamic-range-limit-mix() 함수

이 함수는 두 개의 dynamic-range-limit 값을 받아, 내부적으로 미디어 화이트 기준 스톱 단위로 변환한 뒤, 지정된 비율만큼 혼합한 결과로 화면을 조정합니다. 실제 계산 결과는 노출되지 않습니다.

dynamic-range-limit-mix() = dynamic-range-limit-mix( [ <ident> && <percentage [0,100]> ]#)
테스트

모든 퍼센트의 합이 0%이면 함수는 유효하지 않습니다.

2.5. dynamic-range-limit의 계산된 값

지정 값이 standard, constrained-high, 또는 high라면, 계산된 값은 지정 값과 동일합니다.

지정 값이 dynamic-range-limit-mix()라면, 계산된 값은 다음 알고리즘에 의해 결정됩니다:

  1. v1, ..., vN을 혼합 대상 파라미터의 계산된 값이라고 하자.

  2. p1, ..., pN을 혼합 퍼센트(비율)라 하며, 총합이 100%가 되도록 정규화한다.

  3. 기여 퍼센트를 다음과 같이 정의한다:

    • p1_standard,...,pN_standardstandard에 대한 v1,...,vN의 퍼센트이다.

    • p1_constrained_high,...,pN_constrained_highconstrained-high에 대한 v1,...,vN의 퍼센트이다.

    • p1_high,...,pN_highhigh에 대한 v1,...,vN의 퍼센트이다.

  4. 가중합을 다음과 같이 계산한다:

    • p_standard=(p1_standard*p1+...+pN_standard*pN)/100.

    • p_constrained_high=(p1_constrained_high*p1+...+pN_constrained_high*pN)/100.

    • p_high=(p1_high*p1+...+pN_high*pN)/100.

  5. p_standard, p_constrained_high, 또는 p_high 중 하나가 100%이면, 계산된 값은 각각 standard, constrained-high, high 중 하나가 된다.

  6. 그 외의 경우, 계산된 값은 dynamic-range-limit-mix()이며, 파라미터는 standard, constrained-high, high 순서이며, 각각 p_standard, p_constrained_high, p_high를 사용하고, 0%인 파라미터는 생략한다.

테스트
dynamic-range-limit-mix(
    high 10%,
    dynamic-range-limit-mix(standard 25%, constrained-high 75%) 20%,
    dynamic-range-limit-mix(constrained-high 10%, high 30%) 20%)

의 계산된 값은

dynamic-range-limit-mix(standard 10%, constrained-high 40%, high 50%)

3. 미리 정의된 및 사용자 정의 색 공간 지정: color() 함수

color() 함수는 특정 색 공간에서 색상을 지정할 수 있도록 해줍니다(다른 색상 함수들이 대부분 암시적으로 동작하는 sRGB 색 공간이 아님).

이 명세에서 color() 함수는 HDR용 미리 정의된 색 공간을 허용하도록 확장되었으며, CSS Color 4 §  10. Predefined Color Spaces의 SDR용 미리 정의된 색 공간 및 CSS Color 5 § 4 Relative Color Syntax의 상대 색상 구문도 허용합니다.

구문은 다음과 같습니다:

color() = color( [from <color>]? <colorspace-params> [ / [ <alpha-value> | none ] ]? )
<colorspace-params> = [<custom-params> | <predefined-rgb-params> | 
  <predefined-polar-params> | <predefined-rectangular-params> | <xyz-params>]
<custom-params> = <dashed-ident> [ <number> | <percentage> | none ]+
<predefined-rgb-params> = <predefined-rgb> [ <number> | <percentage> | none ]{3}
<predefined-polar-params> = jzczhz [ <number> | <percentage> | none ]{2} [ <hue> | none]
<predefined-rectangular-params> = <predefined-rectangular> [ <number> | <percentage> | none ]{3}
<predefined-rgb> = srgb | srgb-linear | display-p3 | a98-rgb | prophoto-rgb | rec2020 | 
  rec2100-pq | rec2100-hlg | rec2100-linear
<predefined-rectangular> = jzazbz | ictcp
<xyz-params> = <xyz> [ <number> | <percentage> | none ]{3}
<xyz> = xyz | xyz-d50 | xyz-d65

4. HDR용 미리 정의된 색 공간:

CSS Color 4에서 정의된 SDR 색 공간에 더해, color 함수에서 사용할 수 있도록 다음 HDR 색 공간이 정의되어 있습니다.

이 새로운 색 공간의 값 직렬화는 CSS Color 4 §  15. Serializing <color> Values의 설명과 동일합니다.

4.1. rec2100-pq

rec2100-pq [Rec_BT.2100] 색 공간은 세 개의 숫자 파라미터(빨강, 초록, 파랑 채널)를 받으며, 각 값의 유효 범위는 실제 비트 깊이(컴포넌트당 10 또는 12비트)에 상관없이 [0, 1]입니다.

Perceptual Quantizer(PQ) 전기-광 변환 함수가 사용됩니다 [SMPTE-ST-2084],[Rec_BT.2100]. PQ는 화면 주변 밝기 5 cd/m²의 기준 시청 조건을 가정합니다.

ITU Reference 2100은 HDR 4k 및 8k TV에 사용됩니다.

SDR 색 공간 및 일부 HDR 색 공간과 달리, PQ 값은 절대값입니다(상대값이 아님).

SDR과 HDR 다이내믹 레인지를 로그 스케일로 보여주는 다이어그램 추가 필요

특징은 아래와 같습니다 (디스플레이 프라이머리는 [Rec.2020]와 동일):

x y
빨강 색도 0.708 0.292
초록 색도 0.170 0.797
파랑 색도 0.131 0.046
흰색 색도 D65
전달 함수 Perceptual Quantizer
화이트 휘도 203 cd/m²
피크 화이트 휘도 10,000 cd/m²
블랙 휘도 ≤ 0.005 cd/m²
이미지 상태 display-referred
퍼센트 값 R, G, B 허용
퍼센트 기준 범위 R,G,B: 0% = 0.0, 100% = 1.0

비기준 시청 환경의 협대역 PQ 비디오나, HLG(어떤 시청 환경이든)의 경우, 블랙 레벨은 [Rec_BT.814] 부록에서 정의한 PLUGE 테스트 신호 및 절차를 사용해 조정해야 합니다. CSS에서 사용하는 PQ(광대역)의 경우, 블랙은 코드 포인트 0에 해당합니다.

이 색상은 휘도 10,000 cd/m²의 눈부신 흰색을 나타냅니다. 이렇게 밝은 색상은 화면의 작은 영역에만, 잠깐만 표시할 수 있습니다. 콘텐츠는 일반적으로 더 낮은 피크 화이트(예: 4,000 cd/m²)로 마스터링됩니다.
 color(rec2100-pq 1.0 1.0 1.0);
이 색상은 편안한 "디퓨즈 화이트"를 나타냅니다. 이 색상은 장시간 표시하거나, 자막 등 어떤 크기의 영역에도 사용할 수 있습니다. sRGB white와 동일한 색상입니다. 디퓨즈 화이트는 203 cd/m² [Rec_BT.2100]입니다.
 color(rec2100-pq 0.58 0.58 0.58);

이 색상은 중간 회색(사진작가의 "18% 반사율 그레이" 카드와 유사, 17 cd/m²)을 나타냅니다.

 color(rec2100-pq 0.34 0.34 0.34)

sRGB 빨강, 초록, 파랑 및 P3 빨강, 초록, 파랑 인코딩 예시 추가 필요

선형광도 RGB 신호는 다음과 같이 PQ 인코딩으로 변환됩니다. 절대 휘도 스케일을 사용하므로, 상대 휘도를 스케일링하는 데 디퓨즈(미디어) 화이트의 휘도가 필요합니다. PQ에서 인코딩 가능한 최대값(피크, 소면적 화이트)은 10,000 cd/m²입니다. 미디어 화이트는 203 cd/m² [Rpt_BT.2408]입니다.

var Er;      // 빨강, 초록, 파랑 컴포넌트, SDR은 [0, 1], HDR은 [0, 70ish]
var Yw = 203;  // 디퓨즈 화이트의 절대 휘도, cd/m²
var x = Er * Yw / 10000;   // 피크 화이트의 절대 휘도는 10,000 cd/m².
const n = 2610 / (2 ** 14);
const m = 2523 / (2 ** 5);
const c1 = 3424 / (2 ** 12);
const c2 = 2413 / (2 ** 7);
const c3 = 2392 / (2 ** 7);
xPQ = (((c1 + (c2 * (x ** n))) / (1 + (c3 * (x ** n)))) ** m);

xPQ는 "감마 보정"(OETF 적용) 신호 [0, 1]입니다.

PQ 인코딩 값은 다음과 같이 선형광도로 변환됩니다:

var xPQ;      // 빨강, 초록, 파랑 PQ-인코딩 컴포넌트, [0, 1]
const ninv = (2 ** 14) / 2610;
const minv = (2 ** 5) / 2523;
const c1 = 3424 / (2 ** 12);
const c2 = 2413 / (2 ** 7);
const c3 = 2392 / (2 ** 7);
var x = (((Math.max(((xPQ ** minv) - c1), 0) / (c2 - (c3 * (xPQ ** minv)))) ** ninv);
var Yw = 203;      // 디퓨즈 화이트의 절대 휘도, cd/m²
var Ea = x * 10000;   // 절대 휘도, [0, 10,000].
var Er = x * 10000 / Yw;   // 디퓨즈 화이트 기준 상대 휘도, [0, 약 70].

4.2. rec2100-hlg

rec2100-hlg [Rec_BT.2100] 색 공간은 세 개의 숫자 파라미터(빨강, 초록, 파랑 채널)를 받으며, 각 값의 유효 범위는 실제 비트 깊이(컴포넌트당 10 또는 12비트)에 상관없이 [0, 1]입니다.

Hybrid Log-Gamma(HLG) 전기-광 변환 함수가 사용됩니다 [ARIB_STD-B67],[Rec_BT.2100]. HLG는 다양한 밝기의 디스플레이와 넓은 시청 환경에서 사용할 수 있으며, 사용자가 전체 밝기 수준을 제어할 수 있습니다. 0.75 값은 "디퓨즈/미디어 화이트", "18% 반사율 그레이" 카드는 0.38 값을 가집니다. [Rec_BT.2390].

특징은 아래와 같습니다 (디스플레이 프라이머리는 [Rec.2020]와 동일):

x y
빨강 색도 0.708 0.292
초록 색도 0.170 0.797
파랑 색도 0.131 0.046
흰색 색도 D65
전달 함수 Hybrid log Gamma
화이트 휘도
시청 조건에 따라 다름
피크 화이트 휘도 기준 화이트의 12배
블랙 휘도 기준 화이트에 따라 다름, 본문 참조
이미지 상태 scene-referred
퍼센트 값 R, G, B 허용
퍼센트 기준 범위 R,G,B: 0% = 0.0, 100% = 1.0

협대역 HLG 비디오(어떤 시청 환경이든)의 경우, 블랙 레벨은 [Rec_BT.814] 부록 4에서 정의한 PLUGE 테스트 신호 및 절차를 사용해 조정해야 합니다. CSS에서 사용하는 HLG(광대역)의 경우, 블랙은 코드 포인트 0에 해당합니다.

예시 추가 필요

이 색상은 편안한 "디퓨즈 화이트"를 나타냅니다. 이 색상은 장시간 표시하거나, 자막 등 어떤 크기의 영역에도 사용할 수 있습니다. 콘텐츠는 일반적으로 피크 화이트 1,000~4,000 cd/m²로 마스터링되며, 디퓨즈 화이트는 203~581 cd/m²가 됩니다.
 color(rec2100-hlg 0.75 0.75 0.75);

이 색상은 중간 회색(26~104 cd/m²)을 나타냅니다.

 color(rec2100-hlg 0.38 0.38 0.38)

선형광도 RGB 신호는 다음과 같이 HLG 인코딩으로 변환됩니다 [Rec_BT.2390]:

var E;      // 빨강, 초록, 파랑 컴포넌트, [0, 1]
const a = 0.17883277;
const b = 0.28466892;   // 1 - (4 * a)
const c = 0.55991073;   // 0.5 - a * Math.log(4 *a)
// 음수 처리
var sign = E < 0? -1 : 1;
var abs = Math.abs(E);
if (abs <= 1/12) {
  Edash = sign * Math.sqrt( 3 * abs);
}
else {
  Edash = a * Math.log(12 * E - b) + c;
}

Edash는 "감마 보정"(OETF 적용) 신호입니다.

역변환(HLG 인코딩 → 선형광도)은 다음과 같습니다 [Rec_BT.2390]::

var Edash;      // 빨강, 초록, 파랑 인코딩 컴포넌트, [0, 1]
const a = 0.17883277;
const b = 0.28466892;   // 1 - (4 * a)
const c = 0.55991073;   // 0.5 - a * Math.log(4 *a)
if (Edash <= 0.5) {
  E = (Edash ** 2) / 3;
}
else {
  E = (Math.exp((Edash - c) / a) + b) / 12;
}

같은 페이지에 정의된 블랙 레벨 리프트 Β 추가?

4.3. rec2100-linear

rec2100-linear [Rec_BT.2100] 색 공간은 세 개의 숫자 파라미터(빨강, 초록, 파랑 채널)를 받으며, 각 값의 명목 범위는 실제 비트 깊이(컴포넌트당 10 또는 12비트)에 상관없이 [0, 1]입니다.

빨강, 초록, 파랑이 모두 1.0인 색상은 절대 휘도가 203 cd/m²인 HDR 기준 화이트를 나타냅니다.

color(rec2100-linear 1 1 1)
예를 들어, 아래 색상은
color(rec2100-linear 9.852 9.852 9.852)

절대 휘도 9.852 × 203 = 1,999 cd/m²의 화이트 하이라이트를 나타냅니다.

이 색상은 편안한 "디퓨즈 화이트"를 나타냅니다. 이 색상은 장시간 표시하거나, 자막 등 어떤 크기의 영역에도 사용할 수 있습니다. sRGB white와 동일한 색상입니다. 디퓨즈 화이트는 203 cd/m² [Rec_BT.2100]입니다.
 color(rec2100-linear 1 1 1)

선형광도 전기-광 전달 함수가 사용됩니다.

특징은 아래와 같습니다 (디스플레이 프라이머리는 [Rec.2020]와 동일):

x y
빨강 색도 0.708 0.292
초록 색도 0.170 0.797
파랑 색도 0.131 0.046
흰색 색도 D65
전달 함수 Linear
화이트 휘도 203 cd/m²
피크 화이트 휘도 10,000 cd/m²
블랙 휘도 0.001 cd/m²
이미지 상태 display-referred
퍼센트 값 R, G, B 허용
퍼센트 기준 범위 R,G,B: 0% = 0.0, 100% = 1.0

4.4. Jzazbz

Jzazbz 색 공간 [Safdar-PUCS] 은 세 개의 숫자 파라미터를 받으며, Jz는 밝기(Lab의 L과 유사), az와 bz는 적-녹, 황-청 보색 축(Lab의 a, b와 유사)을 나타냅니다.

CIE Lab은 미디어 화이트 기준 [0%, 100%]의 밝기 스케일을 사용하며, 실험적으로 L=400%까지 확장된 바 있습니다. 반면, Jzazbz의 Jz 축은 [0, 1.0] 범위를 가지며, Perceptual Quantizer와 유사한 인코딩을 사용하여 13스톱 이상의 다이내믹 레인지를 표현할 수 있습니다.

특징은 아래와 같습니다:

x y
흰색 색도 D65
전달 함수 Perceptual Quantizer
피크 화이트 휘도 10,000 cd/m²
블랙 휘도 0.001 cd/m²
이미지 상태 display-referred
퍼센트 값 Jz, az, bz 허용
퍼센트 기준 범위 Jz: 0% = 0.0, 100% = 1.0
az, bz: -100% = -1.0, 100% = 1.0

Lab과 달리 D65 화이트포인트가 사용됩니다. 따라서 대부분의 RGB 색 공간(역시 D65 화이트포인트 사용)에서는 색상 적응 단계가 필요 없습니다.

이 색상은 편안한 "디퓨즈 화이트"를 나타냅니다. 이 색상은 장시간 표시하거나, 자막 등 어떤 크기의 영역에도 사용할 수 있습니다. sRGB white와 동일한 색상입니다. 디퓨즈 화이트는 203 cd/m² [Rec_BT.2100]입니다.
 color(jzazbz 0.22207 -0.00016 -0.00012)

4.5. JzCzHz

LCH가 Lab의 극좌표 표현인 것처럼, JzCzHzJzazbz의 극좌표 형태입니다. JzJzCzHz에서와 동일하며 밝기를 나타내고, Cz는 채도(색의 강도), Hz는 az 양의 방향에서 bz 양의 방향으로 측정한 색상각(도 단위)을 나타냅니다.

이 색상은 Jzazbz에서 sRGB "lime" 색상을 나타냅니다.
 color(jzazbz 0.17542 -0.1179 0.1092)

아래는 같은 색상의 극좌표 표현입니다.

 color(jzczhz 0.17542 0.1614 132.50)

4.5.1. Jzazbz 색상을 JzCzHz 색상으로 변환

JzCzHz로의 변환은 간단합니다:

  1. Hz = atan2(bz, az) // 단, 도(degree) 단위로 변환!
  2. Cz = sqrt(az^2 + bz^2)
  3. Jz는 동일

4.5.2. JzCzHz 색상을 Jzazbz 색상으로 변환

Jzazbz로의 변환도 간단합니다:

  1. az = Cz cos(H) // 먼저 라디안으로 변환!
  2. bz = Cz sin(H) // 먼저 라디안으로 변환!
  3. Jz는 동일

4.6. ICtCp

ICtCp 색 공간은 [Rec_BT.2100]에서 상수 강도 ICTCP 신호 포맷으로 정의되며, 세 개의 수치 매개변수를 가집니다. I는 Intensity(강도)를 나타내며(Lab의 L과 유사하지만 10,000 cd/m2까지의 휘도 범위 포함), CT와 CP는 각각 황-청(tritanope) 및 적-록(protanope) 반대 색상 축을 나타냅니다(Lab의 b와 a에 각각 해당).

이 색 공간은 인간 시각 시스템의 LMS 콘 프라이머리에 기반합니다. Hunt-Pointer-Estevez(HPE) XYZ-LMS 변환이 사용되며, D65 화이트포인트로 정규화됩니다. 그 후 크로스토크 행렬이 적용되어 BT.2020 RGB의 색역 볼록도(gamut hull concavities)를 줄여 보간 오류를 줄입니다. 크로스토크는 또한 일정한 색상선(constant hue)과 Just Noticeable Difference(JND) MacAdam 타원의 균일성도 개선합니다.

다음과 같은 특성을 가집니다:

x y
White chromaticity D65
Transfer function Perceptual Quantizer
White luminance 203 cd/m²
Peak white luminance 10,000 cd/m²
Black luminance 0.001 cd/m²
Image state display-referred
Percentages I, Ct, Cp에 허용됨
Percent reference range I의 경우: 0% = 0.0, 100% = 1.0
Ct와 Cp의 경우: -100% = -1.0, 100% = 1.0

[Rec_BT.2100]에서는 ICTCP를 선형광 BT.2100 RGB에서 변환하여 정의하지만, 이 변환은 LMS를 통해 진행되므로 XYZ-LMS 변환을 적용하면 다른 색 공간도 표현할 수 있습니다.

Lab과 달리 D65 화이트포인트가 사용됩니다.

또한 Lab이 주로 저강도 반사색에 대해 테스트된 것과 달리, ICTCP는 고채도, 자발광, 고휘도(HDR) 색상에서도 테스트되었습니다. 이는 색상 차이 측정(deltaE ITP)과 SDR/HDR 색상 색역 매핑에 적합합니다.

이 색상은 ICtCp에서 sRGB 색상 "lime"을 나타냅니다.
 color(ictcp 0.5393 -0.2643 -0.0625)
이 색상은 편안한 "diffuse white"를 나타냅니다. 이 색상은 화면의 어떤 크기 영역에도 장시간 표시하거나 자막에 사용할 수 있습니다. 이는 sRGB white와 동일한 색상입니다. Diffuse white는 203 cd/m² [Rec_BT.2100]입니다.
 color(ictcp 0.58069 0 0)

5. SDR 및 HDR 콘텐츠 합성

합성은 CIE XYZ에서 이뤄져야 하며, 이 공간은 선형광 공간으로 색역 제한이 없습니다. 구현에 따라 선형광 RGB 공간에서 합성할 수도 있으며, 이 경우에도 결과는 같지만, 색역을 벗어나는 값(음수 또는 100% 초과)이 최종 디바이스 색 공간으로 변환될 때까지 올바르게 처리되고, 잘리거나 색역 매핑되지 않아야 합니다.

HLG 전달 함수를 사용하는 상대적 HDR의 경우, SDR 미디어의 흰색은 75% HLG 값이 표시되는 것과 동일한 휘도로 매핑해야 합니다. [SMPTE-ST-2084]

자세한 내용은 ITU Rpt_BT.2408-0의 표 3, 4를 참고하세요. [Rpt_BT.2408]

PQ 전달 함수를 사용하는 절대적 HDR의 경우, SDR 미디어의 흰색은 203 cd/m², 즉 58% PQ 값이 표시되는 것과 동일한 휘도로 매핑해야 합니다. [SMPTE-ST-2084] 단, 구현에 따라 기준이 아닌 시청 조건을 고려하기 위해 컬러 리렌더링 단계(OOTF)를 추가할 수도 있습니다.

6. <color> 값 직렬화

6.1. color() 함수 값 직렬화

이 섹션은 CSS Color 4 § 15.5 color() 함수 값 직렬화를 확장합니다.

color() 값의 직렬화 형태는 computed value에서 파생되며, color() 형태를 사용합니다. 함수명과 색 공간명은 ASCII 소문자로 표기합니다.

구성요소 값은 10진수로 직렬화되며, <number>로 작성됩니다. 단일 ASCII 공백 문자 " "를 구분자로 사용하며, 색 공간명과 첫 번째 색상 구성요소 사이에도 공백을 사용합니다.

미리 정의된 HDR 색 공간의 경우, 왕복 변환을 위한 최소 정밀도는 다음과 같습니다:

HDR 색 공간 최소 비트 수
rec2100-pq, rec2100-hlg 10
rec2100-linear, jzazbz, jzczhz, ictcp 16

(내부 저장을 위해 구성요소별 16비트, half-float 또는 float를 권장합니다). 값은 +∞ 방향으로 반올림되어야 하며, 잘리면 안 됩니다.

PQ 기반 색 공간은 다양한 시청 환경에서 표시할 때 톤 매핑(OOTF)이 필요한가요?

개인정보 보호 고려사항

HDR headroom의 수치 값이 웹 플랫폼에서 직접 노출되지 않는 이유는, 노출될 경우 현재 시청 환경이 드러나 프라이버시 침해가 될 수 있기 때문입니다.

보안 고려사항

이 문서에 대해서는 보안 문제가 제기되지 않았습니다.

접근성 고려사항

일부 사용자는 매우 밝은 색상에 민감할 수 있으므로, 사용자 에이전트는 사용자가 최대 휘도를 제한할 수 있는 메커니즘을 제공해야 합니다. 제한된 밝기 범위로 디스플레이에 매핑하는 5.4.1절 toe and knee 절차는 [Rec_BT.2390]에 설명된 방법이 적합합니다.

dynamic-range-limit 속성은 사용자 스타일시트에서 standard 또는 constrained-high로 설정할 수도 있습니다.

적합성

문서 규약

적합성 요구 사항은 설명적 진술과 RFC 2119 용어의 조합으로 표현됩니다. 본 문서의 규범적 부분에서 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL" 등의 키워드는 RFC 2119에서 설명된 대로 해석되어야 하며, 가독성을 위해 모두 대문자로 표기되지는 않습니다.

이 명세의 모든 텍스트는 별도로 비규범, 예시, 노트로 명시된 부분을 제외하고는 규범적입니다. [RFC2119]

이 명세서의 예시는 "for example"이라는 문구로 시작하거나 class="example"와 같이 규범적 본문과 구분됩니다.

이것은 정보 제공 목적의 예시입니다.

정보를 제공하는 노트는 "Note"로 시작하며 class="note"로 구분됩니다.

Note, 이것은 정보 제공 목적의 노트입니다.

권고(advisement)는 특별한 주의를 환기하기 위해 규범적 부분을 스타일링한 섹션이며, <strong class="advisement">로 구분되어 있습니다. 예: UA는 접근 가능한 대체 수단을 제공해야 합니다.

Tests

이 명세의 내용과 관련된 테스트는 이와 같은 “Tests” 블록에 문서화될 수 있습니다. 이러한 블록은 모두 비규범적입니다.


적합성 클래스

이 명세에 대한 적합성은 세 가지 적합성 클래스로 정의됩니다:

style sheet
CSS 스타일 시트
renderer
UA는 스타일 시트의 의미를 해석하고 해당 스타일 시트를 사용하는 문서를 렌더링합니다.
authoring tool
UA는 스타일 시트를 작성합니다.

이 모듈에서 정의된 구문을 사용하는 모든 문이 일반 CSS 구문 및 각 기능별 구문에 따라 유효하다면, 스타일 시트는 본 명세에 적합한 것입니다.

렌더러는, 적합한 명세서에 따라 스타일 시트를 해석하는 것 이외에도, 본 명세에서 정의된 모든 기능을 올바르게 구문 분석하고 문서를 렌더링해야 적합합니다. 단, 디바이스의 한계로 인해 UA가 문서를 올바르게 렌더링하지 못해도 비적합한 것은 아닙니다(예: UA가 흑백 모니터에서 색상을 렌더링할 필요는 없음).

작성 도구는 일반 CSS 구문 및 이 모듈의 각 기능별 구문에 따라 구문적으로 올바른 스타일 시트를 작성하며, 이 모듈에서 설명된 스타일 시트의 기타 모든 적합성 요건을 충족해야 적합합니다.

부분 구현

저자가 미래 호환 구문 분석 규칙을 활용해 대체값을 지정할 수 있도록, CSS 렌더러는 지원 수준이 없는 모든 at-rule, 속성, 속성값, 키워드 및 기타 구문 구조를 무효로 처리(필요에 따라 무시)해야 합니다. 특히, UA는 단일 멀티값 속성 선언에서 지원하지 않는 구성요소 값을 일부만 무시하거나 지원되는 값만 적용해서는 안 됩니다. 어떤 값이라도 무효로 간주되면 전체 선언을 무시해야 하며, 이는 CSS의 요구 사항입니다.

불안정 및 독점 기능의 구현

향후 안정적인 CSS 기능과의 충돌을 방지하기 위해, CSSWG는 베스트 프랙티스에 따라 불안정 기능 및 독점적 확장을 구현할 것을 권장합니다.

비실험적 구현

명세가 후보 권고(CR) 단계에 도달하면 비실험적 구현이 가능하며, 구현자는 명세에 따라 올바르게 구현되었음을 입증할 수 있는 CR 수준 기능의 접두어 없는 구현을 공개해야 합니다.

CSS의 상호 운용성을 수립하고 유지하기 위해 CSS 워킹 그룹은 비실험적 CSS 렌더러가 CSS 기능의 접두어 없는 구현을 공개하기 전에 구현 보고서(필요시 테스트케이스 포함)를 W3C에 제출해 줄 것을 요청합니다. W3C에 제출된 테스트케이스는 CSS 워킹 그룹의 검토 및 수정 대상입니다.

테스트케이스 및 구현 보고서 제출과 관련된 추가 정보는 CSS 워킹 그룹 웹사이트 https://www.w3.org/Style/CSS/Test/에서 확인할 수 있습니다. 문의는 public-css-testsuite@w3.org 메일링 리스트로 하십시오.

색인

이 명세서에서 정의된 용어

참조로 정의된 용어

참고문헌

규범적 참고문헌

[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS Cascading and Inheritance Level 5. 2022년 1월 13일. CR. URL: https://www.w3.org/TR/css-cascade-5/
[CSS-COLOR-4]
Chris Lilley; Tab Atkins Jr.; Lea Verou. CSS Color Module Level 4. 2024년 2월 13일. CR. URL: https://www.w3.org/TR/css-color-4/
[CSS-COLOR-5]
Chris Lilley; et al. CSS Color Module Level 5. 2024년 2월 29일. WD. URL: https://www.w3.org/TR/css-color-5/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 2024년 3월 22일. CR. URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 4. 2024년 3월 12일. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS2]
Bert Bos; et al. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 2011년 6월 7일. REC. URL: https://www.w3.org/TR/CSS21/
[Rec.2020]
Recommendation ITU-R BT.2020-2: Parameter values for ultra-high definition television systems for production and international programme exchange. 2015년 10월. URL: http://www.itu.int/rec/R-REC-BT.2020/en
[Rec_BT.2100]
ITU-R BT.2100-2 Image parameter values for high dynamic range television for use in production and international programme exchange. URL: https://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.2100-2-201807-I!!PDF-E.pdf
[Rec_BT.2390]
ITU-R BT.2390-8 High dynamic range television for production and international programme exchange. URL: https://www.itu.int/dms_pub/itu-r/opb/rep/R-REP-BT.2390-8-2020-PDF-E.pdf
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. 1997년 3월. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[Rpt_BT.2408]
Report ITU-R BT.2408-0 Operational practices in HDR television production. URL: https://www.itu.int/dms_pub/itu-r/opb/rep/R-REP-BT.2408-2017-PDF-E.pdf
[Safdar-PUCS]
Safdar, Muhammad; et al. Perceptually uniform color space for image signals including high dynamic range and wide gamut. URL: https://opg.optica.org/oe/fulltext.cfm?uri=oe-25-13-15131&id=368272
[SMPTE-ST-2084]
ST 2084:2014 - SMPTE Standard - High Dynamic Range Electro-Optical Transfer Function of Mastering Reference Displays. URL: https://pub.smpte.org/latest/st2084/st2084-2014.pdf

비규범적 참고문헌

[ARIB_STD-B67]
Essential Parameter Values for the Extended Image Dynamic Range Television (EIDRTV) System for Programme Production. URL: https://www.arib.or.jp/english/html/overview/doc/2-STD-B67v1_0.pdf
[DisplayHDR]
Summary of DisplayHDR Specs under CTS 1.2. URL: https://displayhdr.org/performance-criteria/
[Rec_BT.814]
Specifications of PLUGE test signals and alignment procedures for setting of brightness and contrast of displays. URL: https://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.814-4-201807-I!!PDF-E.pdf

속성 색인

이름 초깃값 적용 대상 상속 % 사용 애니메이션 유형 정식 순서 계산된 값
dynamic-range-limit standard | high | constrained-high | <dynamic-range-limit-mix()> high 모든 요소 yes n/a dynamic-range-limit-mix()에 의해 문법에 따름 dynamic-range-limit의 계산값 참조

이슈 색인

로그 스케일로 SDR 및 HDR 다이내믹 레인지 다이어그램 추가
다른 예시 추가, sRGB 적, 녹, 청 및 P3 적, 녹, 청 인코딩 포함
다른 예시 추가
동일 페이지에서 정의된 black level lift Β 추가?
PQ 기반 색 공간은 다양한 시청 환경에서 표시할 때 톤 매핑(OOTF)이 필요한가요?