Version: Unity 6.0 (6000.0)
语言 : 中文
Unity 的颜色空间
伽马颜色空间

线性和伽马颜色空间之间的差异

使用线性渲染时,光照方程式的输入值与伽玛空间中的输入值不同。这意味着根据不同颜色空间得出不同结果。例如,光线照射表面具有不同的响应曲线,并且图像效果的表现不同。

光衰减

基于距离和基于法线的光照在发生衰减时存在两个方面的差异:

  • 在线性模式下渲染时,执行的额外伽马校正会使光源半径变大。

  • 光照边缘也显得更清晰。这更准确地模拟了表面上的光照强度衰减。

左:线性空间中的球体光照。右:伽马空间中的球体光照
左:线性空间中的球体光照。右:伽马空间中的球体光照

线性强度响应

使用伽马渲染时,提供给着色器的颜色和纹理已经应用了伽马校正。在着色器中使用它们时,高亮度的颜色实际上比预期亮度值更亮(相对于线性光照)。这意味着,随着光照强度的增加,表面会以非线性方式变亮。这将导致许多位置的光照亮度过高。此外还可能给模型和场景带来褪色的感觉。使用线性渲染时,在表面上产生的响应随着光照强度增加仍保持线性。因此,带来的表面着色真实得多,表面产生的颜色响应也好得多。

下面的无限 3D 头部扫描图像展示了在线性光照和伽马光照模式下人体头部模型上的不同光照强度。

无限 3D 头部扫描,制作者 Lee Perry-Smith,根据 Creative Commons Attribution 3.0 Unported 许可证获得许可(可从 www.ir-ltd.net 获取)
无限 3D 头部扫描,制作者 Lee Perry-Smith,根据 Creative Commons Attribution 3.0 Unported 许可证获得许可(可从 www.ir-ltd.net 获取)

线性和伽马混合

当混入帧缓冲区时,混合发生在帧缓冲区的颜色空间中。

使用伽马空间渲染时,非线性颜色会混合在一起。这种混合颜色的方法在数学上不正确,并可能得出不符合期望的结果,但这种方法是在某些图形硬件上进行混合的唯一方法。

当使用线性空间渲染时,混合发生在线性颜色空间中:这在数学上是正确的,并提供精确的结果。

下图显示了不同类型的混合:

顶部:线性颜色空间中的混合产生预期的混合结果<br/>底部:伽马颜色空间中的混合会导致过度饱和和过于明亮的混合效果
顶部:线性颜色空间中的混合产生预期的混合结果
底部:伽马颜色空间中的混合会导致过度饱和和过于明亮的混合效果
Unity 的颜色空间
伽马颜色空间