WebGL/Canvas 中的颜色正确渲染

Color correct rendering in WebGL/Canvas

一般情况下,Web 浏览器 space,特别是 Chrome,为 WebGL 绘图缓冲区采用什么颜色?也就是说,着色器应该以什么颜色 space 输出像素值?

我在 WebGL 规范中找不到任何关于 space 为 WebGL 绘图缓冲区假定什么颜色的内容。

我们的实验表明 Chrome 在合成过程中采用 sRGB。用 Prophoto 标记的图像元素在宽色域显示器上正确显示,但在 WebGL canvas 上渲染的相同图像显示时就像用 sRGB 标记一样。

这是否意味着目前无法在 WebGL 的宽色域显示器上进行颜色校正渲染,并且在不同的浏览器上保持一致?

sRGB 是标准

W3C 将所有网络内容的标准定义为 sRGB,这适用于 CSS3。

CSS 4 级将引入其他 色彩空间,但 sRGB 仍是默认标准。

当内容中没有定义色彩空间时(例如未标记的图像),用户代理应采用 sRGB。大多数设备都是 sRGB,并且不使用颜色管理,因此非 sRGB 内容可能无法正确显示。

WebGL

WebGL本身不做色彩管理。但请注意,这一领域正在进行工作,特别是随着 HDR 和多色彩空间开始在制定标准中占据一席之地。

辅助功能

此外,sRGB 是可访问性的标准网络色彩空间,并且在可预见的未来可能会保持这种状态,因为 sRGB 中的红色原色对于红色盲色觉缺陷仍然相当明显。

今日多数

sRGB 是大多数显示器和设备使用的标准。 HDTV 标准 Rec709 使用完全相同的原色,但传输曲线规格略有不同,更适合在较暗的环境中观看内容。

如果您还有其他问题,请告诉我。