版本:Unity 6 (6000.0)
语言:英语
Unity 中的线性色彩空间简介
线性纹理

线性色彩空间的伽马纹理

Unity 编辑器允许您处理传统伽马色彩空间和线性色彩空间。即使您的纹理用于渲染游戏对象、精灵或 UI 元素的图像。纹理通常应用到网格表面以赋予其视觉细节。更多信息
请参阅 词汇表
在伽马色彩空间中,您也能处理线性色彩空间。

注意:如果您的纹理属于线性色彩空间,则需要禁用 sRGB 采样。有关详细信息,请参阅线性纹理文档。

线性渲染对渲染的场景场景包含您游戏的环境和菜单。可以将每个独特的场景文件视为一个独特的关卡。在每个场景中,您都可以放置自己的环境、障碍物和装饰物,实质上可以分块设计和构建游戏。更多信息
请参阅 词汇表
带来的外观不同。如果您对项目创作的外观在伽马空间中渲染时看起来不错,那么它在您更改为线性渲染时不太可能看起来很好。因此,如果您从伽马渲染变为线性渲染,可能需要花费一些时间微调项目,使其像之前一样看起来不错。但是,切换最终能实现更一致、逼真的渲染,因此花时间来实现这一点是值得的。您可能需要微调纹理、材质和光照。

光照贴图

光照贴图烘培器根据场景中光线和几何体排列烘培光照贴图的 Unity 中的工具。 详细了解
请参见 术语表
光照贴图存储点光源对静态物体影响的预烘焙纹理。光照贴图会叠加到场景几何体上,以创建光照效果。 详细了解
请参见 术语表
的照度计算始终在线性色彩空间中执行(请参阅 色彩空间 以获取详细信息)。光照贴图始终存储在伽马空间中。这意味着无论您身处伽马色彩空间还是线性色彩空间中,光照贴图存储点光源对静态物体影响的预烘焙纹理。光照贴图会叠加到场景几何体上,以创建光照效果。 详细了解
请参见 术语表
纹理都是相同的。

当您位于线性色彩空间中时,在对纹理进行采样时,纹理样本会从伽马空间转换为线性空间。当您身处伽玛色彩空间时,无需转换。因此,在更改色彩空间设置时,您必须重新烘培光照贴图:当 Unity 的光照设置为自动烘培(这是默认设置)时,这会自动完成。

导入光照贴图

Unity 创建的 Lightmap EXR 文件中的数据位于线性空间中。导入期间它会转换为伽玛空间。从外部光照贴图烘培器中引入光照贴图时,请在 纹理导入器中将光照贴图标记为纹理类型光照贴图。此设置可确保在导入时绕过 sRGB 采样。

支持线性色彩空间的平台

并非所有平台都支持线性渲染。支持该功能的编译目标是

  • Windows、Mac OS X 和 Linux(独立版)
  • 安卓版
  • iOS 版
  • Web 版

如果设备不支持线性渲染,则不会回退到伽马空间。在这种情况下,播放器会退出。您可以通过查看 QualitySettings.activeColorSpace 从脚本检查活动色彩空间。

在 Android 设备上,线性渲染至少需要 OpenGL ES 3.0 图形 API 和 Android 4.3。

在 iOS 设备上,线性渲染需要 Metal 图形 API。

在 Web 设备上,线性渲染至少需要 WebGL一个 JavaScript API,可在 Web 浏览器中渲染 2D 和 3D 图形。Unity Web 版生成选项让 Unity 可以将内容发布为 JavaScript 程序,这些程序使用 HTML5 技术和 WebGL 渲染 API 在 Web 浏览器中运行 Unity 内容。 详细了解
请参见 术语表
2.0 图形 API。

在满足最低要求之前,编辑器会阻止您构建 Player 并显示通知。这是为了避免将渲染在用户设备上不正确的游戏部署到数字商店。

The Unity Editor prevents building a Player for games that would render incorrectly
对于会错误渲染游戏的 Unity 编辑器会阻止构建 Player

线性色彩空间和 HDR

使用 HDR高动态范围
参见 术语表
时,将在线性空间中将渲染执行到浮点缓冲区。这些缓冲区具有足够精度,无需在每次访问缓冲区时进行从伽马空间和到伽马空间的转换。这意味着在以线性模式渲染时,您使用的帧缓冲区将在线性空间中存储颜色。因此,所有混合和后期处理效果都是隐式在线性空间中执行的。写入最终 backbuffer 时,将应用伽马校正。

线性颜色空间和非 HDR

当启用线性颜色空间且未启用 HDR 时,将使用特殊帧缓冲区类型,它支持 sRGB 读取和 sRGB 写入(在读取时从伽马转换为线性,在写入时从线性转换为伽马)。当此帧缓冲区用于混合,或它被绑定为纹理时,这些值在使用前将被转换为线性空间。当向这些缓冲区写入时,要写入的值会从线性空间转换为伽马空间。如果您在以线性模式和非 HDR 模式渲染,那么所有后期处理效果的源缓冲区和目标缓冲区都将以已启用 sRGB 读取和写入的方式创建,这样 后期处理在图像显示在屏幕上之前,通过应用滤镜和效果改进产品视觉效果的过程。您可以使用后期处理效果来模拟物理相机和胶片属性,例如 Bloom 和景深。 了解更多信息 后期处理,后期制作,后期流程
参见 术语表
和后期处理混合将以线性空间进行。


  • 2017–06–19 已修订页面

  • 2017.2 NewIn20172 中添加了 Web 的线性渲染

Unity 中的线性色彩空间简介
线性纹理