Advertisement
tonynogo

Demo 60 - Fur shader

Jul 6th, 2017
35,986
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Shader "Custom/FurShader"
  2. {
  3.     Properties
  4.     {
  5.         _MainTex ("Texture", 2D) = "white" {}
  6.         _FurTex ("Fur pattern", 2D) = "white" {}
  7.         _Diffuse ("Diffuse value", Range(0, 1)) = 1
  8.  
  9.         _FurLength ("Fur length", Range(0.0, 1)) = 0.5
  10.         _CutOff ("Alpha cutoff", Range(0, 1)) = 0.5
  11.         _Blur ("Blur", Range(0, 1)) = 0.5
  12.         _Thickness ("Thickness", Range(0, 0.5)) = 0
  13.     }
  14.  
  15.     CGINCLUDE
  16.  
  17.         fixed _Diffuse;
  18.  
  19.         inline fixed4 LambertDiffuse(float3 worldNormal)
  20.         {
  21.             float3 lightDir = normalize(_WorldSpaceLightPos0.xyz);
  22.             float NdotL = max(0, dot(worldNormal, lightDir));
  23.             return NdotL * _Diffuse;
  24.         }
  25.  
  26.     ENDCG
  27.  
  28.     SubShader
  29.     {
  30.         Tags { "RenderType"="Transparent" "IgnoreProjector"="True" "Queue"="Transparent"}
  31.         ZWrite Off
  32.         Blend SrcAlpha OneMinusSrcAlpha
  33.         Pass
  34.         {
  35.             CGPROGRAM
  36.             #pragma vertex vert
  37.             #pragma fragment frag
  38.             #pragma target 3.0
  39.  
  40.             #include "UnityCG.cginc"
  41.  
  42.             struct v2f
  43.             {
  44.                 float4 pos : SV_POSITION;
  45.                 float2 uv : TEXCOORD0;
  46.                 fixed4 dif : COLOR;
  47.             };
  48.  
  49.             sampler2D _MainTex;
  50.             float4 _MainTex_ST;
  51.  
  52.             v2f vert (appdata_base v)
  53.             {
  54.                 v2f o;
  55.                 o.pos = UnityObjectToClipPos(v.vertex);
  56.                 o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
  57.                 o.dif = LambertDiffuse(v.normal);
  58.                 return o;
  59.             }
  60.  
  61.             fixed4 frag (v2f i) : SV_Target
  62.             {
  63.                 fixed4 col = tex2D(_MainTex, i.uv);
  64.                 col.rgb *= i.dif;
  65.                 return col;
  66.             }
  67.             ENDCG
  68.         }
  69.  
  70.         Pass
  71.         {
  72.             CGPROGRAM
  73.             #pragma vertex vert
  74.             #pragma fragment frag
  75.             #define FURSTEP 0.05
  76.             #include "FurHelper.cginc"
  77.             ENDCG
  78.         }
  79.  
  80.         Pass
  81.         {
  82.             CGPROGRAM
  83.             #pragma vertex vert
  84.             #pragma fragment frag
  85.             #define FURSTEP 0.10
  86.             #include "FurHelper.cginc"
  87.             ENDCG
  88.         }
  89.  
  90.         Pass
  91.         {
  92.             CGPROGRAM
  93.             #pragma vertex vert
  94.             #pragma fragment frag
  95.             #define FURSTEP 0.15
  96.             #include "FurHelper.cginc"
  97.             ENDCG
  98.         }
  99.  
  100.         Pass
  101.         {
  102.             CGPROGRAM
  103.             #pragma vertex vert
  104.             #pragma fragment frag
  105.             #define FURSTEP 0.20
  106.             #include "FurHelper.cginc"
  107.             ENDCG
  108.         }
  109.  
  110.         Pass
  111.         {
  112.             CGPROGRAM
  113.             #pragma vertex vert
  114.             #pragma fragment frag
  115.             #define FURSTEP 0.25
  116.             #include "FurHelper.cginc"
  117.             ENDCG
  118.         }
  119.  
  120.         Pass
  121.         {
  122.             CGPROGRAM
  123.             #pragma vertex vert
  124.             #pragma fragment frag
  125.             #define FURSTEP 0.30
  126.             #include "FurHelper.cginc"
  127.             ENDCG
  128.         }
  129.  
  130.         Pass
  131.         {
  132.             CGPROGRAM
  133.             #pragma vertex vert
  134.             #pragma fragment frag
  135.             #define FURSTEP 0.35
  136.             #include "FurHelper.cginc"
  137.             ENDCG
  138.         }
  139.  
  140.         Pass
  141.         {
  142.             CGPROGRAM
  143.             #pragma vertex vert
  144.             #pragma fragment frag
  145.             #define FURSTEP 0.40
  146.             #include "FurHelper.cginc"
  147.             ENDCG
  148.         }
  149.  
  150.         Pass
  151.         {
  152.             CGPROGRAM
  153.             #pragma vertex vert
  154.             #pragma fragment frag
  155.             #define FURSTEP 0.45
  156.             #include "FurHelper.cginc"
  157.             ENDCG
  158.         }
  159.  
  160.         Pass
  161.         {
  162.             CGPROGRAM
  163.             #pragma vertex vert
  164.             #pragma fragment frag
  165.             #define FURSTEP 0.50
  166.             #include "FurHelper.cginc"
  167.             ENDCG
  168.         }
  169.  
  170.         Pass
  171.         {
  172.             CGPROGRAM
  173.             #pragma vertex vert
  174.             #pragma fragment frag
  175.             #define FURSTEP 0.55
  176.             #include "FurHelper.cginc"
  177.             ENDCG
  178.         }
  179.  
  180.         Pass
  181.         {
  182.             CGPROGRAM
  183.             #pragma vertex vert
  184.             #pragma fragment frag
  185.             #define FURSTEP 0.60
  186.             #include "FurHelper.cginc"
  187.             ENDCG
  188.         }
  189.  
  190.         Pass
  191.         {
  192.             CGPROGRAM
  193.             #pragma vertex vert
  194.             #pragma fragment frag
  195.             #define FURSTEP 0.65
  196.             #include "FurHelper.cginc"
  197.             ENDCG
  198.         }
  199.  
  200.         Pass
  201.         {
  202.             CGPROGRAM
  203.             #pragma vertex vert
  204.             #pragma fragment frag
  205.             #define FURSTEP 0.70
  206.             #include "FurHelper.cginc"
  207.             ENDCG
  208.         }
  209.  
  210.         Pass
  211.         {
  212.             CGPROGRAM
  213.             #pragma vertex vert
  214.             #pragma fragment frag
  215.             #define FURSTEP 0.75
  216.             #include "FurHelper.cginc"
  217.             ENDCG
  218.         }
  219.  
  220.         Pass
  221.         {
  222.             CGPROGRAM
  223.             #pragma vertex vert
  224.             #pragma fragment frag
  225.             #define FURSTEP 0.80
  226.             #include "FurHelper.cginc"
  227.             ENDCG
  228.         }
  229.  
  230.         Pass
  231.         {
  232.             CGPROGRAM
  233.             #pragma vertex vert
  234.             #pragma fragment frag
  235.             #define FURSTEP 0.85
  236.             #include "FurHelper.cginc"
  237.             ENDCG
  238.         }
  239.  
  240.         Pass
  241.         {
  242.             CGPROGRAM
  243.             #pragma vertex vert
  244.             #pragma fragment frag
  245.             #define FURSTEP 0.90
  246.             #include "FurHelper.cginc"
  247.             ENDCG
  248.         }
  249.  
  250.         Pass
  251.         {
  252.             CGPROGRAM
  253.             #pragma vertex vert
  254.             #pragma fragment frag
  255.             #define FURSTEP 0.95
  256.             #include "FurHelper.cginc"
  257.             ENDCG
  258.         }
  259.     }
  260. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement