描边
描边
记录一下基础的一些 Shader, 分别写一下 2D 和 3D 的外描边
3D 外描边
3D外描边一般来说都是用 Cull Front 来做,效果也还行,放一个简单的伪代码。
1 | Pass |
两个 Pass 做外描边,第一个 Pass 剔除前面,并且用一个 _OutlineWidth 的参数控制描边宽度,第二个 Pass 正常渲染就行,带个光照模型效果看着会更舒服一些。
3D 外描边在 URP 中
由于 URP 通常意义上不能多 Pass,所以这里需要多一个步骤,建议用自定义渲染管线然后增加 Tag 来执行。
- 找到 Package 中的 DrawObjectPass 这个类,然后找到添加 ShaderTagId 的方法,增加自定义 Tag,不过需要注意的是一共只能有 16 个。
- 在需要执行多 Pass 的地方对需要执行的 Pass 里面定义 Tag,这样就会执行多 Pass 了。下面是直接拖入 Standard Render Pipeline 里 CullFront 的效果。
- 自定义 Tag 后的 CullFront 的效果,这里我只展示描边,没有叠加显示贴图的功能。
2D 内描边
2D 外描边先找到边缘点然后增加颜色,最后改一下 alpha 值,关键代码如下
1 | //获取周围上下左右4个点的uv |
2D 外描边
内外描边的代码基本一样,就是在判断的时候内描边直接保留透明像素的颜色,外描边保留本身的颜色,下面直接贴一个内外描边的效果对比图。
参考链接
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.