// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld' // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "Game/Role/Role-Diffuse" { Properties { _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {} _StencilComp("Stencil Comparison", Float) = 8 _Stencil("Stencil ID", Float) = 0 _StencilOp("Stencil Operation", Float) = 0 _StencilWriteMask("Stencil Write Mask", Float) = 255 _StencilReadMask("Stencil Read Mask", Float) = 255 _ColorMask("Color Mask", Float) = 15 _LightDir_0 ("Light0 direction", Vector) = (0.6, -0.8, 0.2, 1.0) _LightColor_0 ("Light0 color", Color) = (0.6196,0.5255,0.46275,1) _LightIntensity_0 ("Light0 intensity", Range(0,8)) = 0.8 _LightDir_1 ("Light1 direction", Vector) = (-0.9, 0.5, 0.1, 1.0) _LightColor_1 ("Light1 color", Color) = (0.2196,0.498,0.61176,1) _LightIntensity_1 ("Light1 intensity", Range(0,8)) = 0.6 _RimColor ("Rim color", Color) = (0.4, 0.4, 0.4, 1) _RimWidth ("Rim width", Range(0,1)) = 0.7 _Direction ("Direction", Range(-1,1)) = 1 _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5 } SubShader { Pass { Tags {"Queue"="AlphaTest" "IgnoreProjector"="True"} AlphaTest Greater [_Cutoff] Lighting Off Fog {Mode Off} Offset 0,-1 Cull Back ZWrite On LOD 200 Stencil { Ref[_Stencil] Comp[_StencilComp] Pass[_StencilOp] ReadMask[_StencilReadMask] WriteMask[_StencilWriteMask] } CGPROGRAM #include "UnityCG.cginc" #pragma exclude_renderers flash xbox360 ps3 #pragma vertex vert #pragma fragment frag sampler2D _MainTex; float4 _LightDir_0; float4 _LightColor_0; float _LightIntensity_0; float4 _LightDir_1; float4 _LightColor_1; float _LightIntensity_1; float4 _RimColor; float _RimWidth; float _Direction; struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; float2 texcoord : TEXCOORD0; }; struct v2f { float4 pos : POSITION; float2 texcoord : TEXCOORD0; float4 posWorld : TEXCOORD1; float3 normalDir : TEXCOORD2; }; float4 _MainTex_ST; v2f vert(appdata v) { v2f o; float4x4 modelMatrix = unity_ObjectToWorld; o.posWorld = mul(modelMatrix, v.vertex); o.pos = UnityObjectToClipPos(v.vertex); o.normalDir = normalize(mul(modelMatrix, float4(v.normal, 0.0)).xyz); o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); float3 viewDir = normalize(ObjSpaceViewDir(v.vertex)); float dotProduct = 1 - dot(v.normal, viewDir); return o; } half4 frag(v2f i) :COLOR { float3 normalDirection = normalize(i.normalDir); float3 viewDirection = normalize(_WorldSpaceCameraPos - i.posWorld.xyz); float3 cDir = float3(_Direction,1,1); float3 lightDirection0 = normalize(-_LightDir_0 * cDir); float3 NDotL0 = max(0.0, dot(normalDirection, lightDirection0)); float4 diffuseReflection0 = float4(_LightIntensity_0 * _LightColor_0.rgb * NDotL0, 1.0); float3 lightDirection1 = normalize(-_LightDir_1 * cDir); float3 NDotL1 = max(0.0, dot(normalDirection, lightDirection1)); float4 diffuseReflection1 = float4(_LightIntensity_1 * _LightColor_1.rgb * NDotL1, 1.0); float dotProduct = 1 - dot(normalDirection, viewDirection); float4 rim = smoothstep(1 - _RimWidth, 1.0, dotProduct) * _RimColor; half4 tex = tex2D(_MainTex, i.texcoord); half4 c = ((UNITY_LIGHTMODEL_AMBIENT + diffuseReflection0 + diffuseReflection1) * 2+ rim) * tex ; c.a = tex.a; return c; } ENDCG } } FallBack "Diffuse" }