本文主要是介绍Unity之ShaderGraph如何实现边缘光效果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
游戏中最常用的一个效果就是边缘光了,既可以做物体的高亮效果,也可以给人物皮肤表面添加光泽。如下图所示:
实现原理
边缘光的原理就是Fresnel节点的底层逻辑。
Fresnel:菲涅尔效应是根据视角不同表面上反射率不同的效应,当接近掠射角时,会反射更多的光。菲涅尔效应节点通过计算表面法线和视图方向之间的角度来近似这一点。这个角度越宽,返回值就越大。这种效果通常用于实现边缘照明,在许多艺术风格中都很常见。
我们通过Fresnel的代码,可以大致知道它的原理。
代码:
void Unity_FresnelEffect_float(float3 Normal, float3 ViewDir, float Power, out float Out)
{Out = pow((1.0 - saturate(dot(normalize(Normal), normalize(ViewDir)))), Power);
}
完整节点
带方向的边缘光效果
原理
带方向的边缘光,原理就是我们利用物体表面的法线和我们指定向量做Dot点乘,计算夹角大小,然后Step过滤掉小于0.5的值,最后在和菲尼尔的结果相乘。就得到了自己指定方向的边缘光效果
完整节点
这篇关于Unity之ShaderGraph如何实现边缘光效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!