挑战UnityShader学习之八——用最简单的方法实现下雨天积水效果

关于手撸PBR Shader效果

又一个星期过去了,毫无进展

之前也因为

目标还是那个目标

在官方的Standard PBR基础上做自己的渲染框架,既可以利用其现有跨平台和多版本验证特性,又可以保证后续扩展能跟上

之前难点有二,一是必须精通PBR,二是Surface Shader

还有很多不那么难的点,高质量素材的获取,Editor扩展开发,熟悉UnityEngine基础类Material,Shader等

其他的难点先不说,光是上面最难的2点

之前也做了一些调整,目标变成

Surface + Built-in Shader + Some Code 

不过,这个星期,来到星期5,光花费了5天,最后发现Surface还是太坑

最后,还得改成VF Shader

不要问为什么,问就是代码调整

而Shader并不是一门高级编程语言,也并没有什么工具,而其产出又极其遵循“能显示即合理"

并没有什么好的方法做代码调整(Unity Shader带偏,这也是我之前为什么老吐槽,我也肉身踩坑,再次证明踩不过)

我又得完整,重新,从头学习Unity Standard,所以资源很重要,信息对称也很重要

最简单的积水效果

(其实还没积水)

原来是什么?不要问,问就是经验

						//只在基于BRDF有用,要不会过曝
void DoWetShading(inout float3 albedo, inout float gloss, float wetLevel) {
    // 越潮湿,地面越暗 
    albedo *= lerp(1.0,0.3, wetLevel); 
    //越潮湿,gloss越大,镜面反射更明亮,高光凝聚度更高。 
    gloss = min(gloss * lerp(1.0,2.5,wetLevel),1.0); 
}

从B站那里不长的1个视频里面的一个很小的片段学到的

简单的Albedo贴图,加上法线贴图

只要金属拉到0.8,smoothness == 0.6

拉出金属感,也就有了油腻腻的感觉,就算雪山也很可以很油腻

(至于metric, smoothness,和smoothness_factor的干系,我前面的博客也解(tu)释(cao)了为什么Unity绕这么多圈)

线性空间和Gamma空间有差吗

上图是线性空间的

也已经很初步的做到,明暗合理,我们看看线性如何

单单从这个这个图,和摄像一样,没什么差别

线性空间,由于最新,免除了以前显示器零件不够先进,现在不需要代码增量了,所以默认会亮一点

线性空间对于Gamma空间更多的是影响颜色的明度

关于颜色,关于“亮度”,上面这个图看不出什么效果

如果你真觉得有差的,自己去眼科医院挂个号验眼睛

(当然,比较两者根本没有任何意义,我不是针对网上的某一个媒体,,,,,)

对于想用官方Unity Shader的你,也只能用线性空间

没得选择,再者官方也只给你2个选择,有给你第三个选择的Custom选项吗??

可以自己想想为什么

不要问叔叔怎么知道的

Metallic和Specular Setup有差吗

其实要搞清楚这个问题不难,多研究下内核(看书,除了乐乐姐,甚至官方的例子都不好看;自己看代码,官方就是不让你好看)

相当于白盒,就是得多花点时间,

而我们不想花时间,也不想鸟他官方这坨Shi

只能用黑盒了,盲测
上图是Metallic,我们看看Specular Setup如何

个人的感受:虽然官方说2个XXX工作流,但用程序员的膝盖想下就知道, 光照算法,和颜色算法你,都重用同一个算法,所以不用期待会有变化;唯一不同就是,整体表面没那么黑(还是一大片雪地才能看出),要是一个小盾牌有用吗?实在理解不了Unity官方人员的“用心";就是少了Metallic(我前面博客说了,就是smoothness_factor)参数, 表面没那么金属,没那么”吸光“,所以整体表面显得没那么黑;有一说一,Unity Standard是PBR的,是基于物理的,只是太恶心人而已。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

avi9111

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

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

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

打赏作者

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

抵扣说明:

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

余额充值