轮廓光/边缘光效果
效果展示
实现过程
创建贴图
1、如何创建一个贴图并且可以实现在属性面板可视化以及修改呢?
首先,在属性面板创建一个Texture2D类型的参数,如下图所示:
我们这里将其命名为:MainTex
点击MainTex属性框,我们可以看到右侧Graph Inspector检视面板上可以看到该参数的相关信息,我们在红框内选择一个需要的贴图填入。
然后我们将该属性拖入到进来,在面板空格处点敲击空格键,出现以下创建节点(Create Node)功能,我们创建一个该节点
按照下图所示将参数与节点相连接,得到图片的输出效果
此时,右侧Main Preview视图可以看到更新后的结果
最后进行效果的对比:
原模型效果:
增加贴图效果后:
这样就完成了一个贴图类型的添加~
最后在Unity材质的检视面板可以看到:
菲涅尔效果
Fresnel Effect 节点
1、概念:
菲涅尔效应 (Fresnel Effect) 是根据视角不同而在表面上产生不同反射率(接近掠射角时的反射光增多)的效果。Fresnel Effect 节点通过计算表面法线和视图方向之间的角度来模拟这一点。该角度越宽,返回值越大。这种效果通常用于实现在许多艺术风格中很常见的边缘光照。
掠射角:指的是投射线与晶体面之间的夹角,在X射线衍射中有所应用。如在特定的掠射角下,入射x射线的波长一定,才能产生x射线的衍射。即X射线衍射产生的必要条件----布拉格方程。(即:入射角的余角)
2、参数与节点
Shader颜色相乘与相加的区别
1、颜色的rgb的每个值都是[0,1]的,颜色值相乘必然会使颜色值减小(物体更暗),相加必然会使颜色值增加更加接近1(物体更亮)。
2、在计算光照反射时,经过物体材质的反射,光的颜色必然是经过削弱的,所以在计算光照反射时用颜色值相乘。
而在计算贴图采样颜色和环境光颜色时,也用了颜色值相乘,这是因为这时候计算的是两个颜色值的混合。在现实生活中,把很多不同颜色的颜料混合在一起时,他们的颜色最后会变为黑色。这说明他们的颜色值都是越来越小的,rgb值越来越趋近于0,所以才会变成黑色。所以在计算两个颜色值的混合时用颜色相乘。
4、颜色相加,在最后返回像素颜色的时候,用的时环境光颜色和漫反射颜色、高光反射颜色相加。这是因为不同类型的光照计算必然是要让物体变亮的(即颜色值增加),所以在计算各种不同的光照效果叠加时应用颜色值相加。
细节注意
1、法线贴图的使用
法线贴图使用的时候,需要额外修改参数 Type = Normal 类型,若不设置,则该参数无法正常显示
疑惑
1、菲涅尔效果
菲涅尔效果参数(Power),根据视频教程内应该在0-1的区间浮动,但是设置后没有任何的效果,在设置为-1.4左右时,在场景中看到对应效果,具体原因没有研究明确,望各位大佬看到后指点一二~
视频学习参考:
ShaderGraph 入门教程(初学福音)
UnityShader颜色相乘与相加的区别
Unity Shader:实现菲涅尔+色散效果以及相关原理解析