使用 Adobe Photoshop 创作查找纹理
以下过程使用 Photoshop,但也可以采用其他数字内容创作工具,例如 DaVinci Resolve 或 Nuke。
步骤 1:设置 HDRP 资源
确定要用于项目的查找纹理 (LUT) 大小,并在项目的 HDRP 资源中设置该大小。要设置 LUT 大小,请使用 HDRP 资源的 Grading LUT Size 属性。
这是一个固定大小;如果以后进行更改该值,需要重新烘焙所有的 LUT。大小为 32 可提供适合实时使用的足够精度。
步骤 2:将摄像机视图渲染到 EXR 文件
将当前摄像机的视图导出到日志编码的 EXR 文件。为此需要执行以下操作:
- 在 Scene 视图或 Hierarchy 中,选择一个包含 Camera 组件的游戏对象。
- 选择 Edit > Render Pipeline > Render Selected Camera to Log EXR(或按 Ctrl+Shift+Alt+E)。
- 保存 EXR 文件。
导出 EXR 文件后,将数据从 Unity 使用的格式 (Alexa LogC El.1000) 转换为线性 RGB 空间,以便可供外部软件使用。为此,HDRP 提供了一组即用型转换 LUT。要获取它们,请执行以下操作:
- 打开 Package Manager 窗口(菜单:Window > Package Manager)。
- 从左侧的包列表中选择 High Definition RP。
- 在 Samples 部分中,选择 Additional Post-processing Data 旁边的 Import into Project。
- 这样会将 LUT 导入到 Assets/HDRP Sample Content/Post-processing/Cube LUTs/ 中。
步骤 3:在 Photoshop 中设置 EXR 文件
将 EXR 文件导入 Photoshop。由于这是原始的日志编码文件,因此看起来很散乱。
在图像中添加一个非破坏性的 Color Lookup 调整层(菜单:Layer > New Adjustment Layer > Color Lookup…)。然后,在这个新层的 Properties 中:
- 将 Data Order 设置为 RGB。
- 将 Table Order 设置为 BGR。
- 在 3DLUT File 下拉选单中,选择 Load 3D LUT…,然后选择 Unity Log To Linear 文件以将 LUT 转换为可用的颜色空间。这个文件位于 Unity 项目文件夹的 Assets/HDRP Sample Content/Post-processing/Cube LUTs/ 中。
步骤 4:应用颜色分级
您现在可以开始对图像进行分级。确保仅通过使用非破坏性调整层进行全局颜色操作。LUT 无法存储本地运算符或任何会影响相邻像素的滤镜(例如模糊),因此会产生视觉瑕疵。请将所有调整层放在 Color Lookup 层之上,除非您打算直接在日志输入之上进行分级。
步骤 5:将工作导出为 CUBE 文件
完成分级后,请将工作导出为 CUBE 文件。要在 Photoshop 中执行此操作,请选择 File > Export > Color Lookup Tables(如果使用的是其他数字内容创作程序,请参阅相应文档以了解操作方法)。将 Grid Point 属性设置为与项目 HDRP 资源中的 Grading LUT Size 相同的值。
将 CUBE 文件保存在 Unity 项目的 Assets 文件夹中。
步骤 6:在场景中导入和使用 CUBE 文件
Unity 会自动将 CUBE 文件解释为可用的 Texture3D 资源。您可以在体积内的 Tonemapping 覆盖中使用此 CUBE 文件。为此需要执行以下操作:
- 在 Scene 视图或 Hierarchy 视图中,选择一个包含 Volume 组件的游戏对象并在 Inspector 中查看该游戏对象。
- 在 Inspector 中,选择 Add Override > Post-processing,然后选择 Tonemapping。
- 在 Tonemapping 的 Inspector 中,启用 Mode 并将其设置为 External。
- 将 CUBE 纹理分配给 Lookup Texture 属性。
- 更改 Contribution 来设置 Lookup Texture 对场景的影响。
您可以继续在 Photoshop 中进行颜色分级并覆盖以前保存的 CUBE 文件。Unity 会根据您的更改自动更新场景中的分级。