什么是 sRGB
正如 Thomas Mansencal 所解释的那样,sRGB 对于许多艺术家来说仍然是一个令人困惑的概念。什么是 sRGB?
有人说:这是一个色彩空间!
有人回答:这是一个转换函数!
sRGB 实际上两者兼而有之!它是一个包含转换函数的颜色空间,它是一个简单的 Gamma 2.2 曲线调整。这就是为什么还可以使用 Gamma 校正(0.454 / 2.2)来实现线性或非线性。
来自 Substance PBR 指南:“消除 sRGB-OETF 和 sRGB 颜色空间的歧义非常重要;OETF 只是构成 RGB 颜色空间的三个组件之一。”
线性工作流
这是我从小学生水平,到专业水平之间最大的一步,线性工作流在这个行业中是强制性的。据我所知,没有哪个秀的一批的工作室不使用它。
Jeremy Selan:它通常是更好的继承传统电影工作流程的某些方面,即使是在全 CG 环境中也是有益的。因此,我们提倡将动画看作是在计算机中创建一个“虚拟电影集”,包括虚拟相机、虚拟底片和虚拟打印素材。
在大多数情况下,如果一台计算机运行 Windows 操作系统,我们可以通过使用伽马值为 2.2 的监视器来获得接近理想的颜色,这是因为 Windows 假设监视器的伽马值为 2.2,这是 Windows 的标准伽马值。
我们通过在 sRGB 图像中保存一个转换函数来解决这个问题。这就是为什么我们需要用一个反向伽马曲线(0.454)或反转的 sRGB 曲线来补偿。这是非常重要的一点:如果不为渲染空间使用线性转换函数,渲染将永远不会正确,在 sRGB 中直接渲染(和显示)是错误的!
线性渲染空间示例
下面的示例使用不带 LUT 的 sRGB 显示转换,就像大多数渲染软件默认提供的那样。我们来看看为什么这是错误的。
显示空间:我设置了 0.5,因为我想在我的屏幕上看到一个中间灰色。
渲染空间:由于我在线性工作流中工作,因此在 Autodesk Maya 渲染中的中间灰色将为 0.214,这使我的计算正确。
--在线性工作流程中,消耗更少。
--你的光线反弹会更好。
--阴影看起来更准确。
摘自电影色彩:为什么线性场景更适合照明? 首先,渲染本身有好处。当给定具有高动态范围的场景时,物理上合理的光传输[…]如全局照明会产生自然结果,[…]灯光着色器还可以从使用场景引用的线性效果中获益,特别是在灯光衰减区域,[…]与基于物理的着色模型相结合时,使用 r²灯光衰减自然效果。
r²光衰减只是二次衰减的另一个术语。
基本上,线性渲染为照明提供了正确的数学方法,有很多网站可以了解到线性工作流的例子。
线性困惑
场景引用困惑
这确实是 VFX 行业的原罪:认为线性是一个颜色空间,这种错误仍然相当常见,甚至是 VFX 行业中的大佬们也是难以避免,甚至有些软件本身也是错误的!
我想值得一提的是,在线性模式下工作,并不会给你无限的颜色,你还是要考虑到你工作的原色(或色域)。
在下一章节我们将看到,多亏了 ACES,所有这些色域的困惑将得到净化。
显示引用困惑
我最近(2020 年 4 月)有机会与 Doug Walker(Autodesk 颜色科学技术负责人)讨论有关场景引用和显示引用的线性问题:
线性工作流的描述方法通常包含了一个非常关键的错误。通常,该描述意味着在视图转换过程中,只是将应用于输入端的 Gamma 校正进行反向,但这是错误的,这会导致结果对比度太低、中灰色太亮、高光被剪裁,因此,需要艺术家以非自然的方式,对灯光和材质进行调整补偿等。
基本上大多数学校和学生所做的是…错误的!sRGB 视图转换将渲染空间中的 1.0,映射到显示空间中的 1.0,这是将其用作视图转换的问题之一,它不会为 1.0 以上的任何内容留出空间,而这些值只是被修剪了。
为了纠正这种情况,视图转换必须考虑这样一个事实,即输入的是色彩科学家称之为“场景引用”,而在监视器上查看的图像是“显示引用”。这意味着视图转换不应该是一个简单的反向 Gamma,而是需要包含有时被称为色调映射步骤的内容。
这将是我们下一章的主题
查找表 LUT
摘自电影色彩:查找表(LUT)是一种优化函数求值的技术,计算成本高,缓存成本低。
LUTs 最初来自于实景摄像机,由于有一个值列表,它们允许在低动态范围显示器(LDR)上显示高动态范围图像(HDR),而我们的显示器和电影放映机无法显示整个 HDR 范围,LUTs 是在屏幕上显示像素,并获得良好的电影效果的最佳方法,这叫做色调映射(Tone Mapping)。
色调映射
到目前为止,我们主要关注的是场景引用的部分过程,也就是渲染空间,我们现在要详细说明从场景转换到显示引用的部分,大多数艺术家把这个过程称为“色调映射”。
在任何情况下,如果您只是应用 sRGB LUT,您的对比度将是错误的,您的高光将被剪裁,您的中灰色将在错误的位置上,大多数 CG 艺术家会通过偏置他们的灯光和材质值来弥补这个错误,使它看起来更好,但如果使用适当的色彩管理系统,这是不必要的。
“如果没有 S 曲线的视图转换,你们不会让朋友去观看线性场景”——Thomas Mansencal
LUT 描述
LUT 有两种:
1D LUT(左图):它只包含一列数字,因为它影响 RGB 像素的方式是一样的,它们也被称为显示 LUT,通常使用 S 曲线形状来显示更好的值。我用 spi anim(Sony Pictures Imageworks Animation)配置中的 vd16.spi1d 作为例子,如果你的图像色域是 Rec.709,1D LUT 不会改变它。
3D LUT(右图):它包含三列数字,因为它对 RGB 像素的影响不同,它们用于将一个颜色空间映射到另一个颜色空间。它实际上改变了原色!我用 Rec.709 for ACEScg Maya,来自 ACES 1.0.3(Academy Color Encoding System)配置为例。3D LUT 允许您从一个色域切换到另一个色域。这是一个非常强大的工具!
来自电影色彩:一个查找表(LUT)的特点是它的维数,即索引输出值所需的索引数量。
技术性 LUT:尽可能获得最好的图像显示。
艺术性 LUT:根据个人喜好改变色调、亮度和饱和度。
OCIO
OCIO 是一个用于配置和应用颜色转换的开源框架[…],它为了给许多可能不了解具体情况的人(即不色彩学家),对复杂的颜色管道进行更好的决策而设计的。
要将 LUT 加载到 Maya、Nuke、Guerilla Render 或 Mari 中,我们将使用 OCIO 配置。OCIO 配置是在不同程序之间共享 LUT 的最简单方法。你猜怎么着?你可以免费使用它们。
以下是 Sony Picture Imageworks(左侧)和 ACES 1.2(右侧)的 OCIO 配置:
--不同的规则,如颜色挑选,纹理绘制或合成是预定义的
--DCI-P3 和 sRGB 之间也提供不同的显示
--Film look 的设置加载文件 vd16.spi1d 和快速描述
LUTs 有几种文件格式:spi1d、spi3d、csp、cube…而 Photoshop 只支持 cube 文件,否则,您可以使用 ICC 配置文件,不幸的是,Adobe 软件对 OCIO 并不友好。
任何进行效果开发或渲染的人,都必须使用相同的 LUT,来自表面处理、照明和合成部门的艺术家,需要看到一模一样的东西。在 sRGB 中直接进行纹理处理,但使用 S 曲线 LUT 进行渲染会产生问题。Mari、Substance 或 Photoshop 有很多解决方案可以让你的工作保持一致。
而 OCIO 配置就非常方便了,因为您可以在软件之间共享它们,您可以使用正式发布的,也可以用 Python 构建自己的。与视觉特效相比,动画电影中的 LUT 出现的较晚,但他们在行业中是一个游戏规则的改变者。
1DLUT 示例
如果不使用 LUT 会发生什么?每次你的画面曝光过度,你都必须手动“修复”它,这是错误的。
如果没有 LUT,您将降低灯光的强度,如果它的能量耗尽,但是你会失去一些来自全局照明(GI)反弹光线,一些次表面散射(SSS)等等…
所以你可能需要创造大量的光来补偿能量的损失,这就是你为什么最终得到了一个 50 盏灯的复杂场景!因为你想在一次镜头中投入尽可能多的能量。
来看下面的例子:这是相同的渲染,而显示不同!我重复一遍:来自渲染引擎的 EXR 文件没有改变,它只是我们查看它的方式不同。
使用 sRGB 显示时,高光没有校正,区域光正在过曝几何体,唯一的修复方法是减少曝光。
有了 spi-anim LUT,球体的体积感要好得多,它的中间色调和高光部分形成了很好的对比,不需要减少曝光!效果更棒棒!
FilmicLook
作为一个小学生,我痴迷于得到一个电影外观和纯黑色,而不使我的渲染看起来脏。唯一的解决方法就是使用 LUT,它会给你对比度,并修复任何过度曝光的区域。下图是一个“filmic”S 曲线的色调映射,看起来是这样的:
高光的衰减非常明显:所有介于 1 和 10 之间的值,将显示在 0.8 到 1 之间的范围内。
PS:关于 Filmic Look 请查阅 R 站相关内容,不过最近流行且很火的是 ACES,请自行查阅下 R 站往期内容。
Arnold(C4DToA)阿诺德渲染教程(99) Filmic_Blender 色彩管理解决方案 还能提速?
区域系统
在进一步讨论之前,我们将快速讨论曝光、挡位(Stops)和中间灰色。
1939-1940 年,Ansel Adams 和 Fred Archer 描述了区域系统,这是一种确定最佳胶片曝光和冲洗的摄影技术。不同的区域代表不同的曝光(相机上的一个光圈),我们也将从一个区域转移到另一个区域。
结论
色彩管理是一个永无止境的话题,我几乎每天都在继续探索,我试图用一个容易理解的帖子来总结,一个好的颜色管理是当沿着色彩流水线和在不同的软件中能看到相同的东西。
如果颜色或对比度在从实体切换到 Maya 时发生变化,则可能需要分析该问题,一个好的色彩流水线就是控制着,从最初的草图(可能是艺术部门完成的)到最终交付的色域,始终如一是关键。
以下是我对色彩管理的看法,对我来说,这是一次伟大而漫长的色彩穿越之旅,但它并没有在这里结束,否则不是太简单了啊。如果你还想继续提升,可以转到之后讲解的关于学院颜色编码系统:ACES。
666