Unity中要实现PBR效果就必须走线性空间,可以在工程中设置。但是到底怎么来区分这个东西,有什么用呢
先一句话总结:
2D游戏 对于表现效果偏卡通,色彩手绘的 游戏 不需要很真实的光照效果,就选Gamma空间。
3D游戏,需要真实画面效果,偏PBR要求时 就选线性空间(好像也只能选这个),这样出来的光照算法更加真实。
项目在实际运行中 需要注意的几个点:
- gamma的贴图等图片资源 在导出的时候注意够乱sRGB 或者就直接导出线性图。
2.unity中要根据情况动态调整属性,如果有SRGB注意勾选。如果是线性图就直接采样使用。
3.不要在shader中进行gamma和线性的转换,尽快依赖硬件。Shader中计算pow的性能开销并不小直接依赖硬件合适,OpenGL ES3.0才可以支持它。
4.空间的转变ui和特效的透明区域会显示不正常。一种是UI单独开渲染,美术也在gamma中出图,比较麻烦 工作流水线不对。不如直接UI重新调一版,特效也是一样虽然比较蛋疼。至于lightmap 重新烘焙。
线性空间最核心就是因为光照等表现更好 更加真实。
参考文章 Unite 2018 | 浅谈伽玛和线性颜色空间