Unity在Gamma空间下实现线性渲染

原文链接:https://blog.csdn.net/t163361/article/details/80148449
今年的游戏圈,最新出的游戏全都是在使用PRB来制作的。
我们公司最新的产品也开始探索使用PBR。
项目光开始的时候纠结于使用Linear模式还是Gamma模式。
后来因为线性下UI和效果图对不上的问题,以及咨询了几位大神制作的项目后,决定使用Gamma模式。
然后就遇到一个问题,之前在线性下制作的模型,切换到Gamma模式后,效果差异很大,高光会爆。
然后就准备写一个可以在Gamma模式实现线性渲染的Shader出来。
本来想在网上找个现成的shader,不过基本都是根据自己项目修改过的。
拿给美术使用,总是会在效果上各种纠结。于是就准备实现一个在Gamma下能和Linear显示一致的Shader出来。
期间查了很多资料
主要根据下面大神的提示进行修改
https://blog.csdn.net/limaous/article/details/52504453
具体的shader就不贴这里了。
提供一个csdn的下载链接,赚点分。毕竟也是好几天的辛苦^^
https://download.csdn.net/download/t163361/10383752
下面提供shader的实现效果。

线性模式渲染效果

线性模式渲染效果

Gamma模式渲染效果

Gamma模式渲染效果
以上截图中的人物渲染比较一致,机甲渲染会有光照的些微差异,猜测是因为Roughness导致的。时间关系就没解决。
提供的shader也是属于精简模式,只保留了主纹理,金属度贴图,法线,自发光功能。其他比如视察贴图的功能给删掉了。
lightmap也没有具体确认效果是否一致。
不过因为本shader保留了在Gamma下和Linear空间下都可以使用,互相参考进行效果修正。
所以大家如果想自己修改,可以起2个工程,1个是Gamma模式,1个是Linear,使用相同的光照,环境贴图,相同的模型,就可以参照进行优化。
shader中有下面一句话

#define _FAKELINEAR 1 

Gamma模式下需要打开
Linear模式下需要注释掉
这样就可以保证两个项目的渲染效果可以达到截图水平。
shader是在unity提供的Standard基础上修改,整合到一个shader中。
关于修正Gamma和Linear的部分都可以搜索_FAKELINEAR查看。
Shader写的比较粗略,不过也更好的保留了调试部分的代码。供大家参考。
具体功能使用的Unity2017.4版本制作。
人物模型据说是 择天记 的。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值