2D描边效果:
上面是实现2D描边效果的3种不同效果,左边为原图,右边为效果图
方式一:平均透明度法
原理:取每个像素及其周围的Alpha值进行平分,边界处因为对边界外也进行了采样,所以叠加后透明度小于原有透明度,将小于一定阈值的alpha设置为描边色;(适用于周围为透明效果的2D贴图)
代码实现如下:
Shader "Custom/AverageAlpha"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {} // 纹理图
_OffsetUV ("OffsetUV", Range(0, 1)) = 0.1 // 采样的间距
_EdgeColor ("EdgeColor", Color) = (1, 0, 0, 1) // 边缘颜色
_AlphaTreshold ("Treshold", Range(0, 1)) = 0.5 // alpha阈值(越大描边越向内延伸)
}
SubShader
{
Tags
{
"Queue"="Transparent"
}
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#