创建支持服务单
关注

Q100362:优化您的OCIO配置以进行GPU加速色彩管理

摘要

本文介绍了对Mari 3.3v1中OCIO色彩管理系统所做的更改,并详细说明了如何通过为每个色彩空间创建色彩转换覆盖来充分利用这个新的GPU加速系统进行自定义色彩配置。

注意:本文面向经常使用自己的自定义OCIO配置工作的工作室,并可能引用家庭用户不熟悉的术语。

更多信息

Mari 3.0引入了OCIO色彩管理系统,该系统允许强大的流水线色彩管理工作流程。这通过源图像,单个通道和GPU工作空间上的色彩空间属性提供了更大的控制。 OCIO系统消除了对任何色彩空间预处理源图像或后处理导出图像的繁琐要求。

所有Mari的图像处理都是在GPU上使用GLSL着色器执行的。但是,OCIO在它提供的色彩空间变换类型方面非常有限。例如,它当前不支持条件分支,并且在大多数情况下,LUT用于执行颜色空间变换。

当在GPU上使用时,提供LUT变换作为3D纹理,遗憾的是,其可能遭受性能和准确性问题。这些3D纹理具有较低的样本数,因此如果用于将绘制缓冲区烘焙到可绘制层,则会失去浮点精度。为了确保最终颜色数据的准确性,Mari通过使用原始OCIO数学在CPU上执行扫描线渲染来解决此问题。这增加的开销降低了Mari的整体表现。

使用Mari 3.3, nuke -default 颜色管理配置数学被转换为原生GLSL着色器代码。将颜色转换从CPU切换到GPU,大大提高了Mari的烤漆性能。还公开了用于注册自定义着色器代码的API函数,以替换使用CPU扫描线方法渲染自定义着色器的需要。

为了充分利用这种新的GPU加速色彩管理系统进行自定义颜色配置,您需要为每个色彩空间和色彩空间创建颜色转换覆盖。这包括从原生色彩空间到工作色彩空间和背面的转换,以及Mari中使用的每个色彩空间之间的转换。

你需要做什么

为了正确说明在Mari中进行的色彩空间调整,以下是当将工作色彩空间设置为ACEScg时,Mari将sRGB参考图像烘焙到设置为ACEScg的通道中的可绘制图层时所采取的步骤:

  1. 来源图片
    (实用程序 - sRGB - 纹理)
  2. 将源绘制转换为工作颜色空间
    (实用程序 - sRGB - 纹理 - > ACES - ACEScg)
  3. 将现有目标油漆转换为工作色彩空间
    (ACES - ACEScg - > ACES - ACEScg) (不变)
  4. 显示交互式Paint Through工具并执行烘焙操作
    (ACES - ACEScg)
  5. 将烘焙油漆转换为目标通道颜色空间
    (ACES - ACEScg - > ACES - ACEScg) (不变)
  6. 最终频道数据
    (ACES - ACEScg)

注意:如果工作色彩空间配置为另外的色彩空间,那么在上面提到的(无变化)的步骤中将发生另外的色彩空间变换,这些也需要被覆盖。

为了确保为自定义颜色配置正确实现颜色空间转换覆盖,您需要考虑管道中的以下三个不同角色:

  1. 颜色科学家
    计算每个颜色空间A到B和B到A转换的数学计算。
  2. 着色作家
    将颜色数学编码为每个变换的优化GLSL着色器代码。
  3. 管道TD
    为每个变换构造颜色空间变换注册调用,并在艺术家启动Mari时执行它们。

随附本文并准备下载,您将找到我们的示例代码,了解如何针对Mari 4.0v1中的ACES 1.0.3配置优化这些更改。这些Python文件的内容可以在脚本编辑器中执行,或者文件可以放在Mari Scripts目录中,以便在Mari启动时自动执行。您可以在以下位置找到您的Mari Scripts文件夹:

Linux和OS X: ~/Mari/Scripts
WindowsC:\Users\<username>\Documents\Mari\Scripts

附上你会发现以下两个文件:

register_which_transforms.py

运行时,此文件将遍历当前项目并定义需要加速的所有颜色空间转换。然后打印出项目数据,并在Python控制台中注册颜色空间转换覆盖所需的Python命令。这将用\ TODO语句标记。

register_aces_shader_transforms.py

此脚本解释了我们为优化ACES 1.0.3配置文件而进行的转换注册。此文件还包含一个调试选项,可将sRGB - ACEScg变换为绿色以实现可见性。

这篇文章有帮助吗?
/

We're sorry to hear that!

Please tell us why.
0 人中有 0 人觉得有帮助

评论