Advertisement
DexterAndre

Snow Texture Shader

Mar 14th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Shader created with Shader Forge v1.38
  2. // Shader Forge (c) Neat Corporation / Joachim Holmer - http://www.acegikmo.com/shaderforge/
  3. // Note: Manually altering this data may prevent you from opening it in Shader Forge
  4. /*SF_DATA;ver:1.38;sub:START;pass:START;ps:flbk:,iptp:0,cusa:False,bamd:0,cgin:,lico:1,lgpr:1,limd:1,spmd:1,trmd:0,grmd:0,uamb:True,mssp:True,bkdf:False,hqlp:False,rprd:False,enco:False,rmgx:True,imps:True,rpth:0,vtps:0,hqsc:True,nrmq:1,nrsp:0,vomd:0,spxs:False,tesm:0,olmd:1,culm:0,bsrc:0,bdst:1,dpts:2,wrdp:True,dith:0,atcv:False,rfrpo:True,rfrpn:Refraction,coma:15,ufog:True,aust:True,igpj:False,qofs:0,qpre:1,rntp:1,fgom:False,fgoc:False,fgod:False,fgor:False,fgmd:0,fgcr:0.5,fgcg:0.5,fgcb:0.5,fgca:1,fgde:0.01,fgrn:0,fgrf:300,stcl:False,atwp:False,stva:128,stmr:255,stmw:255,stcp:6,stps:0,stfa:0,stfz:0,ofsf:0,ofsu:0,f2p0:False,fnsp:False,fnfb:False,fsmp:False;n:type:ShaderForge.SFN_Final,id:3126,x:32719,y:32712,varname:node_3126,prsc:2|diff-8115-OUT,voffset-9589-OUT;n:type:ShaderForge.SFN_NormalVector,id:3835,x:31899,y:33431,prsc:2,pt:False;n:type:ShaderForge.SFN_Multiply,id:3509,x:32106,y:33112,varname:node_3509,prsc:2|A-1120-OUT,B-3835-OUT;n:type:ShaderForge.SFN_ValueProperty,id:2269,x:32189,y:32953,ptovrint:False,ptlb:DisplacementMagnitude,ptin:_DisplacementMagnitude,varname:node_2269,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,v1:0.05;n:type:ShaderForge.SFN_Multiply,id:9589,x:32466,y:32983,varname:node_9589,prsc:2|A-3509-OUT,B-2269-OUT;n:type:ShaderForge.SFN_Vector1,id:4835,x:30586,y:33158,varname:node_4835,prsc:2,v1:0.9;n:type:ShaderForge.SFN_Vector1,id:2131,x:30586,y:33097,varname:node_2131,prsc:2,v1:0.7;n:type:ShaderForge.SFN_Tex2d,id:1532,x:30697,y:32435,ptovrint:False,ptlb:Albedo,ptin:_Albedo,varname:node_1532,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,tex:28c7aad1372ff114b90d330f8a2dd938,ntxv:0,isnm:False|UVIN-4969-UVOUT;n:type:ShaderForge.SFN_UVTile,id:4969,x:30426,y:32365,varname:node_4969,prsc:2|UVIN-9931-UVOUT,WDT-1447-OUT,HGT-4017-OUT,TILE-8921-OUT;n:type:ShaderForge.SFN_TexCoord,id:9931,x:30203,y:32274,varname:node_9931,prsc:2,uv:0,uaff:False;n:type:ShaderForge.SFN_Vector1,id:1447,x:30203,y:32472,varname:node_1447,prsc:2,v1:0.25;n:type:ShaderForge.SFN_Vector1,id:4017,x:30203,y:32541,varname:node_4017,prsc:2,v1:0.25;n:type:ShaderForge.SFN_Vector1,id:8921,x:30203,y:32618,varname:node_8921,prsc:2,v1:0;n:type:ShaderForge.SFN_RemapRangeAdvanced,id:1579,x:31138,y:32760,varname:node_1579,prsc:2|IN-1532-RGB,IMIN-5311-OUT,IMAX-8500-OUT,OMIN-2131-OUT,OMAX-4835-OUT;n:type:ShaderForge.SFN_Vector1,id:5311,x:30586,y:32982,varname:node_5311,prsc:2,v1:0;n:type:ShaderForge.SFN_Vector1,id:8500,x:30586,y:33041,varname:node_8500,prsc:2,v1:1;n:type:ShaderForge.SFN_Tex2d,id:653,x:30630,y:33315,ptovrint:False,ptlb:Voronoi,ptin:_Voronoi,varname:node_653,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,tex:dccc66c1c88bd3b4f9a2a293b3600ba2,ntxv:0,isnm:False|UVIN-4489-UVOUT;n:type:ShaderForge.SFN_RemapRangeAdvanced,id:7142,x:31376,y:33379,varname:node_7142,prsc:2|IN-653-RGB,IMIN-5311-OUT,IMAX-8500-OUT,OMIN-4998-OUT,OMAX-8569-OUT;n:type:ShaderForge.SFN_UVTile,id:4489,x:30418,y:33355,varname:node_4489,prsc:2|UVIN-7549-UVOUT,WDT-5331-OUT,HGT-8316-OUT,TILE-4061-OUT;n:type:ShaderForge.SFN_TexCoord,id:7549,x:30195,y:33264,varname:node_7549,prsc:2,uv:0,uaff:False;n:type:ShaderForge.SFN_Vector1,id:5331,x:30195,y:33463,varname:node_5331,prsc:2,v1:1;n:type:ShaderForge.SFN_Vector1,id:8316,x:30195,y:33532,varname:node_8316,prsc:2,v1:1;n:type:ShaderForge.SFN_Vector1,id:4061,x:30195,y:33608,varname:node_4061,prsc:2,v1:0;n:type:ShaderForge.SFN_Vector1,id:4998,x:30768,y:33531,varname:node_4998,prsc:2,v1:0;n:type:ShaderForge.SFN_Vector1,id:8569,x:30768,y:33601,varname:node_8569,prsc:2,v1:0.9;n:type:ShaderForge.SFN_RemapRangeAdvanced,id:1687,x:31341,y:33142,varname:node_1687,prsc:2|IN-1532-RGB,IMIN-5311-OUT,IMAX-8500-OUT,OMIN-2282-OUT,OMAX-7560-OUT;n:type:ShaderForge.SFN_Vector1,id:2282,x:30843,y:33151,varname:node_2282,prsc:2,v1:0.4;n:type:ShaderForge.SFN_Vector1,id:7560,x:30843,y:33208,varname:node_7560,prsc:2,v1:1;n:type:ShaderForge.SFN_Blend,id:856,x:31587,y:33124,varname:node_856,prsc:2,blmd:0,clmp:True|SRC-1687-OUT,DST-7142-OUT;n:type:ShaderForge.SFN_Step,id:5041,x:31159,y:32911,varname:node_5041,prsc:2|A-7246-RGB,B-5254-OUT;n:type:ShaderForge.SFN_Vector1,id:5254,x:30980,y:32960,varname:node_5254,prsc:2,v1:0.7;n:type:ShaderForge.SFN_OneMinus,id:7310,x:31320,y:32911,varname:node_7310,prsc:2|IN-5041-OUT;n:type:ShaderForge.SFN_Add,id:8115,x:31769,y:32800,varname:node_8115,prsc:2|A-1579-OUT,B-9107-OUT;n:type:ShaderForge.SFN_Tex2d,id:7246,x:30687,y:32787,ptovrint:False,ptlb:Albedo_copy,ptin:_Albedo_copy,varname:_Albedo_copy,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,tex:e958c6041cfe445e987c73751e8d4082,ntxv:0,isnm:False|UVIN-2369-UVOUT;n:type:ShaderForge.SFN_UVTile,id:2369,x:30431,y:32804,varname:node_2369,prsc:2|UVIN-7747-UVOUT,WDT-3321-OUT,HGT-7013-OUT,TILE-6709-OUT;n:type:ShaderForge.SFN_TexCoord,id:7747,x:30208,y:32713,varname:node_7747,prsc:2,uv:0,uaff:False;n:type:ShaderForge.SFN_Vector1,id:3321,x:30208,y:32911,varname:node_3321,prsc:2,v1:1;n:type:ShaderForge.SFN_Vector1,id:7013,x:30208,y:32980,varname:node_7013,prsc:2,v1:1;n:type:ShaderForge.SFN_Vector1,id:6709,x:30208,y:33057,varname:node_6709,prsc:2,v1:0;n:type:ShaderForge.SFN_Clamp,id:9107,x:31599,y:32863,varname:node_9107,prsc:2|IN-7310-OUT,MIN-2850-OUT,MAX-5082-OUT;n:type:ShaderForge.SFN_Vector1,id:2850,x:31434,y:32993,varname:node_2850,prsc:2,v1:0;n:type:ShaderForge.SFN_Vector1,id:5082,x:31434,y:33054,varname:node_5082,prsc:2,v1:0.5;n:type:ShaderForge.SFN_Vector1,id:8000,x:30584,y:34210,varname:node_8000,prsc:2,v1:1;n:type:ShaderForge.SFN_Vector1,id:2134,x:30584,y:34149,varname:node_2134,prsc:2,v1:0;n:type:ShaderForge.SFN_Vector1,id:6622,x:30584,y:34034,varname:node_6622,prsc:2,v1:0;n:type:ShaderForge.SFN_Vector1,id:6884,x:30584,y:34093,varname:node_6884,prsc:2,v1:1;n:type:ShaderForge.SFN_Tex2d,id:8476,x:30685,y:33839,ptovrint:False,ptlb:Albedo_copy_copy,ptin:_Albedo_copy_copy,varname:_Albedo_copy_copy,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,tex:e958c6041cfe445e987c73751e8d4082,ntxv:0,isnm:False|UVIN-9147-UVOUT;n:type:ShaderForge.SFN_UVTile,id:9147,x:30429,y:33856,varname:node_9147,prsc:2|UVIN-3099-UVOUT,WDT-1927-OUT,HGT-2832-OUT,TILE-3542-OUT;n:type:ShaderForge.SFN_TexCoord,id:3099,x:30206,y:33765,varname:node_3099,prsc:2,uv:0,uaff:False;n:type:ShaderForge.SFN_Vector1,id:1927,x:30206,y:33958,varname:node_1927,prsc:2,v1:0.25;n:type:ShaderForge.SFN_Vector1,id:2832,x:30206,y:34032,varname:node_2832,prsc:2,v1:0.25;n:type:ShaderForge.SFN_Vector1,id:3542,x:30206,y:34109,varname:node_3542,prsc:2,v1:0;n:type:ShaderForge.SFN_RemapRangeAdvanced,id:3122,x:31016,y:34012,varname:node_3122,prsc:2|IN-8476-RGB,IMIN-6622-OUT,IMAX-6884-OUT,OMIN-2134-OUT,OMAX-8000-OUT;n:type:ShaderForge.SFN_Add,id:1120,x:31793,y:33276,varname:node_1120,prsc:2|A-856-OUT,B-4954-OUT;n:type:ShaderForge.SFN_Vector1,id:4814,x:30964,y:33725,varname:node_4814,prsc:2,v1:4;n:type:ShaderForge.SFN_Posterize,id:7903,x:31236,y:33738,varname:node_7903,prsc:2|IN-3122-OUT,STPS-4814-OUT;n:type:ShaderForge.SFN_OneMinus,id:4954,x:31471,y:33612,varname:node_4954,prsc:2|IN-7903-OUT;proporder:2269-1532-653-7246-8476;pass:END;sub:END;*/
  5.  
  6. Shader "Winter/SnowSurface" {
  7.     Properties {
  8.         _DisplacementMagnitude ("DisplacementMagnitude", Float ) = 0.05
  9.         _Albedo ("Albedo", 2D) = "white" {}
  10.         _Voronoi ("Voronoi", 2D) = "white" {}
  11.         _Albedo_copy ("Albedo_copy", 2D) = "white" {}
  12.         _Albedo_copy_copy ("Albedo_copy_copy", 2D) = "white" {}
  13.     }
  14.     SubShader {
  15.         Tags {
  16.             "RenderType"="Opaque"
  17.         }
  18.         LOD 200
  19.         Pass {
  20.             Name "FORWARD"
  21.             Tags {
  22.                 "LightMode"="ForwardBase"
  23.             }
  24.            
  25.            
  26.             CGPROGRAM
  27.             #pragma vertex vert
  28.             #pragma fragment frag
  29.             #define UNITY_PASS_FORWARDBASE
  30.             #include "UnityCG.cginc"
  31.             #include "AutoLight.cginc"
  32.             #pragma multi_compile_fwdbase_fullshadows
  33.             #pragma multi_compile_fog
  34.             #pragma only_renderers d3d9 d3d11 glcore gles
  35.             #pragma target 3.0
  36.             uniform float4 _LightColor0;
  37.             uniform float _DisplacementMagnitude;
  38.             uniform sampler2D _Albedo; uniform float4 _Albedo_ST;
  39.             uniform sampler2D _Voronoi; uniform float4 _Voronoi_ST;
  40.             uniform sampler2D _Albedo_copy; uniform float4 _Albedo_copy_ST;
  41.             uniform sampler2D _Albedo_copy_copy; uniform float4 _Albedo_copy_copy_ST;
  42.             struct VertexInput {
  43.                 float4 vertex : POSITION;
  44.                 float3 normal : NORMAL;
  45.                 float2 texcoord0 : TEXCOORD0;
  46.             };
  47.             struct VertexOutput {
  48.                 float4 pos : SV_POSITION;
  49.                 float2 uv0 : TEXCOORD0;
  50.                 float4 posWorld : TEXCOORD1;
  51.                 float3 normalDir : TEXCOORD2;
  52.                 LIGHTING_COORDS(3,4)
  53.                 UNITY_FOG_COORDS(5)
  54.             };
  55.             VertexOutput vert (VertexInput v) {
  56.                 VertexOutput o = (VertexOutput)0;
  57.                 o.uv0 = v.texcoord0;
  58.                 o.normalDir = UnityObjectToWorldNormal(v.normal);
  59.                 float node_1447 = 0.25;
  60.                 float node_8921 = 0.0;
  61.                 float2 node_4969_tc_rcp = float2(1.0,1.0)/float2( node_1447, 0.25 );
  62.                 float node_4969_ty = floor(node_8921 * node_4969_tc_rcp.x);
  63.                 float node_4969_tx = node_8921 - node_1447 * node_4969_ty;
  64.                 float2 node_4969 = (o.uv0 + float2(node_4969_tx, node_4969_ty)) * node_4969_tc_rcp;
  65.                 float4 _Albedo_var = tex2Dlod(_Albedo,float4(TRANSFORM_TEX(node_4969, _Albedo),0.0,0));
  66.                 float node_5311 = 0.0;
  67.                 float node_8500 = 1.0;
  68.                 float node_2282 = 0.4;
  69.                 float node_5331 = 1.0;
  70.                 float node_4061 = 0.0;
  71.                 float2 node_4489_tc_rcp = float2(1.0,1.0)/float2( node_5331, 1.0 );
  72.                 float node_4489_ty = floor(node_4061 * node_4489_tc_rcp.x);
  73.                 float node_4489_tx = node_4061 - node_5331 * node_4489_ty;
  74.                 float2 node_4489 = (o.uv0 + float2(node_4489_tx, node_4489_ty)) * node_4489_tc_rcp;
  75.                 float4 _Voronoi_var = tex2Dlod(_Voronoi,float4(TRANSFORM_TEX(node_4489, _Voronoi),0.0,0));
  76.                 float node_4998 = 0.0;
  77.                 float node_1927 = 0.25;
  78.                 float node_3542 = 0.0;
  79.                 float2 node_9147_tc_rcp = float2(1.0,1.0)/float2( node_1927, 0.25 );
  80.                 float node_9147_ty = floor(node_3542 * node_9147_tc_rcp.x);
  81.                 float node_9147_tx = node_3542 - node_1927 * node_9147_ty;
  82.                 float2 node_9147 = (o.uv0 + float2(node_9147_tx, node_9147_ty)) * node_9147_tc_rcp;
  83.                 float4 _Albedo_copy_copy_var = tex2Dlod(_Albedo_copy_copy,float4(TRANSFORM_TEX(node_9147, _Albedo_copy_copy),0.0,0));
  84.                 float node_6622 = 0.0;
  85.                 float node_2134 = 0.0;
  86.                 float node_4814 = 4.0;
  87.                 v.vertex.xyz += (((saturate(min((node_2282 + ( (_Albedo_var.rgb - node_5311) * (1.0 - node_2282) ) / (node_8500 - node_5311)),(node_4998 + ( (_Voronoi_var.rgb - node_5311) * (0.9 - node_4998) ) / (node_8500 - node_5311))))+(1.0 - floor((node_2134 + ( (_Albedo_copy_copy_var.rgb - node_6622) * (1.0 - node_2134) ) / (1.0 - node_6622)) * node_4814) / (node_4814 - 1)))*v.normal)*_DisplacementMagnitude);
  88.                 o.posWorld = mul(unity_ObjectToWorld, v.vertex);
  89.                 float3 lightColor = _LightColor0.rgb;
  90.                 o.pos = UnityObjectToClipPos( v.vertex );
  91.                 UNITY_TRANSFER_FOG(o,o.pos);
  92.                 TRANSFER_VERTEX_TO_FRAGMENT(o)
  93.                 return o;
  94.             }
  95.             float4 frag(VertexOutput i) : COLOR {
  96.                 i.normalDir = normalize(i.normalDir);
  97.                 float3 normalDirection = i.normalDir;
  98.                 float3 lightDirection = normalize(_WorldSpaceLightPos0.xyz);
  99.                 float3 lightColor = _LightColor0.rgb;
  100. ////// Lighting:
  101.                 float attenuation = LIGHT_ATTENUATION(i);
  102.                 float3 attenColor = attenuation * _LightColor0.xyz;
  103. /////// Diffuse:
  104.                 float NdotL = max(0.0,dot( normalDirection, lightDirection ));
  105.                 float3 directDiffuse = max( 0.0, NdotL) * attenColor;
  106.                 float3 indirectDiffuse = float3(0,0,0);
  107.                 indirectDiffuse += UNITY_LIGHTMODEL_AMBIENT.rgb; // Ambient Light
  108.                 float node_1447 = 0.25;
  109.                 float node_8921 = 0.0;
  110.                 float2 node_4969_tc_rcp = float2(1.0,1.0)/float2( node_1447, 0.25 );
  111.                 float node_4969_ty = floor(node_8921 * node_4969_tc_rcp.x);
  112.                 float node_4969_tx = node_8921 - node_1447 * node_4969_ty;
  113.                 float2 node_4969 = (i.uv0 + float2(node_4969_tx, node_4969_ty)) * node_4969_tc_rcp;
  114.                 float4 _Albedo_var = tex2D(_Albedo,TRANSFORM_TEX(node_4969, _Albedo));
  115.                 float node_5311 = 0.0;
  116.                 float node_8500 = 1.0;
  117.                 float node_2131 = 0.7;
  118.                 float node_3321 = 1.0;
  119.                 float node_6709 = 0.0;
  120.                 float2 node_2369_tc_rcp = float2(1.0,1.0)/float2( node_3321, 1.0 );
  121.                 float node_2369_ty = floor(node_6709 * node_2369_tc_rcp.x);
  122.                 float node_2369_tx = node_6709 - node_3321 * node_2369_ty;
  123.                 float2 node_2369 = (i.uv0 + float2(node_2369_tx, node_2369_ty)) * node_2369_tc_rcp;
  124.                 float4 _Albedo_copy_var = tex2D(_Albedo_copy,TRANSFORM_TEX(node_2369, _Albedo_copy));
  125.                 float3 diffuseColor = ((node_2131 + ( (_Albedo_var.rgb - node_5311) * (0.9 - node_2131) ) / (node_8500 - node_5311))+clamp((1.0 - step(_Albedo_copy_var.rgb,0.7)),0.0,0.5));
  126.                 float3 diffuse = (directDiffuse + indirectDiffuse) * diffuseColor;
  127. /// Final Color:
  128.                 float3 finalColor = diffuse;
  129.                 fixed4 finalRGBA = fixed4(finalColor,1);
  130.                 UNITY_APPLY_FOG(i.fogCoord, finalRGBA);
  131.                 return finalRGBA;
  132.             }
  133.             ENDCG
  134.         }
  135.         Pass {
  136.             Name "FORWARD_DELTA"
  137.             Tags {
  138.                 "LightMode"="ForwardAdd"
  139.             }
  140.             Blend One One
  141.            
  142.            
  143.             CGPROGRAM
  144.             #pragma vertex vert
  145.             #pragma fragment frag
  146.             #define UNITY_PASS_FORWARDADD
  147.             #include "UnityCG.cginc"
  148.             #include "AutoLight.cginc"
  149.             #pragma multi_compile_fwdadd_fullshadows
  150.             #pragma multi_compile_fog
  151.             #pragma only_renderers d3d9 d3d11 glcore gles
  152.             #pragma target 3.0
  153.             uniform float4 _LightColor0;
  154.             uniform float _DisplacementMagnitude;
  155.             uniform sampler2D _Albedo; uniform float4 _Albedo_ST;
  156.             uniform sampler2D _Voronoi; uniform float4 _Voronoi_ST;
  157.             uniform sampler2D _Albedo_copy; uniform float4 _Albedo_copy_ST;
  158.             uniform sampler2D _Albedo_copy_copy; uniform float4 _Albedo_copy_copy_ST;
  159.             struct VertexInput {
  160.                 float4 vertex : POSITION;
  161.                 float3 normal : NORMAL;
  162.                 float2 texcoord0 : TEXCOORD0;
  163.             };
  164.             struct VertexOutput {
  165.                 float4 pos : SV_POSITION;
  166.                 float2 uv0 : TEXCOORD0;
  167.                 float4 posWorld : TEXCOORD1;
  168.                 float3 normalDir : TEXCOORD2;
  169.                 LIGHTING_COORDS(3,4)
  170.                 UNITY_FOG_COORDS(5)
  171.             };
  172.             VertexOutput vert (VertexInput v) {
  173.                 VertexOutput o = (VertexOutput)0;
  174.                 o.uv0 = v.texcoord0;
  175.                 o.normalDir = UnityObjectToWorldNormal(v.normal);
  176.                 float node_1447 = 0.25;
  177.                 float node_8921 = 0.0;
  178.                 float2 node_4969_tc_rcp = float2(1.0,1.0)/float2( node_1447, 0.25 );
  179.                 float node_4969_ty = floor(node_8921 * node_4969_tc_rcp.x);
  180.                 float node_4969_tx = node_8921 - node_1447 * node_4969_ty;
  181.                 float2 node_4969 = (o.uv0 + float2(node_4969_tx, node_4969_ty)) * node_4969_tc_rcp;
  182.                 float4 _Albedo_var = tex2Dlod(_Albedo,float4(TRANSFORM_TEX(node_4969, _Albedo),0.0,0));
  183.                 float node_5311 = 0.0;
  184.                 float node_8500 = 1.0;
  185.                 float node_2282 = 0.4;
  186.                 float node_5331 = 1.0;
  187.                 float node_4061 = 0.0;
  188.                 float2 node_4489_tc_rcp = float2(1.0,1.0)/float2( node_5331, 1.0 );
  189.                 float node_4489_ty = floor(node_4061 * node_4489_tc_rcp.x);
  190.                 float node_4489_tx = node_4061 - node_5331 * node_4489_ty;
  191.                 float2 node_4489 = (o.uv0 + float2(node_4489_tx, node_4489_ty)) * node_4489_tc_rcp;
  192.                 float4 _Voronoi_var = tex2Dlod(_Voronoi,float4(TRANSFORM_TEX(node_4489, _Voronoi),0.0,0));
  193.                 float node_4998 = 0.0;
  194.                 float node_1927 = 0.25;
  195.                 float node_3542 = 0.0;
  196.                 float2 node_9147_tc_rcp = float2(1.0,1.0)/float2( node_1927, 0.25 );
  197.                 float node_9147_ty = floor(node_3542 * node_9147_tc_rcp.x);
  198.                 float node_9147_tx = node_3542 - node_1927 * node_9147_ty;
  199.                 float2 node_9147 = (o.uv0 + float2(node_9147_tx, node_9147_ty)) * node_9147_tc_rcp;
  200.                 float4 _Albedo_copy_copy_var = tex2Dlod(_Albedo_copy_copy,float4(TRANSFORM_TEX(node_9147, _Albedo_copy_copy),0.0,0));
  201.                 float node_6622 = 0.0;
  202.                 float node_2134 = 0.0;
  203.                 float node_4814 = 4.0;
  204.                 v.vertex.xyz += (((saturate(min((node_2282 + ( (_Albedo_var.rgb - node_5311) * (1.0 - node_2282) ) / (node_8500 - node_5311)),(node_4998 + ( (_Voronoi_var.rgb - node_5311) * (0.9 - node_4998) ) / (node_8500 - node_5311))))+(1.0 - floor((node_2134 + ( (_Albedo_copy_copy_var.rgb - node_6622) * (1.0 - node_2134) ) / (1.0 - node_6622)) * node_4814) / (node_4814 - 1)))*v.normal)*_DisplacementMagnitude);
  205.                 o.posWorld = mul(unity_ObjectToWorld, v.vertex);
  206.                 float3 lightColor = _LightColor0.rgb;
  207.                 o.pos = UnityObjectToClipPos( v.vertex );
  208.                 UNITY_TRANSFER_FOG(o,o.pos);
  209.                 TRANSFER_VERTEX_TO_FRAGMENT(o)
  210.                 return o;
  211.             }
  212.             float4 frag(VertexOutput i) : COLOR {
  213.                 i.normalDir = normalize(i.normalDir);
  214.                 float3 normalDirection = i.normalDir;
  215.                 float3 lightDirection = normalize(lerp(_WorldSpaceLightPos0.xyz, _WorldSpaceLightPos0.xyz - i.posWorld.xyz,_WorldSpaceLightPos0.w));
  216.                 float3 lightColor = _LightColor0.rgb;
  217. ////// Lighting:
  218.                 float attenuation = LIGHT_ATTENUATION(i);
  219.                 float3 attenColor = attenuation * _LightColor0.xyz;
  220. /////// Diffuse:
  221.                 float NdotL = max(0.0,dot( normalDirection, lightDirection ));
  222.                 float3 directDiffuse = max( 0.0, NdotL) * attenColor;
  223.                 float node_1447 = 0.25;
  224.                 float node_8921 = 0.0;
  225.                 float2 node_4969_tc_rcp = float2(1.0,1.0)/float2( node_1447, 0.25 );
  226.                 float node_4969_ty = floor(node_8921 * node_4969_tc_rcp.x);
  227.                 float node_4969_tx = node_8921 - node_1447 * node_4969_ty;
  228.                 float2 node_4969 = (i.uv0 + float2(node_4969_tx, node_4969_ty)) * node_4969_tc_rcp;
  229.                 float4 _Albedo_var = tex2D(_Albedo,TRANSFORM_TEX(node_4969, _Albedo));
  230.                 float node_5311 = 0.0;
  231.                 float node_8500 = 1.0;
  232.                 float node_2131 = 0.7;
  233.                 float node_3321 = 1.0;
  234.                 float node_6709 = 0.0;
  235.                 float2 node_2369_tc_rcp = float2(1.0,1.0)/float2( node_3321, 1.0 );
  236.                 float node_2369_ty = floor(node_6709 * node_2369_tc_rcp.x);
  237.                 float node_2369_tx = node_6709 - node_3321 * node_2369_ty;
  238.                 float2 node_2369 = (i.uv0 + float2(node_2369_tx, node_2369_ty)) * node_2369_tc_rcp;
  239.                 float4 _Albedo_copy_var = tex2D(_Albedo_copy,TRANSFORM_TEX(node_2369, _Albedo_copy));
  240.                 float3 diffuseColor = ((node_2131 + ( (_Albedo_var.rgb - node_5311) * (0.9 - node_2131) ) / (node_8500 - node_5311))+clamp((1.0 - step(_Albedo_copy_var.rgb,0.7)),0.0,0.5));
  241.                 float3 diffuse = directDiffuse * diffuseColor;
  242. /// Final Color:
  243.                 float3 finalColor = diffuse;
  244.                 fixed4 finalRGBA = fixed4(finalColor * 1,0);
  245.                 UNITY_APPLY_FOG(i.fogCoord, finalRGBA);
  246.                 return finalRGBA;
  247.             }
  248.             ENDCG
  249.         }
  250.         Pass {
  251.             Name "ShadowCaster"
  252.             Tags {
  253.                 "LightMode"="ShadowCaster"
  254.             }
  255.             Offset 1, 1
  256.             Cull Back
  257.            
  258.             CGPROGRAM
  259.             #pragma vertex vert
  260.             #pragma fragment frag
  261.             #define UNITY_PASS_SHADOWCASTER
  262.             #include "UnityCG.cginc"
  263.             #include "Lighting.cginc"
  264.             #pragma fragmentoption ARB_precision_hint_fastest
  265.             #pragma multi_compile_shadowcaster
  266.             #pragma multi_compile_fog
  267.             #pragma only_renderers d3d9 d3d11 glcore gles
  268.             #pragma target 3.0
  269.             uniform float _DisplacementMagnitude;
  270.             uniform sampler2D _Albedo; uniform float4 _Albedo_ST;
  271.             uniform sampler2D _Voronoi; uniform float4 _Voronoi_ST;
  272.             uniform sampler2D _Albedo_copy_copy; uniform float4 _Albedo_copy_copy_ST;
  273.             struct VertexInput {
  274.                 float4 vertex : POSITION;
  275.                 float3 normal : NORMAL;
  276.                 float2 texcoord0 : TEXCOORD0;
  277.             };
  278.             struct VertexOutput {
  279.                 V2F_SHADOW_CASTER;
  280.                 float2 uv0 : TEXCOORD1;
  281.                 float3 normalDir : TEXCOORD2;
  282.             };
  283.             VertexOutput vert (VertexInput v) {
  284.                 VertexOutput o = (VertexOutput)0;
  285.                 o.uv0 = v.texcoord0;
  286.                 o.normalDir = UnityObjectToWorldNormal(v.normal);
  287.                 float node_1447 = 0.25;
  288.                 float node_8921 = 0.0;
  289.                 float2 node_4969_tc_rcp = float2(1.0,1.0)/float2( node_1447, 0.25 );
  290.                 float node_4969_ty = floor(node_8921 * node_4969_tc_rcp.x);
  291.                 float node_4969_tx = node_8921 - node_1447 * node_4969_ty;
  292.                 float2 node_4969 = (o.uv0 + float2(node_4969_tx, node_4969_ty)) * node_4969_tc_rcp;
  293.                 float4 _Albedo_var = tex2Dlod(_Albedo,float4(TRANSFORM_TEX(node_4969, _Albedo),0.0,0));
  294.                 float node_5311 = 0.0;
  295.                 float node_8500 = 1.0;
  296.                 float node_2282 = 0.4;
  297.                 float node_5331 = 1.0;
  298.                 float node_4061 = 0.0;
  299.                 float2 node_4489_tc_rcp = float2(1.0,1.0)/float2( node_5331, 1.0 );
  300.                 float node_4489_ty = floor(node_4061 * node_4489_tc_rcp.x);
  301.                 float node_4489_tx = node_4061 - node_5331 * node_4489_ty;
  302.                 float2 node_4489 = (o.uv0 + float2(node_4489_tx, node_4489_ty)) * node_4489_tc_rcp;
  303.                 float4 _Voronoi_var = tex2Dlod(_Voronoi,float4(TRANSFORM_TEX(node_4489, _Voronoi),0.0,0));
  304.                 float node_4998 = 0.0;
  305.                 float node_1927 = 0.25;
  306.                 float node_3542 = 0.0;
  307.                 float2 node_9147_tc_rcp = float2(1.0,1.0)/float2( node_1927, 0.25 );
  308.                 float node_9147_ty = floor(node_3542 * node_9147_tc_rcp.x);
  309.                 float node_9147_tx = node_3542 - node_1927 * node_9147_ty;
  310.                 float2 node_9147 = (o.uv0 + float2(node_9147_tx, node_9147_ty)) * node_9147_tc_rcp;
  311.                 float4 _Albedo_copy_copy_var = tex2Dlod(_Albedo_copy_copy,float4(TRANSFORM_TEX(node_9147, _Albedo_copy_copy),0.0,0));
  312.                 float node_6622 = 0.0;
  313.                 float node_2134 = 0.0;
  314.                 float node_4814 = 4.0;
  315.                 v.vertex.xyz += (((saturate(min((node_2282 + ( (_Albedo_var.rgb - node_5311) * (1.0 - node_2282) ) / (node_8500 - node_5311)),(node_4998 + ( (_Voronoi_var.rgb - node_5311) * (0.9 - node_4998) ) / (node_8500 - node_5311))))+(1.0 - floor((node_2134 + ( (_Albedo_copy_copy_var.rgb - node_6622) * (1.0 - node_2134) ) / (1.0 - node_6622)) * node_4814) / (node_4814 - 1)))*v.normal)*_DisplacementMagnitude);
  316.                 o.pos = UnityObjectToClipPos( v.vertex );
  317.                 TRANSFER_SHADOW_CASTER(o)
  318.                 return o;
  319.             }
  320.             float4 frag(VertexOutput i) : COLOR {
  321.                 i.normalDir = normalize(i.normalDir);
  322.                 float3 normalDirection = i.normalDir;
  323.                 SHADOW_CASTER_FRAGMENT(i)
  324.             }
  325.             ENDCG
  326.         }
  327.     }
  328.     FallBack "Diffuse"
  329.     CustomEditor "ShaderForgeMaterialInspector"
  330. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement