菜鸡shader:L4三色环境光原理妙用并在ue4中实现

三色环境光的拓展运用

我的上一篇博客写了关于三色环境光的原理,这次就来简单拓展一下。最重要的核心思想其实就是取法线向量的第二个分量,因为它控制方法是指向xz平面的上或者下。

所以这次要用这个原来来单独摘出上层环境光,乘上菲涅尔,会有种高光的感觉。先放个图,还是小人模型,懒得找模型了(不是
在这里插入图片描述
可以看到边缘一圈的菲涅尔效果,有种高光的感觉,课程里面直接用在蟑螂模型上了,还好没调成蟑螂棕,要不然更加油腻了…课程里的效果:
在这里插入图片描述
可以,油腻的效果立竿见影。

下面放一下蓝图吧:
在这里插入图片描述

  • 黄色框部分:lambert部分,也就是漫反射环境光部分,给它加上了一个基础色。
  • 红色框部分:phong部分,也就是镜面反射高光部分,对贴图进行了采样,这里有人会疑惑为什么是光方向和观察方向点乘,我感觉应该是处于美术方面的考虑,我试了一下用传统的phong,也就是反射方向点乘观察方向,发现高光更强,也就是更加有塑料感。(模型不一样确实不太好对比,之后要有机会再找找模型,调整一下)
    在这里插入图片描述
  • 紫色框部分就是我们上一次提到的三色环境光,只不过我们这次只取上层的效果,然后与菲涅尔相结合,最后呈现一个只显示上部的菲涅尔效应。
  • 这用的就是三色环境光的原理,只不过我们只用了上面那层,剩余的两层我们没有用。

然后是UE4中的实现

首先是兰伯特部分:
在这里插入图片描述
然后是高光部分:
在这里插入图片描述

  • 在unity中的viewDir其实就是虚幻中的cameraDirectionVector并且还要乘以-1。
  • 同样的,在unity中将我们这个要采样的贴图设置为clamp模式,否则不会出现类似光晕一圈一圈的错误效果。
    在这里插入图片描述

然后是菲尼尔部分:
在这里插入图片描述

  • 菲涅尔想最后还乘了一个0.5,因为虚幻里好像比unity要亮,所以乘了一下。

最后三个部分加起来,连接到自发光项:
在这里插入图片描述
最后效果,虚幻和unity颜色取值相同的颜色会出来不同的效果,建议大家自己手动调节试一下,我的效果和unity里的颜色取值和效果都不一样:
在这里插入图片描述
虽然但是,也有油腻的效果。

当然,新手上路暂无驾照,有错误请各位大佬指正。

猜你喜欢

转载自blog.csdn.net/weixin_43789369/article/details/130892661
今日推荐