Unity ShaderLab新手宝典简单Shader:描边效果 + 相关基础知识
当Shader中有多个Pass时,Pass会按照顺序执行,后执行的Pass绘制的图像会覆盖掉前面的Pass绘制的图像。
这个案例就是通过两层Pass实现,第一层Pass将模型的顶点位置沿法线方向膨胀一段距离,然后为膨胀的模型指定一个颜色,不需要与任何灯光交互。
第二层模型正常显示,本案例使用Surface Shader,并使用Standard Specular光照模型。
正常情况第一层膨胀起来的模型会将第二层模型笼罩,因此第二层模型无法通过深度测试,最终只会显示第一层的模型。为解决这个问题,需要让第二层模型通过深度测试。具体解决办法有如下两种:
Shader "Samples/OutLine"
{
Properties
{
[Header(Texture Group)]//[Header(name)]材质面板说明
[Space(10)]//间距
_Albedo("Albedo",2D) = "white"{
}
[NoScaleOffset]_Specular("Specular(RGB-A)",2D) = "black"{
}//[NoScalle