线性工作流是一种进行明暗处理、照明和渲染的方法,与直接使用非线性视频值(如 sRGB)相比,它具有许多优势。颜色管理通过在用于输入、渲染、显示和输出的不同颜色空间之间正确转换颜色来实现线性工作流。
颜色空间根据主要组件以及白点、编码和其他属性来明确指定颜色。例如,用于网页上 sRGB 图像的主要红色、绿色和蓝色值与 P3 数字电影投影仪使用的主要红色、绿色和蓝色值不同,用于 Web 和电影观看的周围灯光条件也不同。然而,可以精确转换标准显示器或投影仪上显示的颜色,因为 sRGB 和 DCI-P3 颜色空间都有很好的特征。但是,要正确解释 RGB 三色值,如 (0.5, 0.25. 0.25),其预期颜色空间必须已知。
现代渲染器可以模拟光线透射、吸收、反射和折射在真实世界中的工作方式。因此,三维场景中的灯光应与真实照明紧密匹配,无论是室外照明还是工作室照明,其中颜色值与光能量成正比 - 这称为场景相关线性工作空间,或简称为场景线性。在这种颜色空间中,没有最大亮度:(1.0, 1.0, 1.0) 是完全适应照明的典型观察者所认为的“白色”,但光源和镜面反射可能会更亮。
但是,显示设备确实有一个最大亮度,当表示为 8 位整数值时,也用 (1.0,1.0,1.0) 或 (255,255,255) 表示。即使在高动态范围设备上,这个最亮值也远不及现实世界中的亮度。这使得有必要将场景的高动态范围值映射到更有限的范围以供显示。只需缩小颜色值以适应显示范围,就会产生令人不快的“模糊”图像 - 需要的是具有摄影响应的色调贴图。
除了高动态范围外,通常还需要使用色域宽的颜色空间进行渲染。这样就可以呈现更多颜色,在制作数字电影和 HDR TV 的内容时尤其重要,因为它们的色域范围比 sRGB 和 HDTV 宽 (Rec.709)。
对于用作纹理输入的图像,可能需要变换才能从将图像保存到渲染空间的颜色空间进行转换。
在工作时,需要转换渲染空间的颜色以提供有用的预览。通常,您需要精确预览最终图像,但有时可能需要其他视图以用于诊断目的。
对于最终渲染,您可能希望根据文件的使用方式应用输出变换。
处理输入图像(如纹理)的正确方法取决于在场景中如何使用图像。还取决于图像本身,包括图像当前的颜色空间、编码和图像状态(图像的颜色值是与场景相关的亮度值成比例,还是与显示相关的亮度值成比例)。
用于非颜色数据的图像不应应用任何变换。这包括凹凸、法线、置换贴图,以及用于其他属性(如半透明、镜面反射度、反射率等)的贴图。
第一步是,将场景相关的值转换为显示相关的空间。例如,这可能需要通过色调贴图将颜色从高动态范围转换为 0.0-1.0 范围,并更改主颜色。
第二步是,针对特定显示转换值。这可能需要再次更改主颜色和相应 Gamma,并将其编码为适当的整数值。
图像通常是在比室外场景或明亮的电影布景昏暗得多的照明条件下观看的,因此色调贴图用于通过生成宜人图像的摄影响应将高动态范围值压缩到显示范围内。通常色调贴图应用 S 形曲线,提高对比度和饱和度以补偿较低动态范围和暗淡的查看环境。此曲线还会将渲染空间中的值 1.0 映射到较低的值,以便在显示空间中为更亮的高光留出空间。
只应用 Gamma 不足以充分准备场景线性图像以供显示。不使用色调贴图,大于 1.0 的颜色值将保持大于 1.0,并且被显示器剪裁。