Gamma使用:
对线性的物理变化,人的视觉感受不是线性变化的。
当带宽和内存有限时,图片需要压缩,此时可以先调亮图片,在压缩,使用或查看时,再调暗
Unity选择颜色空间:
当使用默认的Gamma空间:
输出 fixed4(i.uv.xxx, 1);
直接输出,
输出 fixed4( pow(i.uv.x, 2.2).xxx, 1);
调暗处理,
输出 fixed4( pow(i.uv.x, 0.45).xxx, 1);
调亮处理,由于显示器会调暗,所以这张是正确的
纹理使用:
在Gamma空间,勾不勾选 sRGB 没有区别,
tex2D 采样是直接读取图片的纹素,没有处理,
此时在着色器中计算光照时,若是sRGB图片,可以pow(_, 2.2)计算后再pow(_, 0.45)到Gamma
再将 Gamma空间 结果return 到 SV_Target0, 缓冲区存储Gamma空间结果,显示器会解码调暗处理。
当使用Linear空间时:
不勾选sRGB
采样是正常线性图片
勾选sRGB
线性图片被调暗
纹理使用:
勾选sRGB 的纹理,会对其进行解码调暗操作,不勾选则不处理,
着色器纹理采样,计算光照,
将线性空间结果返回到 SV_Target0,
自动将 返回值 编码调亮 存入 缓冲区,显示器显示时会调暗。
Unreal
输出 uv.u到Emissive (Opacity,Ulit)