1 Shader
"Faye/OutLightting"
2 {
3 Properties
4 {
5 _MainTex(
"Texture (RGB)", 2D) =
"black" {}
6 _Color(
"Color", Color) = (
0,
0,
0,
1)
7 _AtmoColor(
"Atmosphere Color", Color) = (
0.5,
0.5,
1.0,
1)
8 _Size(
"Size", Float) =
0.1
9 _Falloff(
"Falloff", Float) =
5
10 _FalloffPlanet(
"Falloff Planet", Float) =
5
11 _Transparency(
"Transparency", Float) =
15
12 _TransparencyPlanet(
"Transparency Planet", Float) =
1
13 }
14 SubShader
15 {
16 Pass
17 {
18 Name
"PlanetBase"
19 Tags {
"LightMode" =
"Always"}
20 Cull Back
21 CGPROGRAM
22 #pragma vertex vert
23 #pragma fragment frag
24 #pragma fragmentoption ARB_fog_exp2
25 #pragma fragmentoption ARB_precision_hint_fastest
26 #include
"UnityCG.cginc"
27 uniform sampler2D _MainTex;
28 uniform float4 _MainTex_ST;
29 uniform float4 _Color;
30 uniform float4 _AtmoColor;
31 uniform
float _FalloffPlanet;
32 uniform
float _TransparencyPlanet;
33 struct v2f
34 {
35 float4 pos : SV_POSITION;
36 float3 normal : TEXCOORD0;
37 float3 worldvertpos : TEXCOORD1;
38 float2 texcoord : TEXCOORD2;
39 };
40 v2f vert(appdata_base v)
41 {
42 v2f o;
43 o.pos =
mul (UNITY_MATRIX_MVP, v.vertex);
44 o.normal =
v.normal;
45 o.worldvertpos =
mul(_Object2World, v.vertex).xyz;
46 o.texcoord =
TRANSFORM_TEX(v.texcoord, _MainTex);
47 return o;
48 }
49 float4 frag(v2f i) : COLOR
50 {
51 i.normal =
normalize(i.normal);
52 float3 viewdir = normalize(_WorldSpaceCameraPos-
i.worldvertpos);
53 float4 atmo =
_AtmoColor;
54 atmo.a = pow(
1.0-
saturate(dot(viewdir, i.normal)), _FalloffPlanet);
55 atmo.a *= _TransparencyPlanet*
_Color;
56 float4 color = tex2D(_MainTex, i.texcoord)*
_Color;
57 color.rgb =
lerp(color.rgb, atmo.rgb, atmo.a);
58 return color*dot(normalize(i.worldvertpos-
_WorldSpaceLightPos0), i.normal);
59 }
60 ENDCG
61 }
62 Pass
63 {
64 Name
"AtmosphereBase"
65 Tags {
"LightMode" =
"Always"}
66 Cull Front
67 Blend SrcAlpha One
68 CGPROGRAM
69 #pragma vertex vert
70 #pragma fragment frag
71 #pragma fragmentoption ARB_fog_exp2
72 #pragma fragmentoption ARB_precision_hint_fastest
73 #include
"UnityCG.cginc"
74 uniform float4 _Color;
75 uniform float4 _AtmoColor;
76 uniform
float _Size;
77 uniform
float _Falloff;
78 uniform
float _Transparency;
79 struct v2f
80 {
81 float4 pos : SV_POSITION;
82 float3 normal : TEXCOORD0;
83 float3 worldvertpos : TEXCOORD1;
84 };
85 v2f vert(appdata_base v)
86 {
87 v2f o;
88 v.vertex.xyz += v.normal*
_Size;
89 o.pos =
mul (UNITY_MATRIX_MVP, v.vertex);
90 o.normal =
v.normal;
91 o.worldvertpos =
mul(_Object2World, v.vertex);
92 return o;
93 }
94 float4 frag(v2f i) : COLOR
95 {
96 i.normal =
normalize(i.normal);
97 float3 viewdir = normalize(i.worldvertpos-
_WorldSpaceCameraPos);
98 float4 color =
_AtmoColor;
99 color.a =
pow(saturate(dot(viewdir, i.normal)), _Falloff);
100 color.a *= _Transparency*_Color*dot(normalize(i.worldvertpos-
_WorldSpaceLightPos0), i.normal);
101 return color;
102 }
103 ENDCG
104 }
105 }
106 FallBack
"Diffuse"
107 }
转载于:https://www.cnblogs.com/wugang/p/3878091.html
相关资源:unity 2DSprite 边缘酷炫发光效果.zip