Advertisement
Guest User

Unity IndexOutOfRange when parsing with shaderforge

a guest
Apr 15th, 2014
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.25 KB | None | 0 0
  1. // Shader created with Shader Forge Beta 0.28
  2. // Shader Forge (c) 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: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;*/
  5.  
  6. Shader "Shader Forge/IceObjects" {
  7. Properties {
  8. _Normals ("Normals", 2D) = "bump" {}
  9. _DeepTexture ("DeepTexture", 2D) = "white" {}
  10. _ParallaxDepth ("ParallaxDepth", Range(-0.2, 0)) = -0.2
  11. _DeepSpeckle ("DeepSpeckle", 2D) = "white" {}
  12. _SnowCoverage ("SnowCoverage", Range(0, 1)) = 0.6541326
  13. _SnowAttenuation ("SnowAttenuation", Float ) = 0.4
  14. _AO ("AO", 2D) = "white" {}
  15. _CurvmatureMap ("CurvmatureMap", 2D) = "white" {}
  16. _SnowNormals ("SnowNormals", 2D) = "bump" {}
  17. _SpecColor ("SpecColor", Vector) = (0.2,0.25,0.3,2)
  18. _IceColor ("IceColor", Vector) = (0,1.25,3,0.25)
  19. _Cavity ("Cavity", 2D) = "white" {}
  20. _PuddleMask ("PuddleMask", 2D) = "white" {}
  21. _RainMask ("RainMask", 2D) = "white" {}
  22. _SpecSize ("SpecSize", Vector) = (0,0,0.85,0)
  23. _BuildupMeltGlobalNoise ("Buildup|Melt|Global|Noise", Vector) = (0.1,-1,0.05,10)
  24. }
  25. SubShader {
  26. Tags {
  27. "Queue"="Transparent"
  28. "RenderType"="Transparent"
  29. }
  30. LOD 128
  31. Pass {
  32. Name "ForwardBase"
  33. Tags {
  34. "LightMode"="ForwardBase"
  35. }
  36.  
  37.  
  38. CGPROGRAM
  39. #pragma vertex vert
  40. #pragma fragment frag
  41. #define UNITY_PASS_FORWARDBASE
  42. #include "UnityCG.cginc"
  43. #include "AutoLight.cginc"
  44. #pragma multi_compile_fwdbase_fullshadows
  45. #pragma exclude_renderers xbox360 ps3 flash
  46. #pragma target 3.0
  47. uniform float4 _LightColor0;
  48. uniform sampler2D _Normals; uniform float4 _Normals_ST;
  49. uniform sampler2D _DeepTexture; uniform float4 _DeepTexture_ST;
  50. uniform float _ParallaxDepth;
  51. uniform sampler2D _DeepSpeckle; uniform float4 _DeepSpeckle_ST;
  52. uniform float _SnowCoverage;
  53. uniform float _SnowAttenuation;
  54. uniform sampler2D _AO; uniform float4 _AO_ST;
  55. uniform sampler2D _CurvmatureMap; uniform float4 _CurvmatureMap_ST;
  56. uniform sampler2D _SnowNormals; uniform float4 _SnowNormals_ST;
  57. uniform float4 _SpecColor;
  58. uniform float4 _IceColor;
  59. uniform sampler2D _Cavity; uniform float4 _Cavity_ST;
  60. uniform sampler2D _PuddleMask; uniform float4 _PuddleMask_ST;
  61. uniform sampler2D _RainMask; uniform float4 _RainMask_ST;
  62. uniform float4 _SpecSize;
  63. uniform float4 _BuildupMeltGlobalNoise;
  64. struct VertexInput {
  65. float4 vertex : POSITION;
  66. float3 normal : NORMAL;
  67. float4 tangent : TANGENT;
  68. float4 uv0 : TEXCOORD0;
  69. };
  70. struct VertexOutput {
  71. float4 pos : SV_POSITION;
  72. float4 uv0 : TEXCOORD0;
  73. float4 posWorld : TEXCOORD1;
  74. float3 normalDir : TEXCOORD2;
  75. float3 tangentDir : TEXCOORD3;
  76. float3 binormalDir : TEXCOORD4;
  77. float4 screenPos : TEXCOORD5;
  78. LIGHTING_COORDS(6,7)
  79. };
  80. VertexOutput vert (VertexInput v) {
  81. VertexOutput o;
  82. o.uv0 = v.uv0;
  83. o.normalDir = mul(float4(v.normal,0), _World2Object).xyz;
  84. o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
  85. o.binormalDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
  86. float node_1699 = 0.0;
  87. float2 node_1697 = float2(node_1699,_BuildupMeltGlobalNoise.r);
  88. float node_1707 = saturate(dot(mul( tangentTransform, v.normal ).xyz.rgb,float3(0,1,0)));
  89. float3 node_1709 = lerp(float3(node_1699,node_1699,node_1699),float3(node_1697,node_1699),node_1707);
  90. v.vertex.xyz += mul( _Object2World, float4(node_1709,0) ).xyz.rgb;
  91. o.posWorld = mul(_Object2World, v.vertex);
  92. o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
  93. o.screenPos = o.pos;
  94. TRANSFER_VERTEX_TO_FRAGMENT(o)
  95. return o;
  96. }
  97. fixed4 frag(VertexOutput i) : COLOR {
  98. #if UNITY_UV_STARTS_AT_TOP
  99. float grabSign = -_ProjectionParams.x;
  100. #else
  101. float grabSign = _ProjectionParams.x;
  102. #endif
  103. i.normalDir = normalize(i.normalDir);
  104. float3x3 tangentTransform = float3x3( i.tangentDir, i.binormalDir, i.normalDir);
  105. float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
  106. /////// Normals:
  107. float2 node_1939 = i.uv0;
  108. float3 node_3 = UnpackNormal(tex2D(_Normals,TRANSFORM_TEX(node_1939.rg, _Normals)));
  109. float3 node_412_nrm_base = node_3.rgb + float3(0,0,1);
  110. float3 node_412_nrm_detail = UnpackNormal(tex2D(_SnowNormals,TRANSFORM_TEX(node_1939.rg, _SnowNormals))).rgb * float3(-1,-1,1);
  111. 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;
  112. float3 node_412 = node_412_nrm_combined;
  113. float node_94 = _SnowCoverage;
  114. float node_99 = _SnowAttenuation;
  115. float3 normalLocal = lerp(node_412,node_3.rgb,saturate(((node_94-dot(float3(0,1,0),i.normalDir))/node_99)));
  116. float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
  117. i.screenPos = float4( i.screenPos.xy / i.screenPos.w, 0, 0 );
  118. i.screenPos.y *= _ProjectionParams.x;
  119. float2 sceneUVs = float2(1,grabSign)*i.screenPos.xy*0.5+0.5;
  120. float3 lightDirection = normalize(_WorldSpaceLightPos0.xyz);
  121. float3 halfDirection = normalize(viewDirection+lightDirection);
  122. ////// Lighting:
  123. float attenuation = LIGHT_ATTENUATION(i);
  124. float3 attenColor = attenuation * _LightColor0.xyz;
  125. /////// Diffuse:
  126. float NdotL = dot( normalDirection, lightDirection );
  127. float node_360 = saturate(((dot(float3(0,1,0),normalDirection)-node_94)/node_99));
  128. float3 node_1158 = mul( tangentTransform, viewDirection ).xyz;
  129. float4 node_1634 = _SpecSize;
  130. float node_1038 = saturate(lerp(0.1,dot(mul( tangentTransform, normalDirection ).xyz.rgb,node_1158.rgb),dot(node_1158.rgb,node_1634.rgb.rgb)));
  131. float4 node_164 = tex2D(_CurvmatureMap,TRANSFORM_TEX(node_1939.rg, _CurvmatureMap));
  132. float node_1202 = (node_1038*node_164.g);
  133. float node_1204 = pow((node_1202*node_1202),3.0);
  134. float4 node_1200 = _IceColor;
  135. float3 node_1201 = (node_1200.rgb*node_1200.a);
  136. float4 node_1011 = _SpecColor;
  137. float3 node_1041 = (pow(node_1038,node_1634.a)*node_1011.rgb);
  138. float2 node_26 = i.uv0;
  139. float node_40 = 1.0;
  140. float node_28 = _ParallaxDepth;
  141. float2 node_47 = (node_28*(node_40 - 0.5)*mul(tangentTransform, viewDirection).xy + node_26.rg);
  142. float2 node_25 = ((node_28*2.0)*(node_40 - 0.5)*mul(tangentTransform, viewDirection).xy + node_26.rg);
  143. 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
  144. float3 w = node_168*0.5; // Light wrapping
  145. float3 NdotLWrap = NdotL * ( 1.0 - w );
  146. float3 forwardLight = max(float3(0.0,0.0,0.0), NdotLWrap + w );
  147. float3 backLight = max(float3(0.0,0.0,0.0), -NdotLWrap + w ) * (node_168*0.25);
  148. float3 diffuse = (forwardLight+backLight) * attenColor;
  149. ////// Emissive:
  150. float node_1707 = saturate(dot(mul( tangentTransform, i.normalDir ).xyz.rgb,float3(0,1,0)));
  151. float3 emissive = float3(node_1707,node_1707,node_1707);
  152. ///////// Gloss:
  153. float gloss = exp2(lerp(0.5,1,node_164.g)*10.0+1.0);
  154. ////// Specular:
  155. NdotL = max(0.0, NdotL);
  156. float2 node_1498 = (sceneUVs.rg*mul( tangentTransform, viewDirection ).xyz.rgb.rg);
  157. float3 node_1476 = (node_360*(tex2D(_PuddleMask,TRANSFORM_TEX(node_1498, _PuddleMask)).rgb*tex2D(_RainMask,TRANSFORM_TEX(node_1939.rg, _RainMask)).rgb*2.0));
  158. float3 specularColor = (node_1476+((node_1041+node_164.g)*(1.0 - node_360)*node_1011.a));
  159. float3 specular = (floor(attenuation) * _LightColor0.xyz) * pow(max(0,dot(halfDirection,normalDirection)),gloss) * specularColor;
  160. float3 finalColor = 0;
  161. float3 diffuseLight = diffuse;
  162. 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);
  163. finalColor += specular;
  164. finalColor += emissive;
  165. /// Final Color:
  166. return fixed4(finalColor,1);
  167. }
  168. ENDCG
  169. }
  170. Pass {
  171. Name "ForwardAdd"
  172. Tags {
  173. "LightMode"="ForwardAdd"
  174. }
  175. Blend One One
  176.  
  177.  
  178. Fog { Color (0,0,0,0) }
  179. CGPROGRAM
  180. #pragma vertex vert
  181. #pragma fragment frag
  182. #define UNITY_PASS_FORWARDADD
  183. #include "UnityCG.cginc"
  184. #include "AutoLight.cginc"
  185. #pragma multi_compile_fwdadd_fullshadows
  186. #pragma exclude_renderers xbox360 ps3 flash
  187. #pragma target 3.0
  188. uniform float4 _LightColor0;
  189. uniform sampler2D _Normals; uniform float4 _Normals_ST;
  190. uniform sampler2D _DeepTexture; uniform float4 _DeepTexture_ST;
  191. uniform float _ParallaxDepth;
  192. uniform sampler2D _DeepSpeckle; uniform float4 _DeepSpeckle_ST;
  193. uniform float _SnowCoverage;
  194. uniform float _SnowAttenuation;
  195. uniform sampler2D _AO; uniform float4 _AO_ST;
  196. uniform sampler2D _CurvmatureMap; uniform float4 _CurvmatureMap_ST;
  197. uniform sampler2D _SnowNormals; uniform float4 _SnowNormals_ST;
  198. uniform float4 _SpecColor;
  199. uniform float4 _IceColor;
  200. uniform sampler2D _Cavity; uniform float4 _Cavity_ST;
  201. uniform sampler2D _PuddleMask; uniform float4 _PuddleMask_ST;
  202. uniform sampler2D _RainMask; uniform float4 _RainMask_ST;
  203. uniform float4 _SpecSize;
  204. uniform float4 _BuildupMeltGlobalNoise;
  205. struct VertexInput {
  206. float4 vertex : POSITION;
  207. float3 normal : NORMAL;
  208. float4 tangent : TANGENT;
  209. float4 uv0 : TEXCOORD0;
  210. };
  211. struct VertexOutput {
  212. float4 pos : SV_POSITION;
  213. float4 uv0 : TEXCOORD0;
  214. float4 posWorld : TEXCOORD1;
  215. float3 normalDir : TEXCOORD2;
  216. float3 tangentDir : TEXCOORD3;
  217. float3 binormalDir : TEXCOORD4;
  218. float4 screenPos : TEXCOORD5;
  219. LIGHTING_COORDS(6,7)
  220. };
  221. VertexOutput vert (VertexInput v) {
  222. VertexOutput o;
  223. o.uv0 = v.uv0;
  224. o.normalDir = mul(float4(v.normal,0), _World2Object).xyz;
  225. o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
  226. o.binormalDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
  227. float node_1699 = 0.0;
  228. float2 node_1697 = float2(node_1699,_BuildupMeltGlobalNoise.r);
  229. float node_1707 = saturate(dot(mul( tangentTransform, v.normal ).xyz.rgb,float3(0,1,0)));
  230. float3 node_1709 = lerp(float3(node_1699,node_1699,node_1699),float3(node_1697,node_1699),node_1707);
  231. v.vertex.xyz += mul( _Object2World, float4(node_1709,0) ).xyz.rgb;
  232. o.posWorld = mul(_Object2World, v.vertex);
  233. o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
  234. o.screenPos = o.pos;
  235. TRANSFER_VERTEX_TO_FRAGMENT(o)
  236. return o;
  237. }
  238. fixed4 frag(VertexOutput i) : COLOR {
  239. #if UNITY_UV_STARTS_AT_TOP
  240. float grabSign = -_ProjectionParams.x;
  241. #else
  242. float grabSign = _ProjectionParams.x;
  243. #endif
  244. i.normalDir = normalize(i.normalDir);
  245. float3x3 tangentTransform = float3x3( i.tangentDir, i.binormalDir, i.normalDir);
  246. float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
  247. /////// Normals:
  248. float2 node_1940 = i.uv0;
  249. float3 node_3 = UnpackNormal(tex2D(_Normals,TRANSFORM_TEX(node_1940.rg, _Normals)));
  250. float3 node_412_nrm_base = node_3.rgb + float3(0,0,1);
  251. float3 node_412_nrm_detail = UnpackNormal(tex2D(_SnowNormals,TRANSFORM_TEX(node_1940.rg, _SnowNormals))).rgb * float3(-1,-1,1);
  252. 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;
  253. float3 node_412 = node_412_nrm_combined;
  254. float node_94 = _SnowCoverage;
  255. float node_99 = _SnowAttenuation;
  256. float3 normalLocal = lerp(node_412,node_3.rgb,saturate(((node_94-dot(float3(0,1,0),i.normalDir))/node_99)));
  257. float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
  258. i.screenPos = float4( i.screenPos.xy / i.screenPos.w, 0, 0 );
  259. i.screenPos.y *= _ProjectionParams.x;
  260. float2 sceneUVs = float2(1,grabSign)*i.screenPos.xy*0.5+0.5;
  261. float3 lightDirection = normalize(lerp(_WorldSpaceLightPos0.xyz, _WorldSpaceLightPos0.xyz - i.posWorld.xyz,_WorldSpaceLightPos0.w));
  262. float3 halfDirection = normalize(viewDirection+lightDirection);
  263. ////// Lighting:
  264. float attenuation = LIGHT_ATTENUATION(i);
  265. float3 attenColor = attenuation * _LightColor0.xyz;
  266. /////// Diffuse:
  267. float NdotL = dot( normalDirection, lightDirection );
  268. float node_360 = saturate(((dot(float3(0,1,0),normalDirection)-node_94)/node_99));
  269. float3 node_1158 = mul( tangentTransform, viewDirection ).xyz;
  270. float4 node_1634 = _SpecSize;
  271. float node_1038 = saturate(lerp(0.1,dot(mul( tangentTransform, normalDirection ).xyz.rgb,node_1158.rgb),dot(node_1158.rgb,node_1634.rgb.rgb)));
  272. float4 node_164 = tex2D(_CurvmatureMap,TRANSFORM_TEX(node_1940.rg, _CurvmatureMap));
  273. float node_1202 = (node_1038*node_164.g);
  274. float node_1204 = pow((node_1202*node_1202),3.0);
  275. float4 node_1200 = _IceColor;
  276. float3 node_1201 = (node_1200.rgb*node_1200.a);
  277. float4 node_1011 = _SpecColor;
  278. float3 node_1041 = (pow(node_1038,node_1634.a)*node_1011.rgb);
  279. float2 node_26 = i.uv0;
  280. float node_40 = 1.0;
  281. float node_28 = _ParallaxDepth;
  282. float2 node_47 = (node_28*(node_40 - 0.5)*mul(tangentTransform, viewDirection).xy + node_26.rg);
  283. float2 node_25 = ((node_28*2.0)*(node_40 - 0.5)*mul(tangentTransform, viewDirection).xy + node_26.rg);
  284. 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
  285. float3 w = node_168*0.5; // Light wrapping
  286. float3 NdotLWrap = NdotL * ( 1.0 - w );
  287. float3 forwardLight = max(float3(0.0,0.0,0.0), NdotLWrap + w );
  288. float3 backLight = max(float3(0.0,0.0,0.0), -NdotLWrap + w ) * (node_168*0.25);
  289. float3 diffuse = (forwardLight+backLight) * attenColor;
  290. ///////// Gloss:
  291. float gloss = exp2(lerp(0.5,1,node_164.g)*10.0+1.0);
  292. ////// Specular:
  293. NdotL = max(0.0, NdotL);
  294. float2 node_1498 = (sceneUVs.rg*mul( tangentTransform, viewDirection ).xyz.rgb.rg);
  295. float3 node_1476 = (node_360*(tex2D(_PuddleMask,TRANSFORM_TEX(node_1498, _PuddleMask)).rgb*tex2D(_RainMask,TRANSFORM_TEX(node_1940.rg, _RainMask)).rgb*2.0));
  296. float3 specularColor = (node_1476+((node_1041+node_164.g)*(1.0 - node_360)*node_1011.a));
  297. float3 specular = attenColor * pow(max(0,dot(halfDirection,normalDirection)),gloss) * specularColor;
  298. float3 finalColor = 0;
  299. float3 diffuseLight = diffuse;
  300. 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);
  301. finalColor += specular;
  302. /// Final Color:
  303. return fixed4(finalColor * 1,0);
  304. }
  305. ENDCG
  306. }
  307. Pass {
  308. Name "ShadowCollector"
  309. Tags {
  310. "LightMode"="ShadowCollector"
  311. }
  312.  
  313. Fog {Mode Off}
  314. CGPROGRAM
  315. #pragma vertex vert
  316. #pragma fragment frag
  317. #define UNITY_PASS_SHADOWCOLLECTOR
  318. #define SHADOW_COLLECTOR_PASS
  319. #include "UnityCG.cginc"
  320. #include "Lighting.cginc"
  321. #pragma fragmentoption ARB_precision_hint_fastest
  322. #pragma multi_compile_shadowcollector
  323. #pragma exclude_renderers xbox360 ps3 flash
  324. #pragma target 3.0
  325. uniform float4 _BuildupMeltGlobalNoise;
  326. struct VertexInput {
  327. float4 vertex : POSITION;
  328. float3 normal : NORMAL;
  329. float4 tangent : TANGENT;
  330. };
  331. struct VertexOutput {
  332. V2F_SHADOW_COLLECTOR;
  333. float3 normalDir : TEXCOORD5;
  334. float3 tangentDir : TEXCOORD6;
  335. float3 binormalDir : TEXCOORD7;
  336. };
  337. VertexOutput vert (VertexInput v) {
  338. VertexOutput o;
  339. o.normalDir = mul(float4(v.normal,0), _World2Object).xyz;
  340. o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
  341. o.binormalDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
  342. float node_1699 = 0.0;
  343. float2 node_1697 = float2(node_1699,_BuildupMeltGlobalNoise.r);
  344. float node_1707 = saturate(dot(mul( tangentTransform, v.normal ).xyz.rgb,float3(0,1,0)));
  345. float3 node_1709 = lerp(float3(node_1699,node_1699,node_1699),float3(node_1697,node_1699),node_1707);
  346. v.vertex.xyz += mul( _Object2World, float4(node_1709,0) ).xyz.rgb;
  347. o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
  348. TRANSFER_SHADOW_COLLECTOR(o)
  349. return o;
  350. }
  351. fixed4 frag(VertexOutput i) : COLOR {
  352. i.normalDir = normalize(i.normalDir);
  353. float3x3 tangentTransform = float3x3( i.tangentDir, i.binormalDir, i.normalDir);
  354. SHADOW_COLLECTOR_FRAGMENT(i)
  355. }
  356. ENDCG
  357. }
  358. Pass {
  359. Name "ShadowCaster"
  360. Tags {
  361. "LightMode"="ShadowCaster"
  362. }
  363. Cull Off
  364. Offset 1, 1
  365.  
  366. Fog {Mode Off}
  367. CGPROGRAM
  368. #pragma vertex vert
  369. #pragma fragment frag
  370. #define UNITY_PASS_SHADOWCASTER
  371. #include "UnityCG.cginc"
  372. #include "Lighting.cginc"
  373. #pragma fragmentoption ARB_precision_hint_fastest
  374. #pragma multi_compile_shadowcaster
  375. #pragma exclude_renderers xbox360 ps3 flash
  376. #pragma target 3.0
  377. uniform float4 _BuildupMeltGlobalNoise;
  378. struct VertexInput {
  379. float4 vertex : POSITION;
  380. float3 normal : NORMAL;
  381. float4 tangent : TANGENT;
  382. };
  383. struct VertexOutput {
  384. V2F_SHADOW_CASTER;
  385. float3 normalDir : TEXCOORD1;
  386. float3 tangentDir : TEXCOORD2;
  387. float3 binormalDir : TEXCOORD3;
  388. };
  389. VertexOutput vert (VertexInput v) {
  390. VertexOutput o;
  391. o.normalDir = mul(float4(v.normal,0), _World2Object).xyz;
  392. o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
  393. o.binormalDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
  394. float node_1699 = 0.0;
  395. float2 node_1697 = float2(node_1699,_BuildupMeltGlobalNoise.r);
  396. float node_1707 = saturate(dot(mul( tangentTransform, v.normal ).xyz.rgb,float3(0,1,0)));
  397. float3 node_1709 = lerp(float3(node_1699,node_1699,node_1699),float3(node_1697,node_1699),node_1707);
  398. v.vertex.xyz += mul( _Object2World, float4(node_1709,0) ).xyz.rgb;
  399. o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
  400. TRANSFER_SHADOW_CASTER(o)
  401. return o;
  402. }
  403. fixed4 frag(VertexOutput i) : COLOR {
  404. i.normalDir = normalize(i.normalDir);
  405. float3x3 tangentTransform = float3x3( i.tangentDir, i.binormalDir, i.normalDir);
  406. SHADOW_CASTER_FRAGMENT(i)
  407. }
  408. ENDCG
  409. }
  410. }
  411. FallBack "Diffuse"
  412. CustomEditor "ShaderForgeMaterialInspector"
  413. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement