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 提交 issue(推荐)反馈意见, 并在标题中包含规范代码 “css-color-hdr”,格式如下: “[css-color-hdr] …评论摘要…”。 所有问题和评论均已 存档。 另外,也可通过(已存档)的公共邮件列表 www-style@w3.org 发送反馈。

本文件受 2023 年 11 月 3 日 W3C 流程文件 管辖。

本文件由遵循 W3C 专利政策 的小组制作。 W3C 保持一份与该小组交付物相关的已披露专利的公开列表; 该页面还包含披露专利的说明。 如果个人实际知晓某专利,并认为该专利包含必要声明, 则必须按照 W3C 专利政策第6节 进行披露。

1. 引言

本节为非规范性内容。

CSS Color 4 为开放 Web 平台引入了广色域(WCG)色彩空间。 这些色彩空间在设计上都是标准动态范围(SDR)色彩空间。 本规范定义了对高动态范围(HDR)支持的扩展。

四种色彩空间的电光转换函数(EOTF): 扩展 sRGB 和线性光 sRGB (在 CSS Color 4 中定义),以及 本规范定义的感知量化器(PQ)和混合对数伽玛(HLG),来自 [Rec_BT.2100]

虽然广色域相关规范已稳定数十年, HDR 标准还不够成熟, 并在过去十年间经历了频繁修订。

1.1. 值定义

本规范遵循 CSS 属性定义约定 (参见 [CSS2]),并采用 值定义语法 (参见 [CSS-VALUES-3])。 未在本规范中定义的值类型在 CSS Values & Units [CSS-VALUES-3] 中定义。 与其它 CSS 模块结合时,可能会扩展这些值类型的定义。

除了各属性定义中列出的特定值外, 本规范定义的所有属性 也接受 CSS 全局关键字 作为属性值。 为提升可读性,未在每处重复列出。

2. 动态范围控制

2.1. 动态范围的定义

动态范围 指的是亮度最亮最暗颜色之间的差值。 动态范围以摄影中的级(stop)为单位衡量。 每增加一级,亮度翻倍。

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

标准动态范围(SDR)中, 媒体白(即常规白色背景的颜色, 或暗色背景上的白色文字) 是最亮的颜色。

例如,在sRGB中, 白色被定义为 80 cd/m² 亮度, 黑色被定义为 0.2 cd/m² 亮度。 因此,动态范围为 8.6 级(stop)。

对于 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. 引入 Headroom

本节为非规范性内容

HDR 显示器能够产生的亮度等级 差异很大。

峰值白色比媒体白高出的部分 被称为 HDR headroom(HDR 余量), 其大小取决于媒体白的水平、 用户偏好 以及观看环境。

该余量通常以摄影级(stop)为单位表示。 因此,标准动态范围(SDR) 根据定义,其HDR 余量为 0 级, 因为最亮的白就是媒体白。

例如,一台低端 HDR 显示器 (仅满足 DisplayHDR 400 ——Vesa 认证 DisplayHDR 最低级别 [DisplayHDR]) 可能媒体白最高为 200 cd/m2,而峰值白色仅为 400 cd/m2(在最亮媒体白下,只有一级 HDR 余量)。
例如,一台高端 HDR 显示器 (高于 DisplayHDR 1400 ——Vesa 认证 DisplayHDR 最高级别) 其媒体白最高可达 400 cd/m2,而峰值白色为 1600 cd/m2

在昏暗的观看环境下, 将媒体白设为 100 cd/m2 时, 可获得四级(16 倍)的 HDR 余量。

Web 平台目前不会 直接暴露显示器的余量水平, 因为它取决于观看环境, 并且实时、非量化的余量信息 可能成为跟踪用户的手段 (例如,检测用户是否移至室外且为晴天)。

并非总是希望 使用全部可用的 HDR 余量。 CSS 提供了一种方式来大致控制 期望的余量大小; 此余量可按元素和时间变化。

例如,设想一个 网页显示照片网格。 其中一些为 HDR 图片,包括一些动态范围极高的照片, 如正对太阳的拍摄。 若所有照片都以完整动态范围显示会令人疲劳。 同时, 如果全部限制为 SDR 范围, 又无法充分体现某些照片的特点。 设计目标是在显示足够 HDR 效果的同时, 便于对照片组进行有意义的评估。

2.3. dynamic-range-limit 属性

名称: dynamic-range-limit
值: standard | high | constrained-high | <dynamic-range-limit-mix()>
初始值: high
适用对象: 所有元素
是否继承:
百分比: 不适用
计算值: 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 值, 内部将它们转换为高于媒体白的 stop 值, 并根据指定比例混合后调整显示。 实际计算结果不会暴露。

dynamic-range-limit-mix() = dynamic-range-limit-mix( [ <ident> && <percentage [0,100]> ]#)
测试

如果所有百分比之和为 0%,则该函数无效。

2.5. dynamic-range-limit 的计算值

如果指定值为 standardconstrained-highhigh,则计算值为指定值。

如果指定值为 dynamic-range-limit-mix(),则计算值按以下算法确定:

  1. v1, ..., vN 为待混合参数的计算值。

  2. p1, ..., pN 为混合百分比,归一化后和为 100%。

  3. 定义贡献百分比如下:

    • p1_standard,...,pN_standardstandardv1,...,vN 中的百分比

    • p1_constrained_high,...,pN_constrained_highconstrained-highv1,...,vN 中的百分比

    • p1_high,...,pN_highhighv1,...,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() 函数被扩展为 除了来自CSS Color 4 § 10. 预定义色彩空间的预定义 SDR 空间和CSS Color 5 § 4 相对颜色语法的相对色彩语法外, 还允许使用HDR 的预定义色彩空间

其语法如下:

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. 序列化 <color> 值中的描述一致。

4.1. rec2100-pq

rec2100-pq [Rec_BT.2100] 色彩空间接受三个数值参数, 分别代表该颜色的红、绿、蓝通道, 每个通道的有效范围为 [0, 1], 与实际位深(每通道 10 或 12 位)无关。

采用感知量化器(PQ)电光转换函数 [SMPTE-ST-2084][Rec_BT.2100]。 PQ 假定参考观看环境下屏幕周围亮度为 5 cd/m²。

ITU Reference 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
转换函数 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;      // 红、绿、蓝分量,[0, 1] 为 SDR,[0, 70 左右] 为 HDR
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] 色彩空间接受三个数值参数, 分别代表该颜色的红、绿、蓝通道, 每个通道的有效范围为 [0, 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
转换函数 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] 色彩空间接受三个数值参数, 分别代表该颜色的红、绿、蓝通道, 每个通道的标称范围为 [0, 1], 与实际位深(每通道 10 或 12 位)无关。

红、绿、蓝都为 1.0 的颜色 表示 HDR 参考白,其绝对亮度为 203 cd/m²。

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], 采用与 PQ 类似的编码, 可表示超过 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

类似于 Lab 的极坐标形式 LCH,JzCzHzJzazbz 的极坐标形式。 JzJzCzHz 中的值相同,代表明度, Cz 代表色度或色彩度, Hz 代表色相角, 从正 az 轴起,朝正 bz 轴方向计。

此颜色表示 sRGB“lime”在 Jzazbz 空间下的值
 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) // 先转换为弧度!
  2. bz = Cz sin(H) // 先转换为弧度!
  3. Jz 不变

4.6. ICtCp

ICtCp 色彩空间被定义为在 [Rec_BT.2100] 中的 Constant Intensity ICTCP 信号格式, 接受三个数值参数, 其中 I 表示强度(类似于 Lab 中的 L,但覆盖可达 10,000 cd/m2 的亮度范围), 而 CT 与 CP 分别表示黄-蓝(tritanope)和红-绿(protanope)的对立色轴(分别类似于 Lab 中的 b 和 a)。

它基于人类视觉系统的 LMS 视锥原色; 使用 Hunt-Pointer-Estevez (HPE) 的 XYZ 到 LMS 变换, 并规范化到 D65 白点。 随后应用串扰矩阵, 以减少 BT.2020 RGB 的色域轮廓凹陷, 从而减少插值误差。 串扰还改善了恒定色相线和 JND(刚好可察觉差异)MacAdam 椭圆的一致性。

其特性如下:

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(见 [Rec_BT.2100]), 该转换是经由 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 媒体白映射到 203 cd/m², 这与用于显示 58% PQ 值的亮度相同。 [SMPTE-ST-2084] 但是,实施者可以选择加入色彩重渲染步骤(OOTF) 以考虑非参考观看条件。

6. 序列化 <color>

6.1. 序列化 color() 函数的值

本节扩展了 CSS Color 4 § 15.5 序列化 color() 函数的值

color() 值的序列化形式 源自 计算值 并使用 color() 形式, 函数名和色彩空间名称使用 ASCII 小写 字母。

组件值以 10 进制序列化, 作为 <number>。 组件值之间以及色彩空间名与第一个颜色分量之间必须使用单个 ASCII 空格字符 " " 作为分隔符。

对于预定义的 HDR 色彩空间, 用于往返(round-tripping)的最小精度如下:

HDR 色彩空间 最少位数
rec2100-pq, rec2100-hlg 10
rec2100-linear, jzazbz, jzczhz, ictcp 16

(建议内部存储使用 16bit、half-float 或 float 每分量)。 值必须 向 +∞ 四舍五入,而非截断。

基于 PQ 的色彩空间在不同观看环境中是否需要进行色调映射(OOTF)以便显示?

隐私注意事项

Web 平台不直接暴露 HDR headroom 的数值原因是,暴露这些信息会泄露当前的观看条件,构成对用户的 隐私侵害

安全注意事项

目前尚未就本文档提出安全方面的关注

可访问性注意事项

部分用户可能对非常明亮的颜色敏感, 因此用户代理应提供一种机制, 允许用户选项限制最大亮度。 建议采用 [Rec_BT.2390] 第 5.4.1 节 Mapping to display with limited brightness range 中的 toe 和 knee 程序作为合适方法。

用户样式表中也可以将 dynamic-range-limit 属性设置为 standardconstrained-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” 模块记录。 任何此类模块均为非规范性。


一致性类别

本规范定义了三类一致性:

样式表
一个 CSS 样式表
渲染器
一个 用户代理,解释样式表语义并渲染使用它们的文档。
创作工具
一个 用户代理,用于编写样式表。

如果样式表中使用了本模块定义的语法,其声明在语法上是有效的,并且符合通用 CSS 语法和每个特性的单独语法,则该样式表与本规范一致。

渲染器若还正确支持本规范定义的所有特性(包括正确解析并据此渲染文档),则视为与本规范一致。然而,若某用户代理因设备限制无法正确渲染文档,并不使该用户代理不一致。(例如,用户代理无需在单色显示器上渲染颜色。)

创作工具若能生成语法上正确的样式表(符合通用 CSS 语法和本模块中各特性的语法),并满足样式表的一切其他一致性要求,则视为与本规范一致。

部分实现

为了让作者能利用向前兼容的解析规则来指定回退值,CSS 渲染器 必须 将其无法支持的 at-rules、属性、属性值、关键字和其它语法结构视为无效(并在适当时 忽略)。特别是,用户代理 不得 在单个多值属性声明中选择性忽略不支持的组件值并保留支持的值:若任何值被视为无效(如不支持的值应被视为),CSS 要求整个声明被忽略。

不稳定与专有特性的实现

为避免与未来稳定的 CSS 特性冲突,CSSWG 建议在实现 不稳定 特性和 专有扩展 时遵循最佳实践。

非实验性实现

一旦规范达到候选推荐(CR)阶段,非实验性实现成为可能,且实现者应在能证明其按规范正确实现 CR 级特性时发布无前缀实现。

为建立并维护各实现间的互操作性,CSS 工作组请求非实验性 CSS 渲染器在发布任何已正确实现的 CR 级特性(无前缀实现)之前,向 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. 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

属性索引

名称 初始 适用对象 继承 %ages 动画类型 规范顺序 计算值
dynamic-range-limit standard | high | constrained-high | <dynamic-range-limit-mix()> high 所有元素 不适用 由 dynamic-range-limit-mix() 按语法 见 dynamic-range-limit 的计算值

问题索引

补充一张用对数刻度显示 SDR 和 HDR 动态范围的图
补充更多示例,包括 sRGB 红、绿、蓝 和 P3 红、绿、蓝 的编码。
补充更多示例
是否补充同页定义的黑位提升 Β?
基于 PQ 的色彩空间在不同观看环境中是否需要进行色调映射(OOTF)以便显示?