Bagserk

Masked4Color

Apr 20th, 2019
455
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Shader created with Shader Forge v1.30
  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.30;sub:START;pass:START;ps:flbk:,iptp:0,cusa:False,bamd:0,lico:1,lgpr:1,limd:3,spmd:1,trmd:0,grmd:0,uamb:True,mssp:True,bkdf:True,hqlp:True,rprd:True,enco:False,rmgx: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,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,stva:128,stmr:255,stmw:255,stcp:6,stps:0,stfa:0,stfz:0,ofsf:0,ofsu:0,f2p0:False,fnsp:False,fnfb:False;n:type:ShaderForge.SFN_Final,id:3643,x:33222,y:32751,varname:node_3643,prsc:2|diff-4488-OUT,spec-5417-OUT,gloss-2940-OUT,normal-6784-OUT,amdfl-2924-OUT,amspl-4989-OUT,difocc-166-OUT,spcocc-166-OUT;n:type:ShaderForge.SFN_Tex2d,id:2479,x:31515,y:32296,ptovrint:False,ptlb:BumpMap,ptin:_BumpMap,varname:_NormalMap,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,ntxv:3,isnm:True|UVIN-9416-UVOUT;n:type:ShaderForge.SFN_Lerp,id:6784,x:32019,y:32294,varname:node_6784,prsc:2|A-4537-OUT,B-5073-OUT,T-7768-OUT;n:type:ShaderForge.SFN_Vector3,id:4537,x:31515,y:32186,varname:node_4537,prsc:2,v1:0,v2:0,v3:1;n:type:ShaderForge.SFN_TexCoord,id:9416,x:31255,y:32296,varname:node_9416,prsc:2,uv:0;n:type:ShaderForge.SFN_Slider,id:7768,x:31335,y:32468,ptovrint:False,ptlb:Normal Intensity,ptin:_NormalIntensity,varname:_NormalIntensity,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:1,max:1;n:type:ShaderForge.SFN_Tex2d,id:5796,x:31097,y:31079,ptovrint:False,ptlb:MainTex,ptin:_MainTex,varname:_MainTex,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,ntxv:0,isnm:False;n:type:ShaderForge.SFN_Color,id:8761,x:30111,y:29615,ptovrint:False,ptlb:Color,ptin:_Color,varname:_Color,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,c1:1,c2:1,c3:1,c4:1;n:type:ShaderForge.SFN_Slider,id:2590,x:29368,y:33152,ptovrint:False,ptlb:Smoothness,ptin:_Smoothness,varname:_Smoothness,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:0.5,max:1;n:type:ShaderForge.SFN_Tex2d,id:8936,x:29236,y:31607,ptovrint:False,ptlb:MaskTex,ptin:_MaskTex,varname:_MaskTex,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,ntxv:0,isnm:False;n:type:ShaderForge.SFN_Color,id:2112,x:29932,y:30008,ptovrint:False,ptlb:Color_2,ptin:_Color_2,varname:_Color_2,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,c1:1,c2:1,c3:1,c4:1;n:type:ShaderForge.SFN_Color,id:7337,x:29935,y:30281,ptovrint:False,ptlb:Color_3,ptin:_Color_3,varname:_Color_3,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,c1:1,c2:1,c3:1,c4:1;n:type:ShaderForge.SFN_Color,id:5487,x:30111,y:29818,ptovrint:False,ptlb:SpecColor,ptin:_SpecColor,varname:_SpecColor,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,c1:0.5,c2:0.5,c3:0.5,c4:1;n:type:ShaderForge.SFN_Slider,id:8706,x:29852,y:32366,ptovrint:False,ptlb:Metallic,ptin:_Metallic,varname:_Metalness,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:0.6381867,max:1;n:type:ShaderForge.SFN_Slider,id:2473,x:29547,y:32676,ptovrint:False,ptlb:Metallic_2,ptin:_Metallic_2,varname:_Metalness_2,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:0,max:1;n:type:ShaderForge.SFN_Color,id:2847,x:30308,y:32660,ptovrint:False,ptlb:SpecColor_3,ptin:_SpecColor_3,varname:_SpecColor_3,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,c1:1,c2:1,c3:1,c4:1;n:type:ShaderForge.SFN_Slider,id:1485,x:29409,y:33295,ptovrint:False,ptlb:Smoothness_2,ptin:_Smoothness_2,varname:_Smoothness_2,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:0.5155692,max:1;n:type:ShaderForge.SFN_Tex2d,id:6196,x:29442,y:32149,ptovrint:False,ptlb:MetallicMap,ptin:_MetallicMap,varname:_MetallicMap,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,ntxv:0,isnm:False;n:type:ShaderForge.SFN_Tex2d,id:3858,x:32433,y:32911,ptovrint:False,ptlb:OcclusionMap,ptin:_OcclusionMap,varname:__OcclusionMap,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,ntxv:0,isnm:False;n:type:ShaderForge.SFN_Min,id:5598,x:29444,y:31029,varname:node_5598,prsc:2|A-6767-OUT,B-1650-OUT;n:type:ShaderForge.SFN_Add,id:1650,x:29164,y:31206,varname:node_1650,prsc:2|A-8936-R,B-8936-G,C-8936-B;n:type:ShaderForge.SFN_Vector1,id:6767,x:29209,y:31002,varname:node_6767,prsc:2,v1:1;n:type:ShaderForge.SFN_Code,id:4488,x:30703,y:29799,varname:node_4488,prsc:2,code:ZgBsAG8AYQB0ADMAIABtAF8AYwBvAGwAbwByACAAPQAgAGMALgByAGcAYgAgACoAIAAoADEAIAAtACAAYwBtAGEAcwBrACkAIAAqACAAXwBDAG8AbABvAHIAXwAyACAAKwAgACgAYwAgACoAIABfAEMAbwBsAG8AcgAgACoAIABtAGEAcwBrAC4AcgApACAAKwAgACgAYwAgACoAIABfAFMAcABlAGMAQwBvAGwAbwByAC4AcgBnAGIAIAAqACAAbQBhAHMAawAuAGcAKQAgACsAIAAoAGMAIAAqACAAXwBDAG8AbABvAHIAXwAzACAAKgAgAG0AYQBzAGsALgBiACkAOwAKAHIAZQB0AHUAcgBuACAAbQBfAGMAbwBsAG8AcgA7AAoA,output:2,fname:maskedcolor,width:1039,height:231,input:2,input:0,input:2,input:2,input:2,input:2,input:2,input_1_label:c,input_2_label:cmask,input_3_label:c_color,input_4_label:c_color_2,input_5_label:c_color_3,input_6_label:c_speccolor,input_7_label:mask|A-570-OUT,B-5598-OUT,C-8761-RGB,D-2112-RGB,E-7337-RGB,F-5487-RGB,G-4343-OUT;n:type:ShaderForge.SFN_Code,id:5417,x:30321,y:32107,varname:node_5417,prsc:2,code:aABhAGwAZgAgAG0AXwBjAG8AbABvAHIAIAA9ACAAYwBsAGEAbQBwACgAbQAuAHIAIAAqACAAKAAxACAALQAgAGMAbQBhAHMAawApACAAKgAgAGMAXwBtAGUAdABhAGwAXwAyACAAKwAgACgAbQAuAHIAIAAqACAAYwBfAG0AZQB0AGEAbAAgACoAIABtAGEAcwBrAC4AcgApACAAKwAgACgAbQAuAHIAIAAqACAAYwBfAHMAcABlAGMAYwBvAGwAbwByADMAXwBnACAAKgAgAG0AYQBzAGsALgBnACkAIAArACAAKABtAC4AcgAgACoAIABjAF8AcwBwAGUAYwBjAG8AbABvAHIAMwBfAHIAIAAqACAAbQBhAHMAawAuAGIAKQAsADAALAAxACkAOwAKAHIAZQB0AHUAcgBuACAAbQBfAGMAbwBsAG8AcgA7AAoA,output:4,fname:maskedmetal,width:1203,height:188,input:2,input:0,input:4,input:4,input:4,input:2,input:4,input_1_label:m,input_2_label:cmask,input_3_label:c_metal,input_4_label:c_metal_2,input_5_label:c_speccolor3_g,input_6_label:mask,input_7_label:c_speccolor3_r|A-2207-OUT,B-5598-OUT,C-8706-OUT,D-2473-OUT,E-2847-G,F-4343-OUT,G-2847-R;n:type:ShaderForge.SFN_Code,id:2940,x:29300,y:32876,varname:node_2940,prsc:2,code:aABhAGwAZgAgAHMAXwBjAG8AbABvAHIAIAA9ACAAYwBsAGEAbQBwACgAcwAgACoAIAAoADEAIAAtACAAYwBtAGEAcwBrACkAIAAqACAAYwBfAHMAbQBvAG8AdABoAF8AMgAgACsAIAAoACgAcwAgACoAIABjAF8AcwBtAG8AbwB0AGgAKQAgACoAIABtAGEAcwBrAC4AcgApACAAKwAgACgAKABzACAAKgAgAGMAXwBzAHAAZQBjAGMAbwBsAG8AcgAzAF8AYgApACAAKgAgAG0AYQBzAGsALgBnACkAIAArACAAKAAoAHMAIAAqACAAYwBfAHMAcABlAGMAYwBvAGwAbwByADMAXwBhACkAIAAqACAAbQBhAHMAawAuAGIAKQAsADAALAAxACkAOwAKAHIAZQB0AHUAcgBuACAAcwBfAGMAbwBsAG8AcgA7AAoA,output:4,fname:maskedgloss,width:1222,height:188,input:4,input:0,input:4,input:4,input:4,input:2,input:4,input_1_label:s,input_2_label:cmask,input_3_label:c_smooth,input_4_label:c_smooth_2,input_5_label:c_speccolor3_a,input_6_label:mask,input_7_label:c_speccolor3_b|A-4157-OUT,B-5598-OUT,C-2590-OUT,D-1485-OUT,E-2847-A,F-4343-OUT,G-2847-B;n:type:ShaderForge.SFN_Tex2d,id:5262,x:28799,y:31496,ptovrint:False,ptlb:DetailMap,ptin:_DetailMap,varname:node_5262,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,ntxv:2,isnm:False;n:type:ShaderForge.SFN_Lerp,id:570,x:31949,y:31305,varname:node_570,prsc:2|A-5796-RGB,B-2744-OUT,T-458-OUT;n:type:ShaderForge.SFN_Tex2d,id:2172,x:31097,y:31331,ptovrint:False,ptlb:DetailAlbedo,ptin:_DetailAlbedo,varname:node_2172,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,ntxv:0,isnm:False|UVIN-6216-OUT;n:type:ShaderForge.SFN_Multiply,id:2744,x:31421,y:31281,varname:node_2744,prsc:2|A-5796-RGB,B-2172-RGB;n:type:ShaderForge.SFN_Lerp,id:2207,x:29887,y:32190,varname:node_2207,prsc:2|A-6196-RGB,B-4309-OUT,T-458-OUT;n:type:ShaderForge.SFN_Tex2d,id:8473,x:29442,y:32326,ptovrint:False,ptlb:DetailMetalGloss,ptin:_DetailMetalGloss,varname:node_8473,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,ntxv:0,isnm:False|UVIN-6216-OUT;n:type:ShaderForge.SFN_Multiply,id:4309,x:29683,y:32238,varname:node_4309,prsc:2|A-6196-RGB,B-8473-RGB;n:type:ShaderForge.SFN_Lerp,id:3464,x:29852,y:32446,varname:node_3464,prsc:2|A-6196-A,B-2903-OUT,T-458-OUT;n:type:ShaderForge.SFN_Multiply,id:2903,x:29645,y:32502,varname:node_2903,prsc:2|A-6196-A,B-8473-A;n:type:ShaderForge.SFN_ComponentMask,id:4157,x:30046,y:32524,varname:node_4157,prsc:2,cc1:0,cc2:-1,cc3:-1,cc4:-1|IN-3464-OUT;n:type:ShaderForge.SFN_Tex2d,id:493,x:31480,y:32692,ptovrint:False,ptlb:DetailBump,ptin:_DetailBump,varname:node_493,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,ntxv:3,isnm:True|UVIN-6216-OUT;n:type:ShaderForge.SFN_Multiply,id:6216,x:31310,y:32601,varname:node_6216,prsc:2|A-9416-UVOUT,B-2830-OUT;n:type:ShaderForge.SFN_Slider,id:2830,x:30959,y:32746,ptovrint:False,ptlb:DetailBumpScale,ptin:_DetailBumpScale,varname:node_2830,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:30,max:100;n:type:ShaderForge.SFN_Lerp,id:5073,x:32019,y:32504,varname:node_5073,prsc:2|A-2479-RGB,B-1952-OUT,T-5262-RGB;n:type:ShaderForge.SFN_NormalBlend,id:1952,x:31900,y:32649,varname:node_1952,prsc:2|BSE-2479-RGB,DTL-4105-OUT;n:type:ShaderForge.SFN_Slider,id:2023,x:29046,y:32575,ptovrint:False,ptlb:DetailBumpStrength,ptin:_DetailBumpStrength,varname:node_2023,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:0,max:1;n:type:ShaderForge.SFN_Lerp,id:4105,x:31729,y:32622,varname:node_4105,prsc:2|A-4537-OUT,B-493-RGB,T-2023-OUT;n:type:ShaderForge.SFN_Tex2d,id:4301,x:32341,y:33254,ptovrint:False,ptlb:DetailAO,ptin:_DetailAO,varname:node_4301,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,ntxv:0,isnm:False|UVIN-6216-OUT;n:type:ShaderForge.SFN_Multiply,id:4970,x:32500,y:33157,varname:node_4970,prsc:2|A-3858-R,B-4301-R;n:type:ShaderForge.SFN_Lerp,id:1398,x:32710,y:33104,varname:node_1398,prsc:2|A-3858-R,B-4970-OUT,T-458-OUT;n:type:ShaderForge.SFN_ComponentMask,id:166,x:33040,y:33069,varname:node_166,prsc:2,cc1:0,cc2:-1,cc3:-1,cc4:-1|IN-5807-OUT;n:type:ShaderForge.SFN_Multiply,id:458,x:29409,y:32613,varname:node_458,prsc:2|A-5262-RGB,B-2023-OUT;n:type:ShaderForge.SFN_Slider,id:4989,x:32764,y:33012,ptovrint:False,ptlb:SpecularAmbientLight,ptin:_SpecularAmbientLight,varname:node_4989,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:-1,cur:0,max:1;n:type:ShaderForge.SFN_Slider,id:2924,x:32764,y:32925,ptovrint:False,ptlb:DiffuseAmbientLight,ptin:_DiffuseAmbientLight,varname:node_2924,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:-1,cur:0,max:1;n:type:ShaderForge.SFN_Slider,id:8851,x:32517,y:33424,ptovrint:False,ptlb:OcclusionStrength,ptin:_OcclusionStrength,varname:node_8851,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:1,max:1;n:type:ShaderForge.SFN_Lerp,id:5807,x:32950,y:33233,varname:node_5807,prsc:2|A-9743-OUT,B-1398-OUT,T-8851-OUT;n:type:ShaderForge.SFN_Vector1,id:9743,x:32724,y:33288,varname:node_9743,prsc:2,v1:1;n:type:ShaderForge.SFN_Slider,id:7533,x:29345,y:31355,ptovrint:False,ptlb:MaskStrength,ptin:_MaskStrength,varname:node_7533,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:1,max:1;n:type:ShaderForge.SFN_Color,id:6253,x:29404,y:31196,ptovrint:False,ptlb:MaskColor,ptin:_MaskColor,varname:node_6253,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,c1:1,c2:0,c3:0,c4:1;n:type:ShaderForge.SFN_Lerp,id:5561,x:29919,y:30944,varname:node_5561,prsc:2|A-8510-OUT,B-8475-OUT,T-7533-OUT;n:type:ShaderForge.SFN_Vector4,id:8510,x:29496,y:30921,varname:node_8510,prsc:2,v1:0,v2:0,v3:0,v4:0;n:type:ShaderForge.SFN_Multiply,id:8475,x:29668,y:31286,varname:node_8475,prsc:2|A-6253-RGB,B-8936-RGB;n:type:ShaderForge.SFN_ComponentMask,id:4343,x:30124,y:30944,varname:node_4343,prsc:2,cc1:0,cc2:1,cc3:2,cc4:-1|IN-5561-OUT;n:type:ShaderForge.SFN_Lerp,id:7444,x:30908,y:30308,varname:node_7444,prsc:2|A-5796-RGB,B-9758-OUT,T-4343-R;n:type:ShaderForge.SFN_Multiply,id:9758,x:30719,y:30156,varname:node_9758,prsc:2|A-8761-RGB,B-5796-RGB;proporder:8761-5796-2590-2479-7768-2112-7337-5487-8706-2847-2473-1485-8936-6196-3858-5262-2172-8473-493-2830-2023-4301-4989-2924-8851-7533-6253;pass:END;sub:END;*/
  5.  
  6. Shader "HSShaderForge/Masked4Color" {
  7.     Properties {
  8.         _Color ("Color", Color) = (1,1,1,1)
  9.         _MainTex ("MainTex", 2D) = "white" {}
  10.         _Smoothness ("Smoothness", Range(0, 1)) = 0.5
  11.         _BumpMap ("BumpMap", 2D) = "bump" {}
  12.         _NormalIntensity ("Normal Intensity", Range(0, 1)) = 1
  13.         _Color_2 ("Color_2", Color) = (1,1,1,1)
  14.         _Color_3 ("Color_3", Color) = (1,1,1,1)
  15.         _SpecColor ("SpecColor", Color) = (0.5,0.5,0.5,1)
  16.         _Metallic ("Metallic", Range(0, 1)) = 0.6381867
  17.         _SpecColor_3 ("SpecColor_3", Color) = (1,1,1,1)
  18.         _Metallic_2 ("Metallic_2", Range(0, 1)) = 0
  19.         _Smoothness_2 ("Smoothness_2", Range(0, 1)) = 0.5155692
  20.         _MaskTex ("MaskTex", 2D) = "white" {}
  21.         _MetallicMap ("MetallicMap", 2D) = "white" {}
  22.         _OcclusionMap ("OcclusionMap", 2D) = "white" {}
  23.         _DetailMap ("DetailMap", 2D) = "black" {}
  24.         _DetailAlbedo ("DetailAlbedo", 2D) = "white" {}
  25.         _DetailMetalGloss ("DetailMetalGloss", 2D) = "white" {}
  26.         _DetailBump ("DetailBump", 2D) = "bump" {}
  27.         _DetailBumpScale ("DetailBumpScale", Range(0, 100)) = 30
  28.         _DetailBumpStrength ("DetailBumpStrength", Range(0, 1)) = 0
  29.         _DetailAO ("DetailAO", 2D) = "white" {}
  30.         _SpecularAmbientLight ("SpecularAmbientLight", Range(-1, 1)) = 0
  31.         _DiffuseAmbientLight ("DiffuseAmbientLight", Range(-1, 1)) = 0
  32.         _OcclusionStrength ("OcclusionStrength", Range(0, 1)) = 1
  33.         _MaskStrength ("MaskStrength", Range(0, 1)) = 1
  34.         _MaskColor ("MaskColor", Color) = (1,0,0,1)
  35.     }
  36.     SubShader {
  37.         Tags {
  38.             "RenderType"="Opaque"
  39.         }
  40.         Pass {
  41.             Name "FORWARD"
  42.             Tags {
  43.                 "LightMode"="ForwardBase"
  44.             }
  45.            
  46.            
  47.             CGPROGRAM
  48.             #pragma vertex vert
  49.             #pragma fragment frag
  50.             #define UNITY_PASS_FORWARDBASE
  51.             #define SHOULD_SAMPLE_SH ( defined (LIGHTMAP_OFF) && defined(DYNAMICLIGHTMAP_OFF) )
  52.             #define _GLOSSYENV 1
  53.             #include "UnityCG.cginc"
  54.             #include "AutoLight.cginc"
  55.             #include "Lighting.cginc"
  56.             #include "UnityPBSLighting.cginc"
  57.             #include "UnityStandardBRDF.cginc"
  58.             #pragma multi_compile_fwdbase_fullshadows
  59.             #pragma multi_compile LIGHTMAP_OFF LIGHTMAP_ON
  60.             #pragma multi_compile DIRLIGHTMAP_OFF DIRLIGHTMAP_COMBINED DIRLIGHTMAP_SEPARATE
  61.             #pragma multi_compile DYNAMICLIGHTMAP_OFF DYNAMICLIGHTMAP_ON
  62.             #pragma multi_compile_fog
  63.             #pragma exclude_renderers opengl gles gles3 metal d3d11_9x xbox360 xboxone ps3 ps4 psp2
  64.             #pragma target 3.0
  65.             uniform sampler2D _BumpMap; uniform float4 _BumpMap_ST;
  66.             uniform float _NormalIntensity;
  67.             uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
  68.             uniform float4 _Color;
  69.             uniform float _Smoothness;
  70.             uniform sampler2D _MaskTex; uniform float4 _MaskTex_ST;
  71.             uniform float4 _Color_2;
  72.             uniform float4 _Color_3;
  73.             uniform float _Metallic;
  74.             uniform float _Metallic_2;
  75.             uniform float4 _SpecColor_3;
  76.             uniform float _Smoothness_2;
  77.             uniform sampler2D _MetallicMap; uniform float4 _MetallicMap_ST;
  78.             uniform sampler2D _OcclusionMap; uniform float4 _OcclusionMap_ST;
  79.             float3 maskedcolor( float3 c , float cmask , float3 c_color , float3 c_color_2 , float3 c_color_3 , float3 c_speccolor , float3 mask ){
  80.             float3 m_color = c.rgb * (1 - cmask) * _Color_2 + (c * _Color * mask.r) + (c * _SpecColor.rgb * mask.g) + (c * _Color_3 * mask.b);
  81.             return m_color;
  82.            
  83.             }
  84.            
  85.             half maskedmetal( float3 m , float cmask , half c_metal , half c_metal_2 , half c_speccolor3_g , float3 mask , half c_speccolor3_r ){
  86.             half m_color = clamp(m.r * (1 - cmask) * c_metal_2 + (m.r * c_metal * mask.r) + (m.r * c_speccolor3_g * mask.g) + (m.r * c_speccolor3_r * mask.b),0,1);
  87.             return m_color;
  88.            
  89.             }
  90.            
  91.             half maskedgloss( half s , float cmask , half c_smooth , half c_smooth_2 , half c_speccolor3_a , float3 mask , half c_speccolor3_b ){
  92.             half s_color = clamp(s * (1 - cmask) * c_smooth_2 + ((s * c_smooth) * mask.r) + ((s * c_speccolor3_b) * mask.g) + ((s * c_speccolor3_a) * mask.b),0,1);
  93.             return s_color;
  94.            
  95.             }
  96.            
  97.             uniform sampler2D _DetailMap; uniform float4 _DetailMap_ST;
  98.             uniform sampler2D _DetailAlbedo; uniform float4 _DetailAlbedo_ST;
  99.             uniform sampler2D _DetailMetalGloss; uniform float4 _DetailMetalGloss_ST;
  100.             uniform sampler2D _DetailBump; uniform float4 _DetailBump_ST;
  101.             uniform float _DetailBumpScale;
  102.             uniform float _DetailBumpStrength;
  103.             uniform sampler2D _DetailAO; uniform float4 _DetailAO_ST;
  104.             uniform float _SpecularAmbientLight;
  105.             uniform float _DiffuseAmbientLight;
  106.             uniform float _OcclusionStrength;
  107.             uniform float _MaskStrength;
  108.             uniform float4 _MaskColor;
  109.             struct VertexInput {
  110.                 float4 vertex : POSITION;
  111.                 float3 normal : NORMAL;
  112.                 float4 tangent : TANGENT;
  113.                 float2 texcoord0 : TEXCOORD0;
  114.                 float2 texcoord1 : TEXCOORD1;
  115.                 float2 texcoord2 : TEXCOORD2;
  116.             };
  117.             struct VertexOutput {
  118.                 float4 pos : SV_POSITION;
  119.                 float2 uv0 : TEXCOORD0;
  120.                 float2 uv1 : TEXCOORD1;
  121.                 float2 uv2 : TEXCOORD2;
  122.                 float4 posWorld : TEXCOORD3;
  123.                 float3 normalDir : TEXCOORD4;
  124.                 float3 tangentDir : TEXCOORD5;
  125.                 float3 bitangentDir : TEXCOORD6;
  126.                 LIGHTING_COORDS(7,8)
  127.                 UNITY_FOG_COORDS(9)
  128.                 #if defined(LIGHTMAP_ON) || defined(UNITY_SHOULD_SAMPLE_SH)
  129.                     float4 ambientOrLightmapUV : TEXCOORD10;
  130.                 #endif
  131.             };
  132.             VertexOutput vert (VertexInput v) {
  133.                 VertexOutput o = (VertexOutput)0;
  134.                 o.uv0 = v.texcoord0;
  135.                 o.uv1 = v.texcoord1;
  136.                 o.uv2 = v.texcoord2;
  137.                 #ifdef LIGHTMAP_ON
  138.                     o.ambientOrLightmapUV.xy = v.texcoord1.xy * unity_LightmapST.xy + unity_LightmapST.zw;
  139.                     o.ambientOrLightmapUV.zw = 0;
  140.                 #endif
  141.                 #ifdef DYNAMICLIGHTMAP_ON
  142.                     o.ambientOrLightmapUV.zw = v.texcoord2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw;
  143.                 #endif
  144.                 o.normalDir = UnityObjectToWorldNormal(v.normal);
  145.                 o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
  146.                 o.bitangentDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
  147.                 o.posWorld = mul(_Object2World, v.vertex);
  148.                 float3 lightColor = _LightColor0.rgb;
  149.                 o.pos = mul(UNITY_MATRIX_MVP, v.vertex );
  150.                 UNITY_TRANSFER_FOG(o,o.pos);
  151.                 TRANSFER_VERTEX_TO_FRAGMENT(o)
  152.                 return o;
  153.             }
  154.             float4 frag(VertexOutput i) : COLOR {
  155.                 i.normalDir = normalize(i.normalDir);
  156.                 float3x3 tangentTransform = float3x3( i.tangentDir, i.bitangentDir, i.normalDir);
  157.                 float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
  158.                 float3 node_4537 = float3(0,0,1);
  159.                 float3 _BumpMap_var = UnpackNormal(tex2D(_BumpMap,TRANSFORM_TEX(i.uv0, _BumpMap)));
  160.                 float2 node_6216 = (i.uv0*_DetailBumpScale);
  161.                 float3 _DetailBump_var = UnpackNormal(tex2D(_DetailBump,TRANSFORM_TEX(node_6216, _DetailBump)));
  162.                 float3 node_1952_nrm_base = _BumpMap_var.rgb + float3(0,0,1);
  163.                 float3 node_1952_nrm_detail = lerp(node_4537,_DetailBump_var.rgb,_DetailBumpStrength) * float3(-1,-1,1);
  164.                 float3 node_1952_nrm_combined = node_1952_nrm_base*dot(node_1952_nrm_base, node_1952_nrm_detail)/node_1952_nrm_base.z - node_1952_nrm_detail;
  165.                 float3 node_1952 = node_1952_nrm_combined;
  166.                 float4 _DetailMap_var = tex2D(_DetailMap,TRANSFORM_TEX(i.uv0, _DetailMap));
  167.                 float3 normalLocal = lerp(node_4537,lerp(_BumpMap_var.rgb,node_1952,_DetailMap_var.rgb),_NormalIntensity);
  168.                 float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
  169.                 float3 viewReflectDirection = reflect( -viewDirection, normalDirection );
  170.                 float3 lightDirection = normalize(_WorldSpaceLightPos0.xyz);
  171.                 float3 lightColor = _LightColor0.rgb;
  172.                 float3 halfDirection = normalize(viewDirection+lightDirection);
  173. ////// Lighting:
  174.                 float attenuation = LIGHT_ATTENUATION(i);
  175.                 float3 attenColor = attenuation * _LightColor0.xyz;
  176.                 float Pi = 3.141592654;
  177.                 float InvPi = 0.31830988618;
  178. ///////// Gloss:
  179.                 float4 _MetallicMap_var = tex2D(_MetallicMap,TRANSFORM_TEX(i.uv0, _MetallicMap));
  180.                 float4 _DetailMetalGloss_var = tex2D(_DetailMetalGloss,TRANSFORM_TEX(node_6216, _DetailMetalGloss));
  181.                 float node_2903 = (_MetallicMap_var.a*_DetailMetalGloss_var.a);
  182.                 float3 node_458 = (_DetailMap_var.rgb*_DetailBumpStrength);
  183.                 float4 _MaskTex_var = tex2D(_MaskTex,TRANSFORM_TEX(i.uv0, _MaskTex));
  184.                 float node_5598 = min(1.0,(_MaskTex_var.r+_MaskTex_var.g+_MaskTex_var.b));
  185.                 float3 node_4343 = lerp(float4(0,0,0,0),float4((_MaskColor.rgb*_MaskTex_var.rgb),0.0),_MaskStrength).rgb;
  186.                 float gloss = maskedgloss( lerp(float3(_MetallicMap_var.a,_MetallicMap_var.a,_MetallicMap_var.a),float3(node_2903,node_2903,node_2903),node_458).r , node_5598 , _Smoothness , _Smoothness_2 , _SpecColor_3.a , node_4343 , _SpecColor_3.b );
  187.                 float specPow = exp2( gloss * 10.0+1.0);
  188. /////// GI Data:
  189.                 UnityLight light;
  190.                 #ifdef LIGHTMAP_OFF
  191.                     light.color = lightColor;
  192.                     light.dir = lightDirection;
  193.                     light.ndotl = LambertTerm (normalDirection, light.dir);
  194.                 #else
  195.                     light.color = half3(0.f, 0.f, 0.f);
  196.                     light.ndotl = 0.0f;
  197.                     light.dir = half3(0.f, 0.f, 0.f);
  198.                 #endif
  199.                 UnityGIInput d;
  200.                 d.light = light;
  201.                 d.worldPos = i.posWorld.xyz;
  202.                 d.worldViewDir = viewDirection;
  203.                 d.atten = attenuation;
  204.                 #if defined(LIGHTMAP_ON) || defined(DYNAMICLIGHTMAP_ON)
  205.                     d.ambient = 0;
  206.                     d.lightmapUV = i.ambientOrLightmapUV;
  207.                 #else
  208.                     d.ambient = i.ambientOrLightmapUV;
  209.                 #endif
  210.                 d.boxMax[0] = unity_SpecCube0_BoxMax;
  211.                 d.boxMin[0] = unity_SpecCube0_BoxMin;
  212.                 d.probePosition[0] = unity_SpecCube0_ProbePosition;
  213.                 d.probeHDR[0] = unity_SpecCube0_HDR;
  214.                 d.boxMax[1] = unity_SpecCube1_BoxMax;
  215.                 d.boxMin[1] = unity_SpecCube1_BoxMin;
  216.                 d.probePosition[1] = unity_SpecCube1_ProbePosition;
  217.                 d.probeHDR[1] = unity_SpecCube1_HDR;
  218.                 Unity_GlossyEnvironmentData ugls_en_data;
  219.                 ugls_en_data.roughness = 1.0 - gloss;
  220.                 ugls_en_data.reflUVW = viewReflectDirection;
  221.                 UnityGI gi = UnityGlobalIllumination(d, 1, normalDirection, ugls_en_data );
  222.                 lightDirection = gi.light.dir;
  223.                 lightColor = gi.light.color;
  224. ////// Specular:
  225.                 float NdotL = max(0, dot( normalDirection, lightDirection ));
  226.                 float node_9743 = 1.0;
  227.                 float4 _OcclusionMap_var = tex2D(_OcclusionMap,TRANSFORM_TEX(i.uv0, _OcclusionMap));
  228.                 float4 _DetailAO_var = tex2D(_DetailAO,TRANSFORM_TEX(node_6216, _DetailAO));
  229.                 float node_4970 = (_OcclusionMap_var.r*_DetailAO_var.r);
  230.                 float node_166 = lerp(float3(node_9743,node_9743,node_9743),lerp(float3(_OcclusionMap_var.r,_OcclusionMap_var.r,_OcclusionMap_var.r),float3(node_4970,node_4970,node_4970),node_458),_OcclusionStrength).r;
  231.                 float3 specularAO = node_166;
  232.                 float LdotH = max(0.0,dot(lightDirection, halfDirection));
  233.                 float3 specularColor = maskedmetal( lerp(_MetallicMap_var.rgb,(_MetallicMap_var.rgb*_DetailMetalGloss_var.rgb),node_458) , node_5598 , _Metallic , _Metallic_2 , _SpecColor_3.g , node_4343 , _SpecColor_3.r );
  234.                 float specularMonochrome;
  235.                 float4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex));
  236.                 float4 _DetailAlbedo_var = tex2D(_DetailAlbedo,TRANSFORM_TEX(node_6216, _DetailAlbedo));
  237.                 float3 diffuseColor = maskedcolor( lerp(_MainTex_var.rgb,(_MainTex_var.rgb*_DetailAlbedo_var.rgb),node_458) , node_5598 , _Color.rgb , _Color_2.rgb , _Color_3.rgb , _SpecColor.rgb , node_4343 ); // Need this for specular when using metallic
  238.                 diffuseColor = DiffuseAndSpecularFromMetallic( diffuseColor, specularColor, specularColor, specularMonochrome );
  239.                 specularMonochrome = 1.0-specularMonochrome;
  240.                 float NdotV = max(0.0,dot( normalDirection, viewDirection ));
  241.                 float NdotH = max(0.0,dot( normalDirection, halfDirection ));
  242.                 float VdotH = max(0.0,dot( viewDirection, halfDirection ));
  243.                 float visTerm = SmithJointGGXVisibilityTerm( NdotL, NdotV, 1.0-gloss );
  244.                 float normTerm = max(0.0, GGXTerm(NdotH, 1.0-gloss));
  245.                 float specularPBL = (NdotL*visTerm*normTerm) * (UNITY_PI / 4);
  246.                 if (IsGammaSpace())
  247.                     specularPBL = sqrt(max(1e-4h, specularPBL));
  248.                 specularPBL = max(0, specularPBL * NdotL);
  249.                 float3 directSpecular = (floor(attenuation) * _LightColor0.xyz)*specularPBL*FresnelTerm(specularColor, LdotH);
  250.                 half grazingTerm = saturate( gloss + specularMonochrome );
  251.                 float3 indirectSpecular = (gi.indirect.specular + float3(_SpecularAmbientLight,_SpecularAmbientLight,_SpecularAmbientLight)) * specularAO;
  252.                 indirectSpecular *= FresnelLerp (specularColor, grazingTerm, NdotV);
  253.                 float3 specular = (directSpecular + indirectSpecular);
  254. /////// Diffuse:
  255.                 NdotL = max(0.0,dot( normalDirection, lightDirection ));
  256.                 half fd90 = 0.5 + 2 * LdotH * LdotH * (1-gloss);
  257.                 float nlPow5 = Pow5(1-NdotL);
  258.                 float nvPow5 = Pow5(1-NdotV);
  259.                 float3 directDiffuse = ((1 +(fd90 - 1)*nlPow5) * (1 + (fd90 - 1)*nvPow5) * NdotL) * attenColor;
  260.                 float3 indirectDiffuse = float3(0,0,0);
  261.                 indirectDiffuse += float3(_DiffuseAmbientLight,_DiffuseAmbientLight,_DiffuseAmbientLight); // Diffuse Ambient Light
  262.                 indirectDiffuse += gi.indirect.diffuse;
  263.                 indirectDiffuse *= node_166; // Diffuse AO
  264.                 float3 diffuse = (directDiffuse + indirectDiffuse) * diffuseColor;
  265. /// Final Color:
  266.                 float3 finalColor = diffuse + specular;
  267.                 fixed4 finalRGBA = fixed4(finalColor,1);
  268.                 UNITY_APPLY_FOG(i.fogCoord, finalRGBA);
  269.                 return finalRGBA;
  270.             }
  271.             ENDCG
  272.         }
  273.         Pass {
  274.             Name "FORWARD_DELTA"
  275.             Tags {
  276.                 "LightMode"="ForwardAdd"
  277.             }
  278.             Blend One One
  279.            
  280.            
  281.             CGPROGRAM
  282.             #pragma vertex vert
  283.             #pragma fragment frag
  284.             #define UNITY_PASS_FORWARDADD
  285.             #define SHOULD_SAMPLE_SH ( defined (LIGHTMAP_OFF) && defined(DYNAMICLIGHTMAP_OFF) )
  286.             #define _GLOSSYENV 1
  287.             #include "UnityCG.cginc"
  288.             #include "AutoLight.cginc"
  289.             #include "Lighting.cginc"
  290.             #include "UnityPBSLighting.cginc"
  291.             #include "UnityStandardBRDF.cginc"
  292.             #pragma multi_compile_fwdadd_fullshadows
  293.             #pragma multi_compile LIGHTMAP_OFF LIGHTMAP_ON
  294.             #pragma multi_compile DIRLIGHTMAP_OFF DIRLIGHTMAP_COMBINED DIRLIGHTMAP_SEPARATE
  295.             #pragma multi_compile DYNAMICLIGHTMAP_OFF DYNAMICLIGHTMAP_ON
  296.             #pragma multi_compile_fog
  297.             #pragma exclude_renderers opengl gles gles3 metal d3d11_9x xbox360 xboxone ps3 ps4 psp2
  298.             #pragma target 3.0
  299.             uniform sampler2D _BumpMap; uniform float4 _BumpMap_ST;
  300.             uniform float _NormalIntensity;
  301.             uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
  302.             uniform float4 _Color;
  303.             uniform float _Smoothness;
  304.             uniform sampler2D _MaskTex; uniform float4 _MaskTex_ST;
  305.             uniform float4 _Color_2;
  306.             uniform float4 _Color_3;
  307.             uniform float _Metallic;
  308.             uniform float _Metallic_2;
  309.             uniform float4 _SpecColor_3;
  310.             uniform float _Smoothness_2;
  311.             uniform sampler2D _MetallicMap; uniform float4 _MetallicMap_ST;
  312.             float3 maskedcolor( float3 c , float cmask , float3 c_color , float3 c_color_2 , float3 c_color_3 , float3 c_speccolor , float3 mask ){
  313.             float3 m_color = c.rgb * (1 - cmask) * _Color_2 + (c * _Color * mask.r) + (c * _SpecColor.rgb * mask.g) + (c * _Color_3 * mask.b);
  314.             return m_color;
  315.            
  316.             }
  317.            
  318.             half maskedmetal( float3 m , float cmask , half c_metal , half c_metal_2 , half c_speccolor3_g , float3 mask , half c_speccolor3_r ){
  319.             half m_color = clamp(m.r * (1 - cmask) * c_metal_2 + (m.r * c_metal * mask.r) + (m.r * c_speccolor3_g * mask.g) + (m.r * c_speccolor3_r * mask.b),0,1);
  320.             return m_color;
  321.            
  322.             }
  323.            
  324.             half maskedgloss( half s , float cmask , half c_smooth , half c_smooth_2 , half c_speccolor3_a , float3 mask , half c_speccolor3_b ){
  325.             half s_color = clamp(s * (1 - cmask) * c_smooth_2 + ((s * c_smooth) * mask.r) + ((s * c_speccolor3_b) * mask.g) + ((s * c_speccolor3_a) * mask.b),0,1);
  326.             return s_color;
  327.            
  328.             }
  329.            
  330.             uniform sampler2D _DetailMap; uniform float4 _DetailMap_ST;
  331.             uniform sampler2D _DetailAlbedo; uniform float4 _DetailAlbedo_ST;
  332.             uniform sampler2D _DetailMetalGloss; uniform float4 _DetailMetalGloss_ST;
  333.             uniform sampler2D _DetailBump; uniform float4 _DetailBump_ST;
  334.             uniform float _DetailBumpScale;
  335.             uniform float _DetailBumpStrength;
  336.             uniform float _MaskStrength;
  337.             uniform float4 _MaskColor;
  338.             struct VertexInput {
  339.                 float4 vertex : POSITION;
  340.                 float3 normal : NORMAL;
  341.                 float4 tangent : TANGENT;
  342.                 float2 texcoord0 : TEXCOORD0;
  343.                 float2 texcoord1 : TEXCOORD1;
  344.                 float2 texcoord2 : TEXCOORD2;
  345.             };
  346.             struct VertexOutput {
  347.                 float4 pos : SV_POSITION;
  348.                 float2 uv0 : TEXCOORD0;
  349.                 float2 uv1 : TEXCOORD1;
  350.                 float2 uv2 : TEXCOORD2;
  351.                 float4 posWorld : TEXCOORD3;
  352.                 float3 normalDir : TEXCOORD4;
  353.                 float3 tangentDir : TEXCOORD5;
  354.                 float3 bitangentDir : TEXCOORD6;
  355.                 LIGHTING_COORDS(7,8)
  356.                 UNITY_FOG_COORDS(9)
  357.             };
  358.             VertexOutput vert (VertexInput v) {
  359.                 VertexOutput o = (VertexOutput)0;
  360.                 o.uv0 = v.texcoord0;
  361.                 o.uv1 = v.texcoord1;
  362.                 o.uv2 = v.texcoord2;
  363.                 o.normalDir = UnityObjectToWorldNormal(v.normal);
  364.                 o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
  365.                 o.bitangentDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
  366.                 o.posWorld = mul(_Object2World, v.vertex);
  367.                 float3 lightColor = _LightColor0.rgb;
  368.                 o.pos = mul(UNITY_MATRIX_MVP, v.vertex );
  369.                 UNITY_TRANSFER_FOG(o,o.pos);
  370.                 TRANSFER_VERTEX_TO_FRAGMENT(o)
  371.                 return o;
  372.             }
  373.             float4 frag(VertexOutput i) : COLOR {
  374.                 i.normalDir = normalize(i.normalDir);
  375.                 float3x3 tangentTransform = float3x3( i.tangentDir, i.bitangentDir, i.normalDir);
  376.                 float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
  377.                 float3 node_4537 = float3(0,0,1);
  378.                 float3 _BumpMap_var = UnpackNormal(tex2D(_BumpMap,TRANSFORM_TEX(i.uv0, _BumpMap)));
  379.                 float2 node_6216 = (i.uv0*_DetailBumpScale);
  380.                 float3 _DetailBump_var = UnpackNormal(tex2D(_DetailBump,TRANSFORM_TEX(node_6216, _DetailBump)));
  381.                 float3 node_1952_nrm_base = _BumpMap_var.rgb + float3(0,0,1);
  382.                 float3 node_1952_nrm_detail = lerp(node_4537,_DetailBump_var.rgb,_DetailBumpStrength) * float3(-1,-1,1);
  383.                 float3 node_1952_nrm_combined = node_1952_nrm_base*dot(node_1952_nrm_base, node_1952_nrm_detail)/node_1952_nrm_base.z - node_1952_nrm_detail;
  384.                 float3 node_1952 = node_1952_nrm_combined;
  385.                 float4 _DetailMap_var = tex2D(_DetailMap,TRANSFORM_TEX(i.uv0, _DetailMap));
  386.                 float3 normalLocal = lerp(node_4537,lerp(_BumpMap_var.rgb,node_1952,_DetailMap_var.rgb),_NormalIntensity);
  387.                 float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
  388.                 float3 lightDirection = normalize(lerp(_WorldSpaceLightPos0.xyz, _WorldSpaceLightPos0.xyz - i.posWorld.xyz,_WorldSpaceLightPos0.w));
  389.                 float3 lightColor = _LightColor0.rgb;
  390.                 float3 halfDirection = normalize(viewDirection+lightDirection);
  391. ////// Lighting:
  392.                 float attenuation = LIGHT_ATTENUATION(i);
  393.                 float3 attenColor = attenuation * _LightColor0.xyz;
  394.                 float Pi = 3.141592654;
  395.                 float InvPi = 0.31830988618;
  396. ///////// Gloss:
  397.                 float4 _MetallicMap_var = tex2D(_MetallicMap,TRANSFORM_TEX(i.uv0, _MetallicMap));
  398.                 float4 _DetailMetalGloss_var = tex2D(_DetailMetalGloss,TRANSFORM_TEX(node_6216, _DetailMetalGloss));
  399.                 float node_2903 = (_MetallicMap_var.a*_DetailMetalGloss_var.a);
  400.                 float3 node_458 = (_DetailMap_var.rgb*_DetailBumpStrength);
  401.                 float4 _MaskTex_var = tex2D(_MaskTex,TRANSFORM_TEX(i.uv0, _MaskTex));
  402.                 float node_5598 = min(1.0,(_MaskTex_var.r+_MaskTex_var.g+_MaskTex_var.b));
  403.                 float3 node_4343 = lerp(float4(0,0,0,0),float4((_MaskColor.rgb*_MaskTex_var.rgb),0.0),_MaskStrength).rgb;
  404.                 float gloss = maskedgloss( lerp(float3(_MetallicMap_var.a,_MetallicMap_var.a,_MetallicMap_var.a),float3(node_2903,node_2903,node_2903),node_458).r , node_5598 , _Smoothness , _Smoothness_2 , _SpecColor_3.a , node_4343 , _SpecColor_3.b );
  405.                 float specPow = exp2( gloss * 10.0+1.0);
  406. ////// Specular:
  407.                 float NdotL = max(0, dot( normalDirection, lightDirection ));
  408.                 float LdotH = max(0.0,dot(lightDirection, halfDirection));
  409.                 float3 specularColor = maskedmetal( lerp(_MetallicMap_var.rgb,(_MetallicMap_var.rgb*_DetailMetalGloss_var.rgb),node_458) , node_5598 , _Metallic , _Metallic_2 , _SpecColor_3.g , node_4343 , _SpecColor_3.r );
  410.                 float specularMonochrome;
  411.                 float4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex));
  412.                 float4 _DetailAlbedo_var = tex2D(_DetailAlbedo,TRANSFORM_TEX(node_6216, _DetailAlbedo));
  413.                 float3 diffuseColor = maskedcolor( lerp(_MainTex_var.rgb,(_MainTex_var.rgb*_DetailAlbedo_var.rgb),node_458) , node_5598 , _Color.rgb , _Color_2.rgb , _Color_3.rgb , _SpecColor.rgb , node_4343 ); // Need this for specular when using metallic
  414.                 diffuseColor = DiffuseAndSpecularFromMetallic( diffuseColor, specularColor, specularColor, specularMonochrome );
  415.                 specularMonochrome = 1.0-specularMonochrome;
  416.                 float NdotV = max(0.0,dot( normalDirection, viewDirection ));
  417.                 float NdotH = max(0.0,dot( normalDirection, halfDirection ));
  418.                 float VdotH = max(0.0,dot( viewDirection, halfDirection ));
  419.                 float visTerm = SmithJointGGXVisibilityTerm( NdotL, NdotV, 1.0-gloss );
  420.                 float normTerm = max(0.0, GGXTerm(NdotH, 1.0-gloss));
  421.                 float specularPBL = (NdotL*visTerm*normTerm) * (UNITY_PI / 4);
  422.                 if (IsGammaSpace())
  423.                     specularPBL = sqrt(max(1e-4h, specularPBL));
  424.                 specularPBL = max(0, specularPBL * NdotL);
  425.                 float3 directSpecular = attenColor*specularPBL*FresnelTerm(specularColor, LdotH);
  426.                 float3 specular = directSpecular;
  427. /////// Diffuse:
  428.                 NdotL = max(0.0,dot( normalDirection, lightDirection ));
  429.                 half fd90 = 0.5 + 2 * LdotH * LdotH * (1-gloss);
  430.                 float nlPow5 = Pow5(1-NdotL);
  431.                 float nvPow5 = Pow5(1-NdotV);
  432.                 float3 directDiffuse = ((1 +(fd90 - 1)*nlPow5) * (1 + (fd90 - 1)*nvPow5) * NdotL) * attenColor;
  433.                 float3 diffuse = directDiffuse * diffuseColor;
  434. /// Final Color:
  435.                 float3 finalColor = diffuse + specular;
  436.                 fixed4 finalRGBA = fixed4(finalColor * 1,0);
  437.                 UNITY_APPLY_FOG(i.fogCoord, finalRGBA);
  438.                 return finalRGBA;
  439.             }
  440.             ENDCG
  441.         }
  442.         Pass {
  443.             Name "Meta"
  444.             Tags {
  445.                 "LightMode"="Meta"
  446.             }
  447.             Cull Off
  448.            
  449.             CGPROGRAM
  450.             #pragma vertex vert
  451.             #pragma fragment frag
  452.             #define UNITY_PASS_META 1
  453.             #define SHOULD_SAMPLE_SH ( defined (LIGHTMAP_OFF) && defined(DYNAMICLIGHTMAP_OFF) )
  454.             #define _GLOSSYENV 1
  455.             #include "UnityCG.cginc"
  456.             #include "Lighting.cginc"
  457.             #include "UnityPBSLighting.cginc"
  458.             #include "UnityStandardBRDF.cginc"
  459.             #include "UnityMetaPass.cginc"
  460.             #pragma fragmentoption ARB_precision_hint_fastest
  461.             #pragma multi_compile_shadowcaster
  462.             #pragma multi_compile LIGHTMAP_OFF LIGHTMAP_ON
  463.             #pragma multi_compile DIRLIGHTMAP_OFF DIRLIGHTMAP_COMBINED DIRLIGHTMAP_SEPARATE
  464.             #pragma multi_compile DYNAMICLIGHTMAP_OFF DYNAMICLIGHTMAP_ON
  465.             #pragma multi_compile_fog
  466.             #pragma exclude_renderers opengl gles gles3 metal d3d11_9x xbox360 xboxone ps3 ps4 psp2
  467.             #pragma target 3.0
  468.             uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
  469.             uniform float4 _Color;
  470.             uniform float _Smoothness;
  471.             uniform sampler2D _MaskTex; uniform float4 _MaskTex_ST;
  472.             uniform float4 _Color_2;
  473.             uniform float4 _Color_3;
  474.             uniform float _Metallic;
  475.             uniform float _Metallic_2;
  476.             uniform float4 _SpecColor_3;
  477.             uniform float _Smoothness_2;
  478.             uniform sampler2D _MetallicMap; uniform float4 _MetallicMap_ST;
  479.             float3 maskedcolor( float3 c , float cmask , float3 c_color , float3 c_color_2 , float3 c_color_3 , float3 c_speccolor , float3 mask ){
  480.             float3 m_color = c.rgb * (1 - cmask) * _Color_2 + (c * _Color * mask.r) + (c * _SpecColor.rgb * mask.g) + (c * _Color_3 * mask.b);
  481.             return m_color;
  482.            
  483.             }
  484.            
  485.             half maskedmetal( float3 m , float cmask , half c_metal , half c_metal_2 , half c_speccolor3_g , float3 mask , half c_speccolor3_r ){
  486.             half m_color = clamp(m.r * (1 - cmask) * c_metal_2 + (m.r * c_metal * mask.r) + (m.r * c_speccolor3_g * mask.g) + (m.r * c_speccolor3_r * mask.b),0,1);
  487.             return m_color;
  488.            
  489.             }
  490.            
  491.             half maskedgloss( half s , float cmask , half c_smooth , half c_smooth_2 , half c_speccolor3_a , float3 mask , half c_speccolor3_b ){
  492.             half s_color = clamp(s * (1 - cmask) * c_smooth_2 + ((s * c_smooth) * mask.r) + ((s * c_speccolor3_b) * mask.g) + ((s * c_speccolor3_a) * mask.b),0,1);
  493.             return s_color;
  494.            
  495.             }
  496.            
  497.             uniform sampler2D _DetailMap; uniform float4 _DetailMap_ST;
  498.             uniform sampler2D _DetailAlbedo; uniform float4 _DetailAlbedo_ST;
  499.             uniform sampler2D _DetailMetalGloss; uniform float4 _DetailMetalGloss_ST;
  500.             uniform float _DetailBumpScale;
  501.             uniform float _DetailBumpStrength;
  502.             uniform float _MaskStrength;
  503.             uniform float4 _MaskColor;
  504.             struct VertexInput {
  505.                 float4 vertex : POSITION;
  506.                 float2 texcoord0 : TEXCOORD0;
  507.                 float2 texcoord1 : TEXCOORD1;
  508.                 float2 texcoord2 : TEXCOORD2;
  509.             };
  510.             struct VertexOutput {
  511.                 float4 pos : SV_POSITION;
  512.                 float2 uv0 : TEXCOORD0;
  513.                 float2 uv1 : TEXCOORD1;
  514.                 float2 uv2 : TEXCOORD2;
  515.                 float4 posWorld : TEXCOORD3;
  516.             };
  517.             VertexOutput vert (VertexInput v) {
  518.                 VertexOutput o = (VertexOutput)0;
  519.                 o.uv0 = v.texcoord0;
  520.                 o.uv1 = v.texcoord1;
  521.                 o.uv2 = v.texcoord2;
  522.                 o.posWorld = mul(_Object2World, v.vertex);
  523.                 o.pos = UnityMetaVertexPosition(v.vertex, v.texcoord1.xy, v.texcoord2.xy, unity_LightmapST, unity_DynamicLightmapST );
  524.                 return o;
  525.             }
  526.             float4 frag(VertexOutput i) : SV_Target {
  527.                 float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
  528.                 UnityMetaInput o;
  529.                 UNITY_INITIALIZE_OUTPUT( UnityMetaInput, o );
  530.                
  531.                 o.Emission = 0;
  532.                
  533.                 float4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex));
  534.                 float2 node_6216 = (i.uv0*_DetailBumpScale);
  535.                 float4 _DetailAlbedo_var = tex2D(_DetailAlbedo,TRANSFORM_TEX(node_6216, _DetailAlbedo));
  536.                 float4 _DetailMap_var = tex2D(_DetailMap,TRANSFORM_TEX(i.uv0, _DetailMap));
  537.                 float3 node_458 = (_DetailMap_var.rgb*_DetailBumpStrength);
  538.                 float4 _MaskTex_var = tex2D(_MaskTex,TRANSFORM_TEX(i.uv0, _MaskTex));
  539.                 float node_5598 = min(1.0,(_MaskTex_var.r+_MaskTex_var.g+_MaskTex_var.b));
  540.                 float3 node_4343 = lerp(float4(0,0,0,0),float4((_MaskColor.rgb*_MaskTex_var.rgb),0.0),_MaskStrength).rgb;
  541.                 float3 diffColor = maskedcolor( lerp(_MainTex_var.rgb,(_MainTex_var.rgb*_DetailAlbedo_var.rgb),node_458) , node_5598 , _Color.rgb , _Color_2.rgb , _Color_3.rgb , _SpecColor.rgb , node_4343 );
  542.                 float specularMonochrome;
  543.                 float3 specColor;
  544.                 float4 _MetallicMap_var = tex2D(_MetallicMap,TRANSFORM_TEX(i.uv0, _MetallicMap));
  545.                 float4 _DetailMetalGloss_var = tex2D(_DetailMetalGloss,TRANSFORM_TEX(node_6216, _DetailMetalGloss));
  546.                 diffColor = DiffuseAndSpecularFromMetallic( diffColor, maskedmetal( lerp(_MetallicMap_var.rgb,(_MetallicMap_var.rgb*_DetailMetalGloss_var.rgb),node_458) , node_5598 , _Metallic , _Metallic_2 , _SpecColor_3.g , node_4343 , _SpecColor_3.r ), specColor, specularMonochrome );
  547.                 float node_2903 = (_MetallicMap_var.a*_DetailMetalGloss_var.a);
  548.                 float roughness = 1.0 - maskedgloss( lerp(float3(_MetallicMap_var.a,_MetallicMap_var.a,_MetallicMap_var.a),float3(node_2903,node_2903,node_2903),node_458).r , node_5598 , _Smoothness , _Smoothness_2 , _SpecColor_3.a , node_4343 , _SpecColor_3.b );
  549.                 o.Albedo = diffColor + specColor * roughness * roughness * 0.5;
  550.                
  551.                 return UnityMetaFragment( o );
  552.             }
  553.             ENDCG
  554.         }
  555.     }
  556.     FallBack "Diffuse"
  557.     CustomEditor "ShaderForgeMaterialInspector"
  558. }
Advertisement
Add Comment
Please, Sign In to add comment