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 使用完全相同的原色,但传输曲线规格略有不同,更适合在较暗的环境中观看内容。
如果您还有其他问题,请告诉我。
一般情况下,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 使用完全相同的原色,但传输曲线规格略有不同,更适合在较暗的环境中观看内容。
如果您还有其他问题,请告诉我。