Unity中纹理启用SRGB的坑

Unity中纹理启用SRGB的坑

__先说结论,在shader中不使用SRGB与Linear的转换函数的前提下,如果该纹理是Albedo、Emissive、Ramp或者其它颜色贴图,建议勾上SRGB,如果是Normal、Mask、Metallic等数据纹理,不需要勾SRGB。

在这里插入图片描述

__在PS中,导出的纹理默认是SRGB,这个可以在首选项中看到。
在这里插入图片描述
__开启SRGB,没有使用SRGB与Linear的转换函数。
在这里插入图片描述
__关闭SRGB,没有使用SRGB与Linear的转换函数。
在这里插入图片描述
__开启SRGB,使用SRGB与Linear的转换函数。
在这里插入图片描述
____关闭SRGB,使用SRGB与Linear的转换函数。
在这里插入图片描述
__很明显,只有第1个和第4个是正确的(看脸! )。

__这两种情况该怎么选择呢,一般情况下是勾上SRGB,不用在Shader中使用转换函数,因为勾上SRGB后纹理会做预处理,相当于在Shader中使用了转换函数,这样做可以优化游戏性能(省了shader中转换函数的操作消耗)。其他情况本人小白还没有遇到过,应该在自定义管线那部分可能会涉及到吧。

__最后,在一般情况下,如果在shader使用了转换函数,只需要使用SRGBToLinear,不需要在输出的时候使用LinearToSRGB,因为在Unity中最后输出的一步是DrawDynamic。
在这里插入图片描述

__这个步骤跑了一个pass
在这里插入图片描述
来看一下这个pass做了什么。
在这里插入图片描述
使用了LinearToSRGB转换函数,也就是说,unity在最后做了统一的处理,这样就不用每个pass中使用转换函数了,减少操作开销(少写代码 )。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值