四、Unity中颜色空间

Unity中的设置

通过点击菜单Edit->Project Settings->Player页签->Other Settings下的Rendering部分进行修改,参数Color Space可以选择Gamma或Linear。

  • 当选择Gamma Space时,Unity不会做任何处理。
  • 当选择Linear Space时,引擎的渲染流程在线性空间计算,理想情况下项目使用线性空间的贴图颜色,不需要勾选sRGB,如果勾选了sRGB的贴图,会通过硬件特性采样时进行线性转换。

硬件支持

线性空间需要图形API的硬件支持,目前支持的平台

  • Windows,Mac OS x 和Linux(Standalone)
  • Xbox One
  • PS 4
  • Android (OpenGL ES 3.0)
  • iOS(Metal)
  • WebGL

硬件特性支持

主要由两个硬件特性来支持:

  • sRGB Frame Buffer
    • 将Shader的计算结果输出到显示器前左gamma校正
    • 作为纹理被读取时会自动把存储的颜色从sRGB空间转换到线性空间
    • 调用ReadPixels()、readBackImage()时,会直接返回sRGB空间下的颜色
    • sRGB Frame Buffer只支持每通道8bit的格式,不支持浮点格式
    • HDR开启后会先把渲染结果绘制到浮点格式的FB中,最后绘制到sRGB FB上输出
  • sRGB Sampler
    • 将sRGB的贴图进行线性采样的转换

使用硬件特性完成sRGB贴图的线性采样和shader计算结果的gamma校正,比起在shader里对贴图采样和计算结果的校正要快。

猜你喜欢

转载自blog.csdn.net/s178435865/article/details/132093715
今日推荐