使用线性颜色空间比使用伽马颜色空间提供更准确的渲染。
如果纹理是在线性或伽马颜色空间中创建的,则可使用线性颜色空间。向线性颜色空间着色器程序提供的伽马颜色空间纹理将在移除伽马校正后输入给着色器。
如需了解如何设置项目的颜色空间,请参阅设置项目的颜色空间。
注意:即使是在线性色彩空间中工作,纹理导入设置 (Texture Import Settings) 中的纹理预览 (Texture preview) 窗口也使用伽马混合来显示纹理。
选择颜色空间:线性 (Color Space: Linear) 将假设纹理位于伽马颜色空间内。Unity 在默认情况下使用 GPU 的 sRGB 采样器从伽马颜色空间跨越到线性颜色空间。如果纹理是在线性颜色空间内创建的,则需要绕过 sRGB 采样。有关更多信息,请参阅禁用纹理的 sRGB 采样。
从伽马颜色空间跨越到线性颜色空间需要进行一些调整。有关更多信息,请参阅线性颜色空间中的伽马纹理。
对于颜色,此转换是隐式应用的,因为 Unity Editor 在将值作为常量传递给 GPU 之前已将值转换为浮点数。在对纹理进行采样时,GPU 会自动移除伽马校正,将结果转换为线性空间。
这些输入随后传递给着色器,光照计算与正常情况下一样在线性空间中进行。将结果值写入帧缓冲区时,可直接对其执行伽马校正,也可将其保留在线性空间中稍后进行伽马校正,具体做法取决于当前的渲染配置。例如,在高动态范围 (HDR) 中,渲染结果保留在线性空间中稍后进行伽马校正。