您的位置:首页 > 移动开发 > Unity3D

OutlineOnePassVF

2015-11-04 19:14 423 查看
Shader "Custom/OutlineOnePassVF"

{
Properties
{
_MainTex("Base(RGB)",2D) = "white"{}
_OutlineColor("OutlineColor",Color) = (0,1,1,1)
_RimPower("Rim Power",Range(0.1,8.0)) = 0.2
}
SubShader 
{
Tags { "Queue" = "Geometry" "RenderType" = "Opaque" }
LOD 200

Pass 
{
CGPROGRAM
#pragma vertex vert 
#pragma fragment frag 
#include "UnityCG.cginc"

float4 _OutlineColor;
float _RimPower;
sampler2D  _MainTex;
float4 _MainTex_ST;
struct appdata_t
{
float4 vertex:POSITION;
float2 texcoord:TEXCOORD0 ;
float4 color:COLOR;
float4 normal:NORMAL; 
};
struct v2f
{
float4 pos:SV_POSITION;
float2 texcoord:TEXCOORD0 ;
float4 color:COLOR; 
};
v2f vert(appdata_t v)
{
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
float3 viewDir = normalize(ObjSpaceViewDir(v.vertex));
float rim = 1 - saturate(dot(viewDir ,v.normal));
o.color = pow(rim,_RimPower);
return o;
}
float4 frag(v2f i):COLOR
{
fixed4 col = tex2D(_MainTex,i.texcoord);
i.color = floor(i.color*2);
col = lerp(col,i.color*_OutlineColor,i.color);
return col;
}
ENDCG
}
}
FallBack  "Diffuse"

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息