1 Shader "Toon/Basic Outline" {
2     Properties {
3         _Color (
"Main Color", Color) = (.5,.5,.5,1)
4         _OutlineColor (
"Outline Color", Color) = (0,0,0,1)
5         _Outline (
"Outline width", Range (.002, 0.03)) = .005
6         _MainTex (
"Base (RGB)", 2D) = "white" { }
7         _ToonShade (
"ToonShader Cubemap(RGB)", CUBE) = "" { }
8     }
9     
10     CGINCLUDE
11     #include
"UnityCG.cginc"
12     
13     
struct appdata {
14         float4 vertex : POSITION;
15         float3 normal : NORMAL;
16     };
17
18     
struct v2f {
19         float4 pos : SV_POSITION;
20         UNITY_FOG_COORDS(
0)
21         fixed4 color : COLOR;
22     };
23     
24     uniform
float _Outline;
25     uniform float4 _OutlineColor;
26     
27     v2f vert(appdata v) {
28         v2f o;
29         o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
30
31         float3 norm = normalize(mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal));
32         float2 offset = TransformViewToProjection(norm.xy);
33
34         o.pos.xy += offset * o.pos.z * _Outline;
35         o.color = _OutlineColor;
36         UNITY_TRANSFER_FOG(o,o.pos);
37         
return o;
38     }
39     ENDCG
40
41     SubShader {
42         Tags {
"RenderType"="Opaque" }
43         UsePass
"Toon/Basic/BASE"
44         Pass {
45             Name
"OUTLINE"
46             Tags {
"LightMode" = "Always" }
47             Cull Front
48             ZWrite On
49             ColorMask RGB
50             Blend SrcAlpha OneMinusSrcAlpha
51
52             CGPROGRAM
53             #pragma vertex vert
54             #pragma fragment frag
55             #pragma multi_compile_fog
56             fixed4 frag(v2f i) : SV_Target
57             {
58                 UNITY_APPLY_FOG(i.fogCoord, i.color);
59                 
return i.color;
60             }
61             ENDCG
62         }
63     }
64     
65     Fallback
"Toon/Basic"
66 }


Gõ tìm kiếm nhanh...