原理:边缘的法线与摄像头和顶点形成的向量夹角越小,那么它就是边缘透明:blend SrcAlpha OneMinusSrcAlphazwrite off
![](https://img-blog.csdn.net/20161115230147208?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Shader "Func/func1"
{
//边缘发光 透明
properties{
_Scale("_Scale",range(1,8)) = 2
}
SubShader
{
tags {"queue" = "transparent"}
Pass
{
blend SrcAlpha OneMinusSrcAlpha
zwrite off
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
float _Scale;
struct v2f
{
float4 pos:POSITION;
float3 normal:TEXCOORD0;
float4 vertex:TEXCOORD1;
};
v2f vert (appdata_base v)
{
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.normal = v.normal;
o.vertex = v.vertex;
return o;
}
fixed4 frag (v2f IN) : COLOR
{
// float3 N = mul(float4(IN.normal,0),_World2Object).xyz;
float3 N = normalize(mul(IN.normal,(float3x3)_World2Object));
float3 V = normalize(WorldSpaceViewDir(IN.vertex));
float bright = 1- saturate(dot(N,V));
return fixed4(1,1,1,1)*pow(bright,_Scale);
}
ENDCG
}
}
}