Advertisement
tonynogo

Demo 60 - FurHelper.cginc

Jul 6th, 2017
34,211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #pragma target 3.0
  2. #include "UnityCG.cginc"
  3.  
  4. struct v2f {
  5.     float4 pos : SV_POSITION;
  6.     half2 uv : TEXCOORD0;
  7.     half2 uv1 : TEXCOORD1;
  8.     fixed4 diff : COLOR;
  9. };
  10.  
  11. float _FurLength;
  12. sampler2D _MainTex;
  13. float4 _MainTex_ST;
  14. sampler2D _FurTex;
  15. float4 _FurTex_ST;
  16. float _Blur;
  17.  
  18. v2f vert(appdata_base v) {
  19.     v2f o;
  20.     v.vertex.xyz += v.normal * _FurLength * FURSTEP;
  21.     o.pos = UnityObjectToClipPos(v.vertex);
  22.     o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
  23.     o.uv1 = TRANSFORM_TEX(v.texcoord, _FurTex);
  24.     float3 worldNormal = normalize(mul(v.normal, (float3x3) unity_WorldToObject));
  25.     o.diff = LambertDiffuse(worldNormal);
  26.     o.diff.a = 1 - (FURSTEP * FURSTEP);
  27.     float4 worldPos = mul(unity_WorldToObject, v.vertex);
  28.     o.diff.a += dot(normalize(_WorldSpaceCameraPos.xyz - worldPos), worldNormal) - _Blur;
  29.     return o;
  30. }
  31.  
  32. float _CutOff;
  33. float _Thickness;
  34.  
  35. fixed4 frag(v2f i) : SV_Target {
  36.     fixed4 col = tex2D(_MainTex, i.uv);
  37.     fixed alpha = tex2D(_FurTex, i.uv1).r;
  38.     col *= i.diff;
  39.     col.a *= step(lerp(_CutOff, _CutOff + _Thickness, FURSTEP), alpha);
  40.     return col;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement