基础概念
Shader 入门精要,18.4.2章节
sRGB颜色空间标准:图像使用 0.45编码,显示器使用 2.2解码,这个流程叫 sRGB颜色空间标准
1/2.2 约等于 0.45
Pow(颜色,1/2.2) –> png 编码伽马,将现实世界的线性的颜色编码成Gamma空间
Pow(png,2.2) –> 显示器 显示伽马,将Gamma空间的颜色值还原成现实世界的线性颜色值
Gamma 与线性的光照差异和混合差异
Unity线性空间背后的设置
Gamma 空间
- Unity 处于放任模式,不会对输入和输出进行任何处理
Linear 空间
会把勾选了 sRGB的贴图,在采样时,自动将其转换到线性空间
开启 HDR
- 将颜色写入到颜色缓冲区,或者自定义RT时,均使用线性写入,不进行 Gamma 编码
- 在读取颜色缓冲区或者RT时,不需要 Gamma 解码操作
使用 LDR
- 将颜色写入到颜色缓冲区,或者自定义RT时,进行 Gamma 编码,此时贴图跟 sRGB空间的贴图没有任何区别
- 在读取颜色缓冲区或者RT时,需要进行 Gamma 解码操作
- 混合操作时, Gamma 解码 ->混合 -> Gamma 编码 ->缓冲区,A通道不参与伽马校正
在Unity使用了线性空间后,Unity会在把像素写入颜色缓冲区前进行一次伽马编码校正,来抵消显示器的显示伽马解码作用
官网文档 Linear or gamma workflow
https://docs.unity3d.com/2019.4/Documentation/Manual/LinearRendering-LinearOrGammaWorkflow.html