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/

概要

このモジュールは、CSS Color 4 にハイダイナミックレンジ (HDR) を可能にする追加機能を定義します。

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は、グループの成果物に関連してなされた特許開示の公開リストを管理しています。 また、そのページには特許開示の方法についても記載されています。 特許の存在を実際に知っている個人は、 それが 必須請求項 を含むと信じる場合、 W3C特許ポリシー第6節 に従ってその情報を開示しなければなりません。

1. はじめに

このセクションは規範的ではありません。

CSS Color 4 は、オープンウェブプラットフォームにワイドカラーガマット(WCG)色空間を追加します。 設計上、これらはすべて標準ダイナミックレンジ(SDR)色空間です。 本仕様書は、ハイダイナミックレンジ(HDR)をサポートするための追加事項を定義します。

4つの色空間のエレクトロオプティカルトランスファ関数(EOTF): 拡張sRGBおよび線形光sRGB (CSS Color 4で定義)と、 本仕様で定義されるパーセプチュアルクアンタイザー(PQ)およびハイブリッドログガンマ(HLG)。 出典: [Rec_BT.2100]

WCG仕様は数十年にわたり広く安定していますが、 HDR規格はまだ成熟しておらず、 この10年で頻繁に改訂されています。

1.1. 値の定義

この仕様は、CSSプロパティ定義の規約[CSS2] から継承し、 値定義構文[CSS-VALUES-3] から使用しています。 本仕様で定義されていない値型は、CSS Values & Units [CSS-VALUES-3]で定義されています。 他のCSSモジュールとの組み合わせにより、これらの値型の定義が拡張される場合があります。

各プロパティ定義にリストされたプロパティ固有の値に加えて、 本仕様で定義されるすべてのプロパティは CSS全体キーワード もプロパティ値として受け入れます。 可読性のため、明示的な繰り返しはしていません。

2. ダイナミックレンジの制御

2.1. ダイナミックレンジの定義

ダイナミックレンジは、 輝度最も明るい色と最も暗い色の差です。 ダイナミックレンジは写真用語のストップで測定されます。 1ストップは輝度が2倍になることを意味します。

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

標準ダイナミックレンジ(SDR)では、 メディアホワイト(通常の白い背景色や、暗い背景の上の白いテキストの色)が 最も明るい色となります。

たとえば、sRGBの場合、 白は輝度80cd/m²、 黒は輝度0.2cd/m²と定義されています。 したがって、ダイナミックレンジは8.6ストップとなります。

SDRでは、輝度はメディアホワイトに相対的に扱われます。 画面を明るくしてもダイナミックレンジは変わりません、 なぜなら最も暗い色も同様に明るくなるためです。

たとえば、あるsRGBディスプレイが、 白を160cd/m²に設定し、 最も暗い黒が0.4cd/m²となる場合でも、 ダイナミックレンジは依然として8.6ストップです。

ハイダイナミックレンジ(HDR)では、 メディアホワイトよりも明るい色を表示できます。 たとえば、HDRディスプレイでメディアホワイトを約200cd/m²に設定した場合、 ハイライトを1000cd/m²で表示できることがあります。 通常、最も明るい色は ディスプレイの一部のみ、かつ限られた時間だけ表示可能です。 これは電力消費や発熱の観点によるものです。

たとえば、HDRリファレンスマスタリングディスプレイでは、 小面積ピークホワイトが輝度1000cd/m²、 最も暗い黒が0.05cd/m²となります。 したがって、ダイナミックレンジは14.3ストップとなります。

HDRでは、輝度絶対値として扱われ、 メディアホワイトに対する相対値ではありません。 より明るい画面を使うことでダイナミックレンジが広がり、 メディアホワイトの輝度は一定となります。

たとえば、rec2100-pq色空間 ([Rec_BT.2100]で定義) では、最も明るいピークホワイトが輝度10000cd/m²、 最も暗い黒が0.001cd/m²と定義されています。 したがって、エンコードされたダイナミックレンジは23.3ストップです。

2.2. ヘッドルームの導入

このセクションは非規範的です。

HDRディスプレイが出せる輝度レベルは 大きく異なります。

ピークホワイトがメディアホワイトよりどれだけ高いかは HDRヘッドルームと呼ばれ、 メディアホワイトのレベル、 ユーザーの好み、 視聴環境によって決まります。

これは一般的に写真用語のストップで表現されます。 したがって、標準ダイナミックレンジ(SDR)は 定義上HDRヘッドルームが0ストップであり、 最も明るい白がメディアホワイトであることを意味します。

たとえば、 DisplayHDR 400(VESA認証DisplayHDRの最下位グレード[DisplayHDR])の要件を満たす 低価格帯のHDRディスプレイは、 メディアホワイトを最大200cd/m2、 ピークホワイトは400cd/m2まで表示できます(最も明るいメディアホワイトでHDRヘッドルームは1ストップ)。
たとえば、 DisplayHDR 1400(現時点で最上位グレード)の要件を超える 高価格帯のHDRディスプレイは、 メディアホワイトを最大400cd/m2、 ピークホワイトを1600cd/m2で表示できます。

暗い視聴環境で メディアホワイトを100cd/m2に設定した場合、 4ストップ(16倍)のHDRヘッドルームが得られます。

Webプラットフォームは現在、 ディスプレイのヘッドルームレベルを直接公開していません。 これは視聴環境に依存し、 リアルタイムの非量子化ヘッドルーム情報が トラッキングベクターとなるためです (たとえば、ユーザーが屋外に移動し、晴れている日だと検出できるなど)。

常に利用可能なHDRヘッドルームの最大値を 使用することが望ましいとは限りません。 CSSは、どの程度のヘッドルームを使用するかを 大まかに制御する方法を提供します。 このレベルは要素ごと、または時間ごとに 変化させることができます。

たとえば、 写真グリッドを表示するWebページを考えてみましょう。 いくつかの写真は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()関数

この関数は2つのdynamic-range-limit値を受け取り、 内部的にメディアホワイトを超えるストップ数に変換した上で、 指定された割合で合成し、その結果を表示に反映します。 実際の計算結果は公開されません。

dynamic-range-limit-mix() = dynamic-range-limit-mix( [ <ident> && <percentage [0,100]> ]#)
テスト

すべてのパーセンテージの合計が0%の場合、この関数は無効です。

2.5. dynamic-range-limitの算出値

指定値がstandardconstrained-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_standardp_constrained_highp_highのいずれかが100%であれば、 算出値はそれぞれstandardconstrained-highhighとなります。

  6. それ以外の場合、算出値はdynamic-range-limit-mix()となり、 パラメータはstandardconstrained-highhigh(この順)で、 パーセンテージはp_standardp_constrained_highp_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. 定義済み色空間で定義されたSDR用の定義済み空間や、 CSS Color 5 § 4 相対色構文の相対色構文に加わるものです。

構文は次の通りです:

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色空間に加えて、下記のHDR色空間がcolor関数用に定義されています。

これら新しい色空間の値のシリアライズは、CSS Color 4 §  15. 色値のシリアライズで説明されているものと同じです。

4.1. rec2100-pq

rec2100-pq [Rec_BT.2100] 色空間は、赤・緑・青の各チャンネルを表す3つの数値パラメータを受け付けます。 それぞれの値の有効範囲は[0, 1]であり、実際のビット深度(1成分あたり10または12ビット)に関わらず共通です。

パーセプチュアルクアンタイザー(PQ)エレクトロオプティカルトランスファ関数が使用されます [SMPTE-ST-2084],[Rec_BT.2100]。 PQはスクリーンの周囲輝度5cd/m²という基準視聴条件を想定しています。

ITUリファレンス2100はHDR 4Kおよび8Kテレビで使用されています。

SDR色空間や一部HDR色空間と異なり、 PQの値は相対値ではなく絶対値です。

SDRとHDRのダイナミックレンジを対数スケールで示す図を追加

特徴は以下の通りです。 (ディスプレイの主色点は[Rec.2020]と同じです):

x y
赤の色度 0.708 0.292
緑の色度 0.170 0.797
青の色度 0.131 0.046
白の色度 D65
トランスファ関数 パーセプチュアルクアンタイザー
白の輝度 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,000cd/m²の目がくらむような白を表します。 このような明るい色は画面のごく小さな領域でしか一時的に表示できません。 コンテンツは通常、より低いピークホワイト(例: 4,000cd/m²)でマスタリングされます。
 color(rec2100-pq 1.0 1.0 1.0);
この色は快適な「拡散白」を表しています。 これは長時間表示したり、字幕用途など画面のどの領域にも使えます。 sRGBのwhiteと同じ色です。 拡散白は203cd/m²です[Rec_BT.2100]
 color(rec2100-pq 0.58 0.58 0.58);

この色は中間グレー(写真でいう「18%反射グレー」カード)を表し、17cd/m²です。

 color(rec2100-pq 0.34 0.34 0.34)

sRGB赤・緑・青やP3赤・緑・青の符号化例など、他の例も追加すること

線形光RGB信号をPQエンコードに変換するには以下の式を用います。絶対輝度スケールを使うため、拡散(メディア)ホワイトの輝度が必要です。PQで符号化可能な最大値(ピーク白)は10,000cd/m²です。メディアホワイトは203cd/m²です[Rpt_BT.2408]

var Er;      // 赤・緑・青成分, SDRは[0,1]、HDRは[0,70程度]
var Yw = 203;  // 拡散白の絶対輝度, cd/m²
var x = Er * Yw / 10000;   // ピーク白の絶対輝度は10,000cd/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] 色空間は、赤・緑・青の各チャンネルを表す3つの数値パラメータを受け付けます。 それぞれの値の有効範囲は[0, 1]であり、実際のビット深度(1成分あたり10または12ビット)に関わらず共通です。

ハイブリッドログガンマ(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
トランスファ関数 ハイブリッドログガンマ
白の輝度
視聴条件によって決まる
ピーク白輝度 基準白の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,000cd/m²でマスタリングされるため、 拡散白は203~581cd/m²となります。
 color(rec2100-hlg 0.75 0.75 0.75);

この色は中間グレー(26~104cd/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] 色空間は、赤・緑・青の各チャンネルを表す3つの数値パラメータを受け付けます。 それぞれの値の公称範囲は[0, 1]であり、実際のビット深度(1成分あたり10または12ビット)に関わらず共通です。

赤・緑・青すべてが1.0の色は、絶対輝度203cd/m²のHDRリファレンスホワイトを表します。

color(rec2100-linear 1 1 1)
例えば、次の色は
color(rec2100-linear 9.852 9.852 9.852)

絶対輝度9.852 × 203 = 1,999cd/m²の白ハイライトを表します。

この色は快適な「拡散白」を表しています。 これは長時間表示したり、字幕用途など画面のどの領域にも使えます。 sRGBのwhiteと同じ色です。 拡散白は203cd/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
トランスファ関数 リニア
白の輝度 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] は3つの数値パラメータを受け付けます。 JzがLabのLと同様にLightness(明度)を表し、 azとbzが赤緑軸・黄青軸(Labのa,bに類似)を表します。

CIE LabはL=0~100%(メディアホワイトに対する相対値)ですが、実験的にL=400%まで拡張されています。 対して、JzazbzのJz軸は[0,1.0]範囲で、 PQに類似した符号化を使い、13ストップ以上のダイナミックレンジを表現できます。

特徴は以下の通りです:

x y
白の色度 D65
トランスファ関数 パーセプチュアルクアンタイザー
ピーク白輝度 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と同じ色です。 拡散白は203cd/m²です[Rec_BT.2100]
 color(jzazbz 0.22207 -0.00016 -0.00012)

4.5. JzCzHz

LCH(Labの極座標形)と同様に、JzCzHzJzazbzの極座標形です。 JzはJzazbzと同じで明度を表し、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) // 度に変換すること!
  2. Cz = sqrt(az^2 + bz^2)
  3. Jzは同じ

4.5.2. JzCzHz色をJzazbz色へ変換

Jzazbzへの変換は簡単です:

  1. az = Cz cos(H) // まずHをラジアンに変換!
  2. bz = Cz sin(H) // まずHをラジアンに変換!
  3. Jzは同じ

4.6. ICtCp

ICtCp 色空間は、 [Rec_BT.2100] における Constant Intensity ICTCP 信号フォーマットとして定義され、 3つの数値パラメータを受け付けます。I は強度(Lab の L に類似しますが、最大 10,000 cd/m2 までの輝度範囲を扱います)を表し、 CT と CP はそれぞれ黄色-青(トリタノープ)軸および赤-緑(プロタノープ)軸を表します(それぞれ Lab の b, a に類似)。

これはヒトの視覚系の LMS コーン原色に基づいており、 Hunt–Pointer–Estevez (HPE) の XYZ→LMS 変換が用いられ、 D65 白色点に正規化されます。 その後、BT.2020 RGB のガマット殻の凹みを削減して補間誤差を減らすためにクロストーク行列が適用されます。 このクロストークは、等色相線の改善や、Just Noticeable Difference (JND) のマカダム楕円の均一性の改善ももたらします。

特徴は次のとおりです:

x y
白の色度 D65
トランスファ関数 Perceptual Quantizer
白の輝度 203 cd/m²
ピーク白輝度 10,000 cd/m²
黒の輝度 0.001 cd/m²
画像状態 display-referred
パーセンテージ I, Ct, Cp に対して許可
パーセント基準範囲 I: 0% = 0.0, 100% = 1.0
Ct と Cp: -100% = -1.0, 100% = 1.0

[Rec_BT.2100] は線形光 BT.2100 RGB からの変換で ICTCP を定義していますが、 この変換は LMS 経由で進むため、XYZ→LMS 変換を適用することで他の色空間も表現できます。

Lab と異なり、D65 白色点が使用される点に注意してください。

また、反射低輝度色で主にテストされてきた Lab と異なり、 ICTCP は高彩度、自発光、高強度(HDR)色でテストされています。 これにより、色差測定(deltaE ITP)や SDR と HDR 色のガマットマッピングに適しています。

この色は ICtCp における sRGB の色「lime」を表します
 color(ictcp 0.5393 -0.2643 -0.0625)
この色は快適な「拡散白」を表します。 この色は長時間表示でき、字幕など画面の任意の領域に使用できます。 これは sRGB の 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 メディアホワイトを 58% PQ 値を表示するのに使用される輝度である 203 cd/m² にマップするべきです。 [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

(内部保存にはコンポーネントごとに 16bit、half-float、または float が推奨されます)。 値は切り捨てではなく +∞ 方向への丸め を行う必要があります。

PQ ベースの色空間は、異なる視聴環境で表示するためにトーンマッピング(OOTF)を必要とするか?

プライバシーに関する考慮事項

Web プラットフォームが HDR ヘッドルーム の数値を直接公開していない理由は、 それにより現在の視聴条件が露出されてしまい、プライバシー侵害 となるためです。

セキュリティに関する考慮事項

この文書に関してはセキュリティ上の懸念は提起されていません

アクセシビリティに関する考慮事項

非常に明るい色に対して感受性を持つ人がいるため、 ユーザーエージェントはユーザーのオプションで最大輝度を制限する仕組みを提供すべきです。 推奨手順としては、[Rec_BT.2390] のセクション 5.4.1 Mapping to display with limited brightness range にある toe と knee の手順が適切だと考えられます。

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" によって規範的テキストから区別されます。

注: これは情報的な注記です。

勧告は注意を促すための規範セクションであり、<strong class="advisement"> によって区別されます。例: UAs MUST provide an accessible alternative.

Tests

この仕様の内容に関するテストは、このような "Tests" ブロックに記述されることがあります。 そのようなブロックはすべて非規範的です。


適合クラス

本仕様への適合は 3 つの適合クラスで定義されています:

style sheet
CSS スタイルシート
renderer
スタイルシートの意味を解釈し、それを用いて文書をレンダリングする UA
authoring tool
スタイルシートを書く UA

スタイルシートが本仕様に適合するのは、本モジュールで定義された文法を用いる宣言がすべてジェネリックな CSS 文法および各機能の文法に従って有効である場合です。

レンダラーが本仕様に適合するのは、適切な仕様群に従ってスタイルシートを解釈することに加え、本仕様で定義されたすべての機能を正しく解析して文書をレンダリングできることが条件です。ただし、デバイスの制約により正しくレンダリングできない場合があっても、UA が非適合と見なされるわけではありません(例: モノクロモニターでの色表示が不要であること)。

オーサリングツールが本仕様に適合するのは、ジェネリックな CSS 文法および本モジュールの各機能の文法に従って文法的に正しいスタイルシートを書き、スタイルシートに関するすべての適合要件を満たす場合です。

部分実装

フォワード互換性のある解析規則を利用してフォールバック値を割り当てられるように、CSS レンダラーはサポートレベルが利用できない at-rule、プロパティ、プロパティ値、キーワード、およびその他の構文構成要素を無効(適切に 無視)として扱う必要があります。特に、サポートされないコンポーネント値がある場合、単一の複数値プロパティ宣言内でサポートされる値だけを選択的に無視せずに残すことはできません: いずれかの値が無効(サポートされない値は無効とされる)であれば、CSS は宣言全体を無視することを要求します。

不安定および独自機能の実装

将来の安定した CSS 機能との衝突を避けるため、CSSWG は ベストプラクティス に従うことを推奨します。

非実験的実装

仕様が Candidate Recommendation ステージに達すると、非実験的な実装が可能になり、実装者は CR レベルの機能を正しく実装したことを示せる場合、接頭辞なしの実装をリリースするべきです。

CSS の相互運用性を確立・維持するために、CSSWG は非実験的な CSS レンダラーに対して、接頭辞なし実装をリリースする前に実装報告(および必要ならその実装報告に使用したテストケース)を W3C に提出するよう要請しています。W3C に提出されたテストケースは CSS Working Group によるレビューと修正の対象になります。

テストケースおよび実装報告の提出方法については、CSS Working Group のウェブサイト 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. 13 January 2022. 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. 13 February 2024. CR. URL: https://www.w3.org/TR/css-color-4/
[CSS-COLOR-5]
Chris Lilley; et al. CSS Color Module Level 5. 29 February 2024. 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. 22 March 2024. 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. 12 March 2024. 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. 7 June 2011. 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. October 2015. 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. March 1997. 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

プロパティ索引

Name Value Initial Applies to Inh. %ages Anim­ation type Canonical order Com­puted value
dynamic-range-limit standard | high | constrained-high | <dynamic-range-limit-mix()> high all elements yes n/a by dynamic-range-limit-mix() per grammar see Computed Value for dynamic-range-limit

課題索引

add a diagram showing SDR and HDR dynamic ranges on a log scale
add other examples, including encoding of sRGB red, green, blue and P3 red, green, blue.
add other examples
add black level lift Β as defined on same page?
Do the PQ-based color spaces require tone-mapping (OOTF) for display in different viewing environments?