![e203ab2e0b5621eeacec47b6fee2e799.png](https://i-blog.csdnimg.cn/blog_migrate/944f7f2b6b834cd11d4a4348f9b3404e.jpeg)
本文是Up最近对UE4卡渲的积累。碎碎念和堆砌成分比较多。
内容专注于Mobile不包含任何非ES3的实现。
都是是材质编辑器的内容。不会涉及到代码级别的修改。
基础工具
Contex
![894503027e257583cc34b70df3687b20.png](https://i-blog.csdnimg.cn/blog_migrate/47a2be54d1acd68c8de2ddf02700c696.png)
在查找代码资料的时候发现UE4会把常用的光照模型计算打包成这个Contex结构体。
使用起来非常方便。于是在进行材质编辑的时候原样照抄了一个函数。
![6208b14ee355b0a965534a67ba38a589.png](https://i-blog.csdnimg.cn/blog_migrate/6ec88196fe0936928e8171908e61b054.png)
如图,当光照模型需要 NoL NoV H 等组件的时候可以方便调用。
具体内部实现可以参考截图的代码实现。只是用节点重新连了一遍。
卡渲常用的基础光照模型
Phone/ Lambert (Diffuse)
也就是NoL
该函数是所有光照模型的基础。
简单的光照方向到顶点法线的点乘。
一般会将负数部分Clamp到0
![5888a5fcd890478a2a9ec46004b31b68.png](https://i-blog.csdnimg.cn/blog_migrate/45f5d7088f3fd3f5da7817b6996b70e1.png)
![212e642b7879f5025d159b9415249b5c.png](https://i-blog.csdnimg.cn/blog_migrate/cd63774389dce52f7822770e7689b65b.png)
Half Lambert(Diffuse)
对NoL进行偏移后的结果。
有点是可以在0~1范围内处理光影变化。
当使用Ramp的时候经常配合半兰伯特。