// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
|
// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'
|
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
|
|
Shader "Character/Character, Rim"
|
{
|
Properties
|
{
|
_MainColor("MainColor",Color) = (1,1,1,1)
|
_XRayColor("XRay Color", Color) = (1,1,1,1)
|
_Intensity("Intensity",Float) = 1
|
}
|
|
Subshader
|
{
|
Tags{
|
"Queue" = "Geometry"
|
"IgnoreProjector" = "True"
|
"LightMode" = "ForwardBase"
|
}
|
|
Pass
|
{
|
|
ZWrite Off
|
Cull Back
|
Blend SrcAlpha OneMinusSrcAlpha
|
CGPROGRAM
|
#include "Lighting.cginc"
|
#pragma vertex vert
|
#pragma fragment frag
|
|
fixed4 _MainColor;
|
fixed4 _XRayColor;
|
fixed _Intensity;
|
|
struct v2f
|
{
|
float4 pos : SV_POSITION;
|
float3 normal : normal;
|
float3 viewDir : TEXCOORD0;
|
};
|
|
v2f vert(appdata_base v)
|
{
|
v2f o;
|
o.pos = UnityObjectToClipPos(v.vertex);
|
o.viewDir = ObjSpaceViewDir(v.vertex);
|
o.normal = v.normal;
|
return o;
|
}
|
|
fixed4 frag(v2f i) : SV_Target
|
{
|
half3 normal = normalize(i.normal);
|
half3 viewDir = normalize(i.viewDir);
|
half rim = 1 - dot(normal, viewDir);
|
|
half3 color = _MainColor.rgb + _XRayColor.rgb* pow(rim, _Intensity);
|
half a = 0.8 + pow(rim, 1.5);
|
|
return half4(color, a);
|
}
|
|
ENDCG
|
}
|
|
}
|
FallBack "Diffuse"
|
}
|