【Unity】从零使用Amplify Shader - 超简单2D外轮廓

前言:

超简单方案又来了,今天我们做的也是一个在游戏中很常见的外轮廓,实际上外轮廓的实现方案有很多种,Shader层面这里推荐冯乐乐女神《Unity Shader入门精要》,里面有比较详细的描述很原理。接下来我们用ASE来简单实现一下2D中的轮廓。

创建材质:

● 右键 - Create - Amplify Shader - Legacy - Unlit
● 在创建出的Shader上右键 - Create - Material - 起个名字
● 打开ASE编辑器。

初步实现:

  • 首先我们还是创建一个贴图采样节点,然后添加一个需要产生轮廓的贴图。
  • 接下来就是重点了(没想到重点来的这么快吧),创建一个Step节点,将其的Alpha值与我们的贴图连接:

在这里插入图片描述

  • 我们可以看到,好像黑的区域变白了,白的区域变黑了。那么为什么会出现上面这个效果呢:

在这里插入图片描述
在这里插入图片描述

  • 看下释义,很简单,就是非零即一,然后通过公式计算B和A的关系,得出的结果就是最终图像。
  • 那么我们就可以通过调整Step的这个B的值,得出不一样的结果:

在这里插入图片描述

  • 这个时候是不是已经可以想象到如何得到边缘了,没错:外轮廓的重点就是得到边缘!
  • 接下来使用减法节点,让这两张图象相减,然后再让边缘乘上一个颜色,最后再与原图相加:

在这里插入图片描述

  • 到此算是已经基本完成了,以上一种2D外轮廓的原理:利用剪影相减再叠加的方案。
  • 最后把颜色属性暴露出去,在外面调整颜色看看效果吧:

在这里插入图片描述
在这里插入图片描述

总结:

今天又了解到了一种快速实现2D外轮廓的方法,当然了这种方法还是比较有局限性的。比如在3D中可能更多会使用法线外扩等方案,另外如果有骨骼动画的2D图也会产生一些问题。另外实际应用中,贴图大多会被整合在一张大图中,那么就得额外判断哪些地方需要有轮廓哪些不需要了。挑战用自己的想象力去实现外轮廓吧!(提示:UV偏移)

猜你喜欢

转载自blog.csdn.net/sylardie/article/details/126976902