Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Shader created with Shader Forge Beta 0.28
- // Shader Forge (c) Joachim Holmer - http://www.acegikmo.com/shaderforge/
- // Note: Manually altering this data may prevent you from opening it in Shader Forge
- /*SF_DATA;ver:0.28;sub:START;pass:START;ps:flbk:,lico:1,lgpr:1,nrmq:1,limd:1,uamb:False,mssp:True,lmpd:False,lprd:False,enco:False,frtr:True,vitr:True,dbil:False,rmgx:True,hqsc:True,hqlp:False,blpr:0,bsrc:0,bdst:1,culm:0,dpts:2,wrdp:True,ufog:True,aust:False,igpj:False,qofs:0,qpre:3,rntp:2,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,ofsf:0,ofsu:0,f2p0:False;n:type:ShaderForge.SFN_Final,id:1,x:33117,y:33103|diff-1477-OUT,spec-1468-OUT,gloss-1622-OUT,normal-379-OUT,emission-1707-OUT,transm-1285-OUT,lwrap-168-OUT,voffset-1901-XYZ;n:type:ShaderForge.SFN_Tex2d,id:3,x:33816,y:33390,ptlb:Normals,ptin:_Normals,tex:7a512f47c14e25542826abf7da9f1d74,ntxv:3,isnm:True;n:type:ShaderForge.SFN_Tex2d,id:5,x:36533,y:32345,ptlb:DeepTexture,ptin:_DeepTexture,tex:e1f7fdbcd92f264428d3114db0bf0e3e,ntxv:0,isnm:False|UVIN-25-UVOUT;n:type:ShaderForge.SFN_Parallax,id:25,x:36715,y:32362|UVIN-26-UVOUT,HEI-40-OUT,DEP-44-OUT;n:type:ShaderForge.SFN_TexCoord,id:26,x:37131,y:32274,uv:0;n:type:ShaderForge.SFN_Slider,id:28,x:37131,y:32202,ptlb:ParallaxDepth,ptin:_ParallaxDepth,min:-0.2,cur:-0.2,max:0;n:type:ShaderForge.SFN_Vector1,id:40,x:36941,y:32301,v1:1;n:type:ShaderForge.SFN_Multiply,id:44,x:36941,y:32362|A-28-OUT,B-45-OUT;n:type:ShaderForge.SFN_Vector1,id:45,x:37131,y:32416,v1:2;n:type:ShaderForge.SFN_Parallax,id:47,x:36715,y:32207|UVIN-26-UVOUT,HEI-40-OUT,DEP-28-OUT;n:type:ShaderForge.SFN_Tex2d,id:49,x:36533,y:32161,ptlb:DeepSpeckle,ptin:_DeepSpeckle,tex:7a632f967e8ad42f5bd275898151ab6a,ntxv:0,isnm:False|UVIN-47-UVOUT;n:type:ShaderForge.SFN_Multiply,id:65,x:36328,y:32249|A-5-RGB,B-1201-OUT;n:type:ShaderForge.SFN_NormalVector,id:72,x:35709,y:31235,pt:False;n:type:ShaderForge.SFN_Dot,id:74,x:35538,y:31185,dt:0|A-75-OUT,B-72-OUT;n:type:ShaderForge.SFN_Vector3,id:75,x:35709,y:31116,v1:0,v2:1,v3:0;n:type:ShaderForge.SFN_Divide,id:91,x:35149,y:31333|A-100-OUT,B-99-OUT;n:type:ShaderForge.SFN_Slider,id:94,x:36114,y:30956,ptlb:SnowCoverage,ptin:_SnowCoverage,min:0,cur:0.6541326,max:1;n:type:ShaderForge.SFN_ValueProperty,id:99,x:36179,y:31170,ptlb:SnowAttenuation,ptin:_SnowAttenuation,glob:False,v1:0.4;n:type:ShaderForge.SFN_Subtract,id:100,x:35356,y:31224|A-94-OUT,B-74-OUT;n:type:ShaderForge.SFN_Clamp01,id:107,x:34962,y:31366|IN-91-OUT;n:type:ShaderForge.SFN_Tex2d,id:159,x:36728,y:33777,ptlb:AO,ptin:_AO,tex:28c7aad1372ff114b90d330f8a2dd938,ntxv:0,isnm:False;n:type:ShaderForge.SFN_Tex2d,id:164,x:36925,y:33300,ptlb:CurvmatureMap,ptin:_CurvmatureMap,tex:5fb7986dd6d0a8e4093ba82369dd6a4d,ntxv:0,isnm:False;n:type:ShaderForge.SFN_Lerp,id:168,x:35130,y:32602,cmnt:Ice and Deep Ice Diffuse|A-360-OUT,B-1206-OUT,T-1371-OUT;n:type:ShaderForge.SFN_Clamp01,id:197,x:36128,y:33795|IN-1240-OUT;n:type:ShaderForge.SFN_Tex2d,id:241,x:33893,y:33568,ptlb:SnowNormals,ptin:_SnowNormals,tex:d7ea4db9bb81f5c40a54c027c3f61a00,ntxv:3,isnm:True;n:type:ShaderForge.SFN_Subtract,id:356,x:35308,y:30741|A-362-OUT,B-94-OUT;n:type:ShaderForge.SFN_Divide,id:358,x:35074,y:30815|A-356-OUT,B-99-OUT;n:type:ShaderForge.SFN_Clamp01,id:360,x:34830,y:30910|IN-358-OUT;n:type:ShaderForge.SFN_Dot,id:362,x:35490,y:30702,dt:0|A-366-OUT,B-364-OUT;n:type:ShaderForge.SFN_NormalVector,id:364,x:35661,y:30752,pt:True;n:type:ShaderForge.SFN_Vector3,id:366,x:35672,y:30648,v1:0,v2:1,v3:0;n:type:ShaderForge.SFN_Lerp,id:379,x:33424,y:33330,cmnt:Snow and Ice Normals|A-412-OUT,B-3-RGB,T-107-OUT;n:type:ShaderForge.SFN_NormalBlend,id:412,x:33638,y:33474|BSE-3-RGB,DTL-241-RGB;n:type:ShaderForge.SFN_AmbientLight,id:444,x:33633,y:32907;n:type:ShaderForge.SFN_Add,id:586,x:36154,y:32178|A-1452-OUT,B-65-OUT;n:type:ShaderForge.SFN_Vector1,id:746,x:36533,y:32073,v1:0.25;n:type:ShaderForge.SFN_Vector3,id:802,x:35678,y:32107,v1:1,v2:1,v3:1;n:type:ShaderForge.SFN_Vector1,id:818,x:36543,y:33377,v1:3;n:type:ShaderForge.SFN_NormalVector,id:962,x:36543,y:32678,pt:True;n:type:ShaderForge.SFN_Vector4Property,id:1011,x:35719,y:33070,ptlb:SpecColor,ptin:_SpecColor,glob:False,v1:0.2,v2:0.25,v3:0.3,v4:2;n:type:ShaderForge.SFN_Dot,id:1023,x:36125,y:32738,dt:0|A-1185-XYZ,B-1158-XYZ;n:type:ShaderForge.SFN_ViewVector,id:1024,x:36543,y:32850;n:type:ShaderForge.SFN_Dot,id:1027,x:36125,y:32909,dt:0|A-1158-XYZ,B-1635-OUT;n:type:ShaderForge.SFN_Vector1,id:1028,x:36125,y:32666,v1:0.1;n:type:ShaderForge.SFN_Lerp,id:1029,x:35919,y:32796|A-1028-OUT,B-1023-OUT,T-1027-OUT;n:type:ShaderForge.SFN_Clamp01,id:1038,x:35904,y:32666|IN-1029-OUT;n:type:ShaderForge.SFN_Power,id:1039,x:35746,y:32846|VAL-1038-OUT,EXP-1634-W;n:type:ShaderForge.SFN_Multiply,id:1041,x:35423,y:32994|A-1039-OUT,B-1011-XYZ;n:type:ShaderForge.SFN_Transform,id:1158,x:36324,y:32862,tffrom:0,tfto:2|IN-1024-OUT;n:type:ShaderForge.SFN_Transform,id:1185,x:36324,y:32706,tffrom:0,tfto:2|IN-962-OUT;n:type:ShaderForge.SFN_Vector4Property,id:1200,x:37445,y:33423,ptlb:IceColor,ptin:_IceColor,glob:False,v1:0,v2:1.25,v3:3,v4:0.25;n:type:ShaderForge.SFN_Multiply,id:1201,x:37167,y:33475|A-1200-XYZ,B-1200-W;n:type:ShaderForge.SFN_Multiply,id:1202,x:36730,y:33263|A-1038-OUT,B-164-G;n:type:ShaderForge.SFN_Multiply,id:1203,x:36543,y:33239|A-1202-OUT,B-1202-OUT;n:type:ShaderForge.SFN_Power,id:1204,x:36336,y:33291|VAL-1203-OUT,EXP-818-OUT;n:type:ShaderForge.SFN_Multiply,id:1205,x:36711,y:33471|A-164-B,B-1201-OUT;n:type:ShaderForge.SFN_Add,id:1206,x:35069,y:32792|A-1204-OUT,B-1205-OUT,C-1041-OUT,D-1419-OUT;n:type:ShaderForge.SFN_Tex2d,id:1228,x:35587,y:31790,ptlb:Cavity,ptin:_Cavity,tex:cb86ee7a49674d24b8a777301da1816d,ntxv:0,isnm:False;n:type:ShaderForge.SFN_Power,id:1229,x:35381,y:31827|VAL-1228-R,EXP-1231-OUT;n:type:ShaderForge.SFN_Vector1,id:1231,x:35587,y:31972,v1:5;n:type:ShaderForge.SFN_Clamp01,id:1232,x:35177,y:31813|IN-1229-OUT;n:type:ShaderForge.SFN_Add,id:1233,x:34478,y:32586|A-1232-OUT,B-168-OUT,C-360-OUT;n:type:ShaderForge.SFN_Multiply,id:1238,x:36506,y:33777|A-159-R,B-1239-OUT;n:type:ShaderForge.SFN_Vector1,id:1239,x:36728,y:33938,v1:1;n:type:ShaderForge.SFN_Power,id:1240,x:36320,y:33795|VAL-1238-OUT,EXP-1241-OUT;n:type:ShaderForge.SFN_Vector1,id:1241,x:36506,y:33900,v1:1;n:type:ShaderForge.SFN_Multiply,id:1285,x:34063,y:33300|A-168-OUT,B-1286-OUT;n:type:ShaderForge.SFN_Vector1,id:1286,x:34238,y:33334,v1:0.25;n:type:ShaderForge.SFN_Subtract,id:1371,x:35405,y:33132|A-197-OUT,B-360-OUT;n:type:ShaderForge.SFN_Multiply,id:1419,x:35905,y:32158|A-1428-OUT,B-586-OUT;n:type:ShaderForge.SFN_OneMinus,id:1428,x:36173,y:32032|IN-1204-OUT;n:type:ShaderForge.SFN_Multiply,id:1452,x:36328,y:32126|A-746-OUT,B-49-RGB;n:type:ShaderForge.SFN_Add,id:1466,x:34762,y:33022|A-1041-OUT,B-164-G;n:type:ShaderForge.SFN_Multiply,id:1467,x:34374,y:33021|A-1466-OUT,B-1589-OUT,C-1011-W;n:type:ShaderForge.SFN_Add,id:1468,x:34204,y:32973|A-1476-OUT,B-1467-OUT;n:type:ShaderForge.SFN_ScreenPos,id:1470,x:34456,y:32116,sctp:2;n:type:ShaderForge.SFN_Tex2d,id:1471,x:34072,y:32307,ptlb:PuddleMask,ptin:_PuddleMask,tex:28c7aad1372ff114b90d330f8a2dd938,ntxv:0,isnm:False|UVIN-1498-OUT;n:type:ShaderForge.SFN_Tex2d,id:1473,x:34072,y:32505,ptlb:RainMask,ptin:_RainMask,tex:7a632f967e8ad42f5bd275898151ab6a,ntxv:0,isnm:False;n:type:ShaderForge.SFN_Multiply,id:1474,x:33839,y:32430|A-1471-RGB,B-1473-RGB,C-1475-OUT;n:type:ShaderForge.SFN_Vector1,id:1475,x:34041,y:32677,v1:2;n:type:ShaderForge.SFN_Multiply,id:1476,x:33661,y:32355|A-360-OUT,B-1474-OUT;n:type:ShaderForge.SFN_Add,id:1477,x:33438,y:32852|A-1476-OUT,B-1233-OUT,C-444-RGB;n:type:ShaderForge.SFN_Transform,id:1493,x:34640,y:32265,tffrom:0,tfto:2|IN-1495-OUT;n:type:ShaderForge.SFN_ViewVector,id:1495,x:34814,y:32288;n:type:ShaderForge.SFN_ComponentMask,id:1497,x:34456,y:32272,cc1:0,cc2:1,cc3:-1,cc4:-1|IN-1493-XYZ;n:type:ShaderForge.SFN_Multiply,id:1498,x:34266,y:32243|A-1470-UVOUT,B-1497-OUT;n:type:ShaderForge.SFN_OneMinus,id:1589,x:34586,y:33084|IN-360-OUT;n:type:ShaderForge.SFN_ConstantLerp,id:1622,x:33581,y:33152,a:0.5,b:1|IN-164-G;n:type:ShaderForge.SFN_Vector4Property,id:1634,x:36543,y:33035,ptlb:SpecSize,ptin:_SpecSize,glob:False,v1:0,v2:0,v3:0.85,v4:0;n:type:ShaderForge.SFN_ComponentMask,id:1635,x:36341,y:33024,cc1:0,cc2:1,cc3:2,cc4:-1|IN-1634-XYZ;n:type:ShaderForge.SFN_Vector4Property,id:1688,x:34278,y:33938,ptlb:Buildup|Melt|Global|Noise,ptin:_BuildupMeltGlobalNoise,glob:False,v1:0.1,v2:-1,v3:0.05,v4:10;n:type:ShaderForge.SFN_Append,id:1692,x:33673,y:34095|A-1697-OUT,B-1699-OUT;n:type:ShaderForge.SFN_Add,id:1693,x:33240,y:33992|A-1709-OUT,B-1711-OUT;n:type:ShaderForge.SFN_Append,id:1695,x:33695,y:33861|A-1697-OUT,B-1699-OUT;n:type:ShaderForge.SFN_Append,id:1697,x:33959,y:33923|A-1699-OUT,B-1688-X;n:type:ShaderForge.SFN_Vector1,id:1699,x:34123,y:33872,v1:0;n:type:ShaderForge.SFN_Vector3,id:1703,x:34786,y:33734,v1:0,v2:1,v3:0;n:type:ShaderForge.SFN_Clamp01,id:1707,x:34078,y:33745|IN-1815-OUT;n:type:ShaderForge.SFN_Lerp,id:1709,x:33460,y:33778|A-1699-OUT,B-1695-OUT,T-1707-OUT;n:type:ShaderForge.SFN_Lerp,id:1711,x:33454,y:34072|A-1699-OUT,B-1692-OUT,T-1722-OUT;n:type:ShaderForge.SFN_ObjectPosition,id:1713,x:34570,y:34100;n:type:ShaderForge.SFN_FragmentPosition,id:1714,x:34584,y:34256;n:type:ShaderForge.SFN_Subtract,id:1715,x:34383,y:34145|A-1713-XYZ,B-1714-XYZ;n:type:ShaderForge.SFN_Add,id:1716,x:34208,y:34215|A-1715-OUT,B-1717-OUT;n:type:ShaderForge.SFN_Vector4,id:1717,x:34383,y:34274,v1:0,v2:0,v3:200,v4:0;n:type:ShaderForge.SFN_ComponentMask,id:1719,x:34009,y:34231,cc1:1,cc2:-1,cc3:-1,cc4:-1|IN-1716-OUT;n:type:ShaderForge.SFN_Multiply,id:1720,x:33826,y:34273|A-1719-OUT,B-1721-OUT;n:type:ShaderForge.SFN_Vector1,id:1721,x:34009,y:34381,v1:0.0001;n:type:ShaderForge.SFN_Clamp01,id:1722,x:33639,y:34285|IN-1720-OUT;n:type:ShaderForge.SFN_NormalVector,id:1797,x:34884,y:33566,pt:False;n:type:ShaderForge.SFN_Dot,id:1815,x:34438,y:33666,dt:0|A-1824-XYZ,B-1703-OUT;n:type:ShaderForge.SFN_Transform,id:1824,x:34684,y:33566,tffrom:0,tfto:2|IN-1797-OUT;n:type:ShaderForge.SFN_Transform,id:1901,x:33330,y:33568,tffrom:1,tfto:0|IN-1709-OUT;proporder:3-5-28-49-94-99-159-164-241-1011-1200-1228-1471-1473-1634-1688;pass:END;sub:END;*/
- Shader "Shader Forge/IceObjects" {
- Properties {
- _Normals ("Normals", 2D) = "bump" {}
- _DeepTexture ("DeepTexture", 2D) = "white" {}
- _ParallaxDepth ("ParallaxDepth", Range(-0.2, 0)) = -0.2
- _DeepSpeckle ("DeepSpeckle", 2D) = "white" {}
- _SnowCoverage ("SnowCoverage", Range(0, 1)) = 0.6541326
- _SnowAttenuation ("SnowAttenuation", Float ) = 0.4
- _AO ("AO", 2D) = "white" {}
- _CurvmatureMap ("CurvmatureMap", 2D) = "white" {}
- _SnowNormals ("SnowNormals", 2D) = "bump" {}
- _SpecColor ("SpecColor", Vector) = (0.2,0.25,0.3,2)
- _IceColor ("IceColor", Vector) = (0,1.25,3,0.25)
- _Cavity ("Cavity", 2D) = "white" {}
- _PuddleMask ("PuddleMask", 2D) = "white" {}
- _RainMask ("RainMask", 2D) = "white" {}
- _SpecSize ("SpecSize", Vector) = (0,0,0.85,0)
- _BuildupMeltGlobalNoise ("Buildup|Melt|Global|Noise", Vector) = (0.1,-1,0.05,10)
- }
- SubShader {
- Tags {
- "Queue"="Transparent"
- "RenderType"="Transparent"
- }
- LOD 128
- Pass {
- Name "ForwardBase"
- Tags {
- "LightMode"="ForwardBase"
- }
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #define UNITY_PASS_FORWARDBASE
- #include "UnityCG.cginc"
- #include "AutoLight.cginc"
- #pragma multi_compile_fwdbase_fullshadows
- #pragma exclude_renderers xbox360 ps3 flash
- #pragma target 3.0
- uniform float4 _LightColor0;
- uniform sampler2D _Normals; uniform float4 _Normals_ST;
- uniform sampler2D _DeepTexture; uniform float4 _DeepTexture_ST;
- uniform float _ParallaxDepth;
- uniform sampler2D _DeepSpeckle; uniform float4 _DeepSpeckle_ST;
- uniform float _SnowCoverage;
- uniform float _SnowAttenuation;
- uniform sampler2D _AO; uniform float4 _AO_ST;
- uniform sampler2D _CurvmatureMap; uniform float4 _CurvmatureMap_ST;
- uniform sampler2D _SnowNormals; uniform float4 _SnowNormals_ST;
- uniform float4 _SpecColor;
- uniform float4 _IceColor;
- uniform sampler2D _Cavity; uniform float4 _Cavity_ST;
- uniform sampler2D _PuddleMask; uniform float4 _PuddleMask_ST;
- uniform sampler2D _RainMask; uniform float4 _RainMask_ST;
- uniform float4 _SpecSize;
- uniform float4 _BuildupMeltGlobalNoise;
- struct VertexInput {
- float4 vertex : POSITION;
- float3 normal : NORMAL;
- float4 tangent : TANGENT;
- float4 uv0 : TEXCOORD0;
- };
- struct VertexOutput {
- float4 pos : SV_POSITION;
- float4 uv0 : TEXCOORD0;
- float4 posWorld : TEXCOORD1;
- float3 normalDir : TEXCOORD2;
- float3 tangentDir : TEXCOORD3;
- float3 binormalDir : TEXCOORD4;
- float4 screenPos : TEXCOORD5;
- LIGHTING_COORDS(6,7)
- };
- VertexOutput vert (VertexInput v) {
- VertexOutput o;
- o.uv0 = v.uv0;
- o.normalDir = mul(float4(v.normal,0), _World2Object).xyz;
- o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
- o.binormalDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
- float node_1699 = 0.0;
- float2 node_1697 = float2(node_1699,_BuildupMeltGlobalNoise.r);
- float node_1707 = saturate(dot(mul( tangentTransform, v.normal ).xyz.rgb,float3(0,1,0)));
- float3 node_1709 = lerp(float3(node_1699,node_1699,node_1699),float3(node_1697,node_1699),node_1707);
- v.vertex.xyz += mul( _Object2World, float4(node_1709,0) ).xyz.rgb;
- o.posWorld = mul(_Object2World, v.vertex);
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
- o.screenPos = o.pos;
- TRANSFER_VERTEX_TO_FRAGMENT(o)
- return o;
- }
- fixed4 frag(VertexOutput i) : COLOR {
- #if UNITY_UV_STARTS_AT_TOP
- float grabSign = -_ProjectionParams.x;
- #else
- float grabSign = _ProjectionParams.x;
- #endif
- i.normalDir = normalize(i.normalDir);
- float3x3 tangentTransform = float3x3( i.tangentDir, i.binormalDir, i.normalDir);
- float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
- /////// Normals:
- float2 node_1939 = i.uv0;
- float3 node_3 = UnpackNormal(tex2D(_Normals,TRANSFORM_TEX(node_1939.rg, _Normals)));
- float3 node_412_nrm_base = node_3.rgb + float3(0,0,1);
- float3 node_412_nrm_detail = UnpackNormal(tex2D(_SnowNormals,TRANSFORM_TEX(node_1939.rg, _SnowNormals))).rgb * float3(-1,-1,1);
- float3 node_412_nrm_combined = node_412_nrm_base*dot(node_412_nrm_base, node_412_nrm_detail)/node_412_nrm_base.z - node_412_nrm_detail;
- float3 node_412 = node_412_nrm_combined;
- float node_94 = _SnowCoverage;
- float node_99 = _SnowAttenuation;
- float3 normalLocal = lerp(node_412,node_3.rgb,saturate(((node_94-dot(float3(0,1,0),i.normalDir))/node_99)));
- float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
- i.screenPos = float4( i.screenPos.xy / i.screenPos.w, 0, 0 );
- i.screenPos.y *= _ProjectionParams.x;
- float2 sceneUVs = float2(1,grabSign)*i.screenPos.xy*0.5+0.5;
- float3 lightDirection = normalize(_WorldSpaceLightPos0.xyz);
- float3 halfDirection = normalize(viewDirection+lightDirection);
- ////// Lighting:
- float attenuation = LIGHT_ATTENUATION(i);
- float3 attenColor = attenuation * _LightColor0.xyz;
- /////// Diffuse:
- float NdotL = dot( normalDirection, lightDirection );
- float node_360 = saturate(((dot(float3(0,1,0),normalDirection)-node_94)/node_99));
- float3 node_1158 = mul( tangentTransform, viewDirection ).xyz;
- float4 node_1634 = _SpecSize;
- float node_1038 = saturate(lerp(0.1,dot(mul( tangentTransform, normalDirection ).xyz.rgb,node_1158.rgb),dot(node_1158.rgb,node_1634.rgb.rgb)));
- float4 node_164 = tex2D(_CurvmatureMap,TRANSFORM_TEX(node_1939.rg, _CurvmatureMap));
- float node_1202 = (node_1038*node_164.g);
- float node_1204 = pow((node_1202*node_1202),3.0);
- float4 node_1200 = _IceColor;
- float3 node_1201 = (node_1200.rgb*node_1200.a);
- float4 node_1011 = _SpecColor;
- float3 node_1041 = (pow(node_1038,node_1634.a)*node_1011.rgb);
- float2 node_26 = i.uv0;
- float node_40 = 1.0;
- float node_28 = _ParallaxDepth;
- float2 node_47 = (node_28*(node_40 - 0.5)*mul(tangentTransform, viewDirection).xy + node_26.rg);
- float2 node_25 = ((node_28*2.0)*(node_40 - 0.5)*mul(tangentTransform, viewDirection).xy + node_26.rg);
- float3 node_168 = lerp(float3(node_360,node_360,node_360),(node_1204+(node_164.b*node_1201)+node_1041+((1.0 - node_1204)*((0.25*tex2D(_DeepSpeckle,TRANSFORM_TEX(node_47.rg, _DeepSpeckle)).rgb)+(tex2D(_DeepTexture,TRANSFORM_TEX(node_25.rg, _DeepTexture)).rgb*node_1201)))),(saturate(pow((tex2D(_AO,TRANSFORM_TEX(node_1939.rg, _AO)).r*1.0),1.0))-node_360)); // Ice and Deep Ice Diffuse
- float3 w = node_168*0.5; // Light wrapping
- float3 NdotLWrap = NdotL * ( 1.0 - w );
- float3 forwardLight = max(float3(0.0,0.0,0.0), NdotLWrap + w );
- float3 backLight = max(float3(0.0,0.0,0.0), -NdotLWrap + w ) * (node_168*0.25);
- float3 diffuse = (forwardLight+backLight) * attenColor;
- ////// Emissive:
- float node_1707 = saturate(dot(mul( tangentTransform, i.normalDir ).xyz.rgb,float3(0,1,0)));
- float3 emissive = float3(node_1707,node_1707,node_1707);
- ///////// Gloss:
- float gloss = exp2(lerp(0.5,1,node_164.g)*10.0+1.0);
- ////// Specular:
- NdotL = max(0.0, NdotL);
- float2 node_1498 = (sceneUVs.rg*mul( tangentTransform, viewDirection ).xyz.rgb.rg);
- float3 node_1476 = (node_360*(tex2D(_PuddleMask,TRANSFORM_TEX(node_1498, _PuddleMask)).rgb*tex2D(_RainMask,TRANSFORM_TEX(node_1939.rg, _RainMask)).rgb*2.0));
- float3 specularColor = (node_1476+((node_1041+node_164.g)*(1.0 - node_360)*node_1011.a));
- float3 specular = (floor(attenuation) * _LightColor0.xyz) * pow(max(0,dot(halfDirection,normalDirection)),gloss) * specularColor;
- float3 finalColor = 0;
- float3 diffuseLight = diffuse;
- finalColor += diffuseLight * (node_1476+(saturate(pow(tex2D(_Cavity,TRANSFORM_TEX(node_1939.rg, _Cavity)).r,5.0))+node_168+node_360)+UNITY_LIGHTMODEL_AMBIENT.rgb);
- finalColor += specular;
- finalColor += emissive;
- /// Final Color:
- return fixed4(finalColor,1);
- }
- ENDCG
- }
- Pass {
- Name "ForwardAdd"
- Tags {
- "LightMode"="ForwardAdd"
- }
- Blend One One
- Fog { Color (0,0,0,0) }
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #define UNITY_PASS_FORWARDADD
- #include "UnityCG.cginc"
- #include "AutoLight.cginc"
- #pragma multi_compile_fwdadd_fullshadows
- #pragma exclude_renderers xbox360 ps3 flash
- #pragma target 3.0
- uniform float4 _LightColor0;
- uniform sampler2D _Normals; uniform float4 _Normals_ST;
- uniform sampler2D _DeepTexture; uniform float4 _DeepTexture_ST;
- uniform float _ParallaxDepth;
- uniform sampler2D _DeepSpeckle; uniform float4 _DeepSpeckle_ST;
- uniform float _SnowCoverage;
- uniform float _SnowAttenuation;
- uniform sampler2D _AO; uniform float4 _AO_ST;
- uniform sampler2D _CurvmatureMap; uniform float4 _CurvmatureMap_ST;
- uniform sampler2D _SnowNormals; uniform float4 _SnowNormals_ST;
- uniform float4 _SpecColor;
- uniform float4 _IceColor;
- uniform sampler2D _Cavity; uniform float4 _Cavity_ST;
- uniform sampler2D _PuddleMask; uniform float4 _PuddleMask_ST;
- uniform sampler2D _RainMask; uniform float4 _RainMask_ST;
- uniform float4 _SpecSize;
- uniform float4 _BuildupMeltGlobalNoise;
- struct VertexInput {
- float4 vertex : POSITION;
- float3 normal : NORMAL;
- float4 tangent : TANGENT;
- float4 uv0 : TEXCOORD0;
- };
- struct VertexOutput {
- float4 pos : SV_POSITION;
- float4 uv0 : TEXCOORD0;
- float4 posWorld : TEXCOORD1;
- float3 normalDir : TEXCOORD2;
- float3 tangentDir : TEXCOORD3;
- float3 binormalDir : TEXCOORD4;
- float4 screenPos : TEXCOORD5;
- LIGHTING_COORDS(6,7)
- };
- VertexOutput vert (VertexInput v) {
- VertexOutput o;
- o.uv0 = v.uv0;
- o.normalDir = mul(float4(v.normal,0), _World2Object).xyz;
- o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
- o.binormalDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
- float node_1699 = 0.0;
- float2 node_1697 = float2(node_1699,_BuildupMeltGlobalNoise.r);
- float node_1707 = saturate(dot(mul( tangentTransform, v.normal ).xyz.rgb,float3(0,1,0)));
- float3 node_1709 = lerp(float3(node_1699,node_1699,node_1699),float3(node_1697,node_1699),node_1707);
- v.vertex.xyz += mul( _Object2World, float4(node_1709,0) ).xyz.rgb;
- o.posWorld = mul(_Object2World, v.vertex);
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
- o.screenPos = o.pos;
- TRANSFER_VERTEX_TO_FRAGMENT(o)
- return o;
- }
- fixed4 frag(VertexOutput i) : COLOR {
- #if UNITY_UV_STARTS_AT_TOP
- float grabSign = -_ProjectionParams.x;
- #else
- float grabSign = _ProjectionParams.x;
- #endif
- i.normalDir = normalize(i.normalDir);
- float3x3 tangentTransform = float3x3( i.tangentDir, i.binormalDir, i.normalDir);
- float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
- /////// Normals:
- float2 node_1940 = i.uv0;
- float3 node_3 = UnpackNormal(tex2D(_Normals,TRANSFORM_TEX(node_1940.rg, _Normals)));
- float3 node_412_nrm_base = node_3.rgb + float3(0,0,1);
- float3 node_412_nrm_detail = UnpackNormal(tex2D(_SnowNormals,TRANSFORM_TEX(node_1940.rg, _SnowNormals))).rgb * float3(-1,-1,1);
- float3 node_412_nrm_combined = node_412_nrm_base*dot(node_412_nrm_base, node_412_nrm_detail)/node_412_nrm_base.z - node_412_nrm_detail;
- float3 node_412 = node_412_nrm_combined;
- float node_94 = _SnowCoverage;
- float node_99 = _SnowAttenuation;
- float3 normalLocal = lerp(node_412,node_3.rgb,saturate(((node_94-dot(float3(0,1,0),i.normalDir))/node_99)));
- float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
- i.screenPos = float4( i.screenPos.xy / i.screenPos.w, 0, 0 );
- i.screenPos.y *= _ProjectionParams.x;
- float2 sceneUVs = float2(1,grabSign)*i.screenPos.xy*0.5+0.5;
- float3 lightDirection = normalize(lerp(_WorldSpaceLightPos0.xyz, _WorldSpaceLightPos0.xyz - i.posWorld.xyz,_WorldSpaceLightPos0.w));
- float3 halfDirection = normalize(viewDirection+lightDirection);
- ////// Lighting:
- float attenuation = LIGHT_ATTENUATION(i);
- float3 attenColor = attenuation * _LightColor0.xyz;
- /////// Diffuse:
- float NdotL = dot( normalDirection, lightDirection );
- float node_360 = saturate(((dot(float3(0,1,0),normalDirection)-node_94)/node_99));
- float3 node_1158 = mul( tangentTransform, viewDirection ).xyz;
- float4 node_1634 = _SpecSize;
- float node_1038 = saturate(lerp(0.1,dot(mul( tangentTransform, normalDirection ).xyz.rgb,node_1158.rgb),dot(node_1158.rgb,node_1634.rgb.rgb)));
- float4 node_164 = tex2D(_CurvmatureMap,TRANSFORM_TEX(node_1940.rg, _CurvmatureMap));
- float node_1202 = (node_1038*node_164.g);
- float node_1204 = pow((node_1202*node_1202),3.0);
- float4 node_1200 = _IceColor;
- float3 node_1201 = (node_1200.rgb*node_1200.a);
- float4 node_1011 = _SpecColor;
- float3 node_1041 = (pow(node_1038,node_1634.a)*node_1011.rgb);
- float2 node_26 = i.uv0;
- float node_40 = 1.0;
- float node_28 = _ParallaxDepth;
- float2 node_47 = (node_28*(node_40 - 0.5)*mul(tangentTransform, viewDirection).xy + node_26.rg);
- float2 node_25 = ((node_28*2.0)*(node_40 - 0.5)*mul(tangentTransform, viewDirection).xy + node_26.rg);
- float3 node_168 = lerp(float3(node_360,node_360,node_360),(node_1204+(node_164.b*node_1201)+node_1041+((1.0 - node_1204)*((0.25*tex2D(_DeepSpeckle,TRANSFORM_TEX(node_47.rg, _DeepSpeckle)).rgb)+(tex2D(_DeepTexture,TRANSFORM_TEX(node_25.rg, _DeepTexture)).rgb*node_1201)))),(saturate(pow((tex2D(_AO,TRANSFORM_TEX(node_1940.rg, _AO)).r*1.0),1.0))-node_360)); // Ice and Deep Ice Diffuse
- float3 w = node_168*0.5; // Light wrapping
- float3 NdotLWrap = NdotL * ( 1.0 - w );
- float3 forwardLight = max(float3(0.0,0.0,0.0), NdotLWrap + w );
- float3 backLight = max(float3(0.0,0.0,0.0), -NdotLWrap + w ) * (node_168*0.25);
- float3 diffuse = (forwardLight+backLight) * attenColor;
- ///////// Gloss:
- float gloss = exp2(lerp(0.5,1,node_164.g)*10.0+1.0);
- ////// Specular:
- NdotL = max(0.0, NdotL);
- float2 node_1498 = (sceneUVs.rg*mul( tangentTransform, viewDirection ).xyz.rgb.rg);
- float3 node_1476 = (node_360*(tex2D(_PuddleMask,TRANSFORM_TEX(node_1498, _PuddleMask)).rgb*tex2D(_RainMask,TRANSFORM_TEX(node_1940.rg, _RainMask)).rgb*2.0));
- float3 specularColor = (node_1476+((node_1041+node_164.g)*(1.0 - node_360)*node_1011.a));
- float3 specular = attenColor * pow(max(0,dot(halfDirection,normalDirection)),gloss) * specularColor;
- float3 finalColor = 0;
- float3 diffuseLight = diffuse;
- finalColor += diffuseLight * (node_1476+(saturate(pow(tex2D(_Cavity,TRANSFORM_TEX(node_1940.rg, _Cavity)).r,5.0))+node_168+node_360)+UNITY_LIGHTMODEL_AMBIENT.rgb);
- finalColor += specular;
- /// Final Color:
- return fixed4(finalColor * 1,0);
- }
- ENDCG
- }
- Pass {
- Name "ShadowCollector"
- Tags {
- "LightMode"="ShadowCollector"
- }
- Fog {Mode Off}
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #define UNITY_PASS_SHADOWCOLLECTOR
- #define SHADOW_COLLECTOR_PASS
- #include "UnityCG.cginc"
- #include "Lighting.cginc"
- #pragma fragmentoption ARB_precision_hint_fastest
- #pragma multi_compile_shadowcollector
- #pragma exclude_renderers xbox360 ps3 flash
- #pragma target 3.0
- uniform float4 _BuildupMeltGlobalNoise;
- struct VertexInput {
- float4 vertex : POSITION;
- float3 normal : NORMAL;
- float4 tangent : TANGENT;
- };
- struct VertexOutput {
- V2F_SHADOW_COLLECTOR;
- float3 normalDir : TEXCOORD5;
- float3 tangentDir : TEXCOORD6;
- float3 binormalDir : TEXCOORD7;
- };
- VertexOutput vert (VertexInput v) {
- VertexOutput o;
- o.normalDir = mul(float4(v.normal,0), _World2Object).xyz;
- o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
- o.binormalDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
- float node_1699 = 0.0;
- float2 node_1697 = float2(node_1699,_BuildupMeltGlobalNoise.r);
- float node_1707 = saturate(dot(mul( tangentTransform, v.normal ).xyz.rgb,float3(0,1,0)));
- float3 node_1709 = lerp(float3(node_1699,node_1699,node_1699),float3(node_1697,node_1699),node_1707);
- v.vertex.xyz += mul( _Object2World, float4(node_1709,0) ).xyz.rgb;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
- TRANSFER_SHADOW_COLLECTOR(o)
- return o;
- }
- fixed4 frag(VertexOutput i) : COLOR {
- i.normalDir = normalize(i.normalDir);
- float3x3 tangentTransform = float3x3( i.tangentDir, i.binormalDir, i.normalDir);
- SHADOW_COLLECTOR_FRAGMENT(i)
- }
- ENDCG
- }
- Pass {
- Name "ShadowCaster"
- Tags {
- "LightMode"="ShadowCaster"
- }
- Cull Off
- Offset 1, 1
- Fog {Mode Off}
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #define UNITY_PASS_SHADOWCASTER
- #include "UnityCG.cginc"
- #include "Lighting.cginc"
- #pragma fragmentoption ARB_precision_hint_fastest
- #pragma multi_compile_shadowcaster
- #pragma exclude_renderers xbox360 ps3 flash
- #pragma target 3.0
- uniform float4 _BuildupMeltGlobalNoise;
- struct VertexInput {
- float4 vertex : POSITION;
- float3 normal : NORMAL;
- float4 tangent : TANGENT;
- };
- struct VertexOutput {
- V2F_SHADOW_CASTER;
- float3 normalDir : TEXCOORD1;
- float3 tangentDir : TEXCOORD2;
- float3 binormalDir : TEXCOORD3;
- };
- VertexOutput vert (VertexInput v) {
- VertexOutput o;
- o.normalDir = mul(float4(v.normal,0), _World2Object).xyz;
- o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
- o.binormalDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
- float node_1699 = 0.0;
- float2 node_1697 = float2(node_1699,_BuildupMeltGlobalNoise.r);
- float node_1707 = saturate(dot(mul( tangentTransform, v.normal ).xyz.rgb,float3(0,1,0)));
- float3 node_1709 = lerp(float3(node_1699,node_1699,node_1699),float3(node_1697,node_1699),node_1707);
- v.vertex.xyz += mul( _Object2World, float4(node_1709,0) ).xyz.rgb;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
- TRANSFER_SHADOW_CASTER(o)
- return o;
- }
- fixed4 frag(VertexOutput i) : COLOR {
- i.normalDir = normalize(i.normalDir);
- float3x3 tangentTransform = float3x3( i.tangentDir, i.binormalDir, i.normalDir);
- SHADOW_CASTER_FRAGMENT(i)
- }
- ENDCG
- }
- }
- FallBack "Diffuse"
- CustomEditor "ShaderForgeMaterialInspector"
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement