Unity ShaderGraph2D描边效果
Unity版本:2022.3.45fc1
原理
将片元uv朝8个方向偏移,然后叠加,减去原图,得到描边效果,然后与主纹理相加。
预先准备
新建一个Ulit Shader Graph,命名为Edge。Surface Type设置为Transparent
随便准备一张png图片,记得要留有进行描边的空间。
添加两个外部变量,texture2D类型的MainTex和float类型的EdgeWidth,代表主纹理图和描边宽度。
平移
使用Combine节点进行x方向和y方向的组合,使用Tilling and offset节点进行nv偏移,右下方的偏移如下:
其他七个方向的偏移也是相同的方法,不再过多赘述。
将这些偏移之后的uv各自在MainTex上进行采样,如下图所示
将采样后的alpha值进行叠加,叠加后的值会很大,而alpha值的取值必须在0到1之间,因此需要一个clamp节点进行归一化。
归一化后的alpha值会作为最终的alpha值,连接到片元着色器的alpha节点。
将归一化后的alpha值减去主纹理采样后的alpha值,然后将得到的值与主纹理采样的grba值相加,传给片元着色器的Base Color节点
最终结果
Shader Graph下载链接
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Europa Superman 's blog!