Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Shader created with Shader Forge v1.30
- // Shader Forge (c) Neat Corporation / Joachim Holmer - http://www.acegikmo.com/shaderforge/
- // Note: Manually altering this data may prevent you from opening it in Shader Forge
- /*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;*/
- Shader "HSShaderForge/Masked4Color" {
- Properties {
- _Color ("Color", Color) = (1,1,1,1)
- _MainTex ("MainTex", 2D) = "white" {}
- _Smoothness ("Smoothness", Range(0, 1)) = 0.5
- _BumpMap ("BumpMap", 2D) = "bump" {}
- _NormalIntensity ("Normal Intensity", Range(0, 1)) = 1
- _Color_2 ("Color_2", Color) = (1,1,1,1)
- _Color_3 ("Color_3", Color) = (1,1,1,1)
- _SpecColor ("SpecColor", Color) = (0.5,0.5,0.5,1)
- _Metallic ("Metallic", Range(0, 1)) = 0.6381867
- _SpecColor_3 ("SpecColor_3", Color) = (1,1,1,1)
- _Metallic_2 ("Metallic_2", Range(0, 1)) = 0
- _Smoothness_2 ("Smoothness_2", Range(0, 1)) = 0.5155692
- _MaskTex ("MaskTex", 2D) = "white" {}
- _MetallicMap ("MetallicMap", 2D) = "white" {}
- _OcclusionMap ("OcclusionMap", 2D) = "white" {}
- _DetailMap ("DetailMap", 2D) = "black" {}
- _DetailAlbedo ("DetailAlbedo", 2D) = "white" {}
- _DetailMetalGloss ("DetailMetalGloss", 2D) = "white" {}
- _DetailBump ("DetailBump", 2D) = "bump" {}
- _DetailBumpScale ("DetailBumpScale", Range(0, 100)) = 30
- _DetailBumpStrength ("DetailBumpStrength", Range(0, 1)) = 0
- _DetailAO ("DetailAO", 2D) = "white" {}
- _SpecularAmbientLight ("SpecularAmbientLight", Range(-1, 1)) = 0
- _DiffuseAmbientLight ("DiffuseAmbientLight", Range(-1, 1)) = 0
- _OcclusionStrength ("OcclusionStrength", Range(0, 1)) = 1
- _MaskStrength ("MaskStrength", Range(0, 1)) = 1
- _MaskColor ("MaskColor", Color) = (1,0,0,1)
- }
- SubShader {
- Tags {
- "RenderType"="Opaque"
- }
- Pass {
- Name "FORWARD"
- Tags {
- "LightMode"="ForwardBase"
- }
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #define UNITY_PASS_FORWARDBASE
- #define SHOULD_SAMPLE_SH ( defined (LIGHTMAP_OFF) && defined(DYNAMICLIGHTMAP_OFF) )
- #define _GLOSSYENV 1
- #include "UnityCG.cginc"
- #include "AutoLight.cginc"
- #include "Lighting.cginc"
- #include "UnityPBSLighting.cginc"
- #include "UnityStandardBRDF.cginc"
- #pragma multi_compile_fwdbase_fullshadows
- #pragma multi_compile LIGHTMAP_OFF LIGHTMAP_ON
- #pragma multi_compile DIRLIGHTMAP_OFF DIRLIGHTMAP_COMBINED DIRLIGHTMAP_SEPARATE
- #pragma multi_compile DYNAMICLIGHTMAP_OFF DYNAMICLIGHTMAP_ON
- #pragma multi_compile_fog
- #pragma exclude_renderers opengl gles gles3 metal d3d11_9x xbox360 xboxone ps3 ps4 psp2
- #pragma target 3.0
- uniform sampler2D _BumpMap; uniform float4 _BumpMap_ST;
- uniform float _NormalIntensity;
- uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
- uniform float4 _Color;
- uniform float _Smoothness;
- uniform sampler2D _MaskTex; uniform float4 _MaskTex_ST;
- uniform float4 _Color_2;
- uniform float4 _Color_3;
- uniform float _Metallic;
- uniform float _Metallic_2;
- uniform float4 _SpecColor_3;
- uniform float _Smoothness_2;
- uniform sampler2D _MetallicMap; uniform float4 _MetallicMap_ST;
- uniform sampler2D _OcclusionMap; uniform float4 _OcclusionMap_ST;
- float3 maskedcolor( float3 c , float cmask , float3 c_color , float3 c_color_2 , float3 c_color_3 , float3 c_speccolor , float3 mask ){
- float3 m_color = c.rgb * (1 - cmask) * _Color_2 + (c * _Color * mask.r) + (c * _SpecColor.rgb * mask.g) + (c * _Color_3 * mask.b);
- return m_color;
- }
- half maskedmetal( float3 m , float cmask , half c_metal , half c_metal_2 , half c_speccolor3_g , float3 mask , half c_speccolor3_r ){
- 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);
- return m_color;
- }
- half maskedgloss( half s , float cmask , half c_smooth , half c_smooth_2 , half c_speccolor3_a , float3 mask , half c_speccolor3_b ){
- 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);
- return s_color;
- }
- uniform sampler2D _DetailMap; uniform float4 _DetailMap_ST;
- uniform sampler2D _DetailAlbedo; uniform float4 _DetailAlbedo_ST;
- uniform sampler2D _DetailMetalGloss; uniform float4 _DetailMetalGloss_ST;
- uniform sampler2D _DetailBump; uniform float4 _DetailBump_ST;
- uniform float _DetailBumpScale;
- uniform float _DetailBumpStrength;
- uniform sampler2D _DetailAO; uniform float4 _DetailAO_ST;
- uniform float _SpecularAmbientLight;
- uniform float _DiffuseAmbientLight;
- uniform float _OcclusionStrength;
- uniform float _MaskStrength;
- uniform float4 _MaskColor;
- struct VertexInput {
- float4 vertex : POSITION;
- float3 normal : NORMAL;
- float4 tangent : TANGENT;
- float2 texcoord0 : TEXCOORD0;
- float2 texcoord1 : TEXCOORD1;
- float2 texcoord2 : TEXCOORD2;
- };
- struct VertexOutput {
- float4 pos : SV_POSITION;
- float2 uv0 : TEXCOORD0;
- float2 uv1 : TEXCOORD1;
- float2 uv2 : TEXCOORD2;
- float4 posWorld : TEXCOORD3;
- float3 normalDir : TEXCOORD4;
- float3 tangentDir : TEXCOORD5;
- float3 bitangentDir : TEXCOORD6;
- LIGHTING_COORDS(7,8)
- UNITY_FOG_COORDS(9)
- #if defined(LIGHTMAP_ON) || defined(UNITY_SHOULD_SAMPLE_SH)
- float4 ambientOrLightmapUV : TEXCOORD10;
- #endif
- };
- VertexOutput vert (VertexInput v) {
- VertexOutput o = (VertexOutput)0;
- o.uv0 = v.texcoord0;
- o.uv1 = v.texcoord1;
- o.uv2 = v.texcoord2;
- #ifdef LIGHTMAP_ON
- o.ambientOrLightmapUV.xy = v.texcoord1.xy * unity_LightmapST.xy + unity_LightmapST.zw;
- o.ambientOrLightmapUV.zw = 0;
- #endif
- #ifdef DYNAMICLIGHTMAP_ON
- o.ambientOrLightmapUV.zw = v.texcoord2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw;
- #endif
- o.normalDir = UnityObjectToWorldNormal(v.normal);
- o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
- o.bitangentDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
- o.posWorld = mul(_Object2World, v.vertex);
- float3 lightColor = _LightColor0.rgb;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex );
- UNITY_TRANSFER_FOG(o,o.pos);
- TRANSFER_VERTEX_TO_FRAGMENT(o)
- return o;
- }
- float4 frag(VertexOutput i) : COLOR {
- i.normalDir = normalize(i.normalDir);
- float3x3 tangentTransform = float3x3( i.tangentDir, i.bitangentDir, i.normalDir);
- float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
- float3 node_4537 = float3(0,0,1);
- float3 _BumpMap_var = UnpackNormal(tex2D(_BumpMap,TRANSFORM_TEX(i.uv0, _BumpMap)));
- float2 node_6216 = (i.uv0*_DetailBumpScale);
- float3 _DetailBump_var = UnpackNormal(tex2D(_DetailBump,TRANSFORM_TEX(node_6216, _DetailBump)));
- float3 node_1952_nrm_base = _BumpMap_var.rgb + float3(0,0,1);
- float3 node_1952_nrm_detail = lerp(node_4537,_DetailBump_var.rgb,_DetailBumpStrength) * float3(-1,-1,1);
- 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;
- float3 node_1952 = node_1952_nrm_combined;
- float4 _DetailMap_var = tex2D(_DetailMap,TRANSFORM_TEX(i.uv0, _DetailMap));
- float3 normalLocal = lerp(node_4537,lerp(_BumpMap_var.rgb,node_1952,_DetailMap_var.rgb),_NormalIntensity);
- float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
- float3 viewReflectDirection = reflect( -viewDirection, normalDirection );
- float3 lightDirection = normalize(_WorldSpaceLightPos0.xyz);
- float3 lightColor = _LightColor0.rgb;
- float3 halfDirection = normalize(viewDirection+lightDirection);
- ////// Lighting:
- float attenuation = LIGHT_ATTENUATION(i);
- float3 attenColor = attenuation * _LightColor0.xyz;
- float Pi = 3.141592654;
- float InvPi = 0.31830988618;
- ///////// Gloss:
- float4 _MetallicMap_var = tex2D(_MetallicMap,TRANSFORM_TEX(i.uv0, _MetallicMap));
- float4 _DetailMetalGloss_var = tex2D(_DetailMetalGloss,TRANSFORM_TEX(node_6216, _DetailMetalGloss));
- float node_2903 = (_MetallicMap_var.a*_DetailMetalGloss_var.a);
- float3 node_458 = (_DetailMap_var.rgb*_DetailBumpStrength);
- float4 _MaskTex_var = tex2D(_MaskTex,TRANSFORM_TEX(i.uv0, _MaskTex));
- float node_5598 = min(1.0,(_MaskTex_var.r+_MaskTex_var.g+_MaskTex_var.b));
- float3 node_4343 = lerp(float4(0,0,0,0),float4((_MaskColor.rgb*_MaskTex_var.rgb),0.0),_MaskStrength).rgb;
- 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 );
- float specPow = exp2( gloss * 10.0+1.0);
- /////// GI Data:
- UnityLight light;
- #ifdef LIGHTMAP_OFF
- light.color = lightColor;
- light.dir = lightDirection;
- light.ndotl = LambertTerm (normalDirection, light.dir);
- #else
- light.color = half3(0.f, 0.f, 0.f);
- light.ndotl = 0.0f;
- light.dir = half3(0.f, 0.f, 0.f);
- #endif
- UnityGIInput d;
- d.light = light;
- d.worldPos = i.posWorld.xyz;
- d.worldViewDir = viewDirection;
- d.atten = attenuation;
- #if defined(LIGHTMAP_ON) || defined(DYNAMICLIGHTMAP_ON)
- d.ambient = 0;
- d.lightmapUV = i.ambientOrLightmapUV;
- #else
- d.ambient = i.ambientOrLightmapUV;
- #endif
- d.boxMax[0] = unity_SpecCube0_BoxMax;
- d.boxMin[0] = unity_SpecCube0_BoxMin;
- d.probePosition[0] = unity_SpecCube0_ProbePosition;
- d.probeHDR[0] = unity_SpecCube0_HDR;
- d.boxMax[1] = unity_SpecCube1_BoxMax;
- d.boxMin[1] = unity_SpecCube1_BoxMin;
- d.probePosition[1] = unity_SpecCube1_ProbePosition;
- d.probeHDR[1] = unity_SpecCube1_HDR;
- Unity_GlossyEnvironmentData ugls_en_data;
- ugls_en_data.roughness = 1.0 - gloss;
- ugls_en_data.reflUVW = viewReflectDirection;
- UnityGI gi = UnityGlobalIllumination(d, 1, normalDirection, ugls_en_data );
- lightDirection = gi.light.dir;
- lightColor = gi.light.color;
- ////// Specular:
- float NdotL = max(0, dot( normalDirection, lightDirection ));
- float node_9743 = 1.0;
- float4 _OcclusionMap_var = tex2D(_OcclusionMap,TRANSFORM_TEX(i.uv0, _OcclusionMap));
- float4 _DetailAO_var = tex2D(_DetailAO,TRANSFORM_TEX(node_6216, _DetailAO));
- float node_4970 = (_OcclusionMap_var.r*_DetailAO_var.r);
- 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;
- float3 specularAO = node_166;
- float LdotH = max(0.0,dot(lightDirection, halfDirection));
- 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 );
- float specularMonochrome;
- float4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex));
- float4 _DetailAlbedo_var = tex2D(_DetailAlbedo,TRANSFORM_TEX(node_6216, _DetailAlbedo));
- 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
- diffuseColor = DiffuseAndSpecularFromMetallic( diffuseColor, specularColor, specularColor, specularMonochrome );
- specularMonochrome = 1.0-specularMonochrome;
- float NdotV = max(0.0,dot( normalDirection, viewDirection ));
- float NdotH = max(0.0,dot( normalDirection, halfDirection ));
- float VdotH = max(0.0,dot( viewDirection, halfDirection ));
- float visTerm = SmithJointGGXVisibilityTerm( NdotL, NdotV, 1.0-gloss );
- float normTerm = max(0.0, GGXTerm(NdotH, 1.0-gloss));
- float specularPBL = (NdotL*visTerm*normTerm) * (UNITY_PI / 4);
- if (IsGammaSpace())
- specularPBL = sqrt(max(1e-4h, specularPBL));
- specularPBL = max(0, specularPBL * NdotL);
- float3 directSpecular = (floor(attenuation) * _LightColor0.xyz)*specularPBL*FresnelTerm(specularColor, LdotH);
- half grazingTerm = saturate( gloss + specularMonochrome );
- float3 indirectSpecular = (gi.indirect.specular + float3(_SpecularAmbientLight,_SpecularAmbientLight,_SpecularAmbientLight)) * specularAO;
- indirectSpecular *= FresnelLerp (specularColor, grazingTerm, NdotV);
- float3 specular = (directSpecular + indirectSpecular);
- /////// Diffuse:
- NdotL = max(0.0,dot( normalDirection, lightDirection ));
- half fd90 = 0.5 + 2 * LdotH * LdotH * (1-gloss);
- float nlPow5 = Pow5(1-NdotL);
- float nvPow5 = Pow5(1-NdotV);
- float3 directDiffuse = ((1 +(fd90 - 1)*nlPow5) * (1 + (fd90 - 1)*nvPow5) * NdotL) * attenColor;
- float3 indirectDiffuse = float3(0,0,0);
- indirectDiffuse += float3(_DiffuseAmbientLight,_DiffuseAmbientLight,_DiffuseAmbientLight); // Diffuse Ambient Light
- indirectDiffuse += gi.indirect.diffuse;
- indirectDiffuse *= node_166; // Diffuse AO
- float3 diffuse = (directDiffuse + indirectDiffuse) * diffuseColor;
- /// Final Color:
- float3 finalColor = diffuse + specular;
- fixed4 finalRGBA = fixed4(finalColor,1);
- UNITY_APPLY_FOG(i.fogCoord, finalRGBA);
- return finalRGBA;
- }
- ENDCG
- }
- Pass {
- Name "FORWARD_DELTA"
- Tags {
- "LightMode"="ForwardAdd"
- }
- Blend One One
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #define UNITY_PASS_FORWARDADD
- #define SHOULD_SAMPLE_SH ( defined (LIGHTMAP_OFF) && defined(DYNAMICLIGHTMAP_OFF) )
- #define _GLOSSYENV 1
- #include "UnityCG.cginc"
- #include "AutoLight.cginc"
- #include "Lighting.cginc"
- #include "UnityPBSLighting.cginc"
- #include "UnityStandardBRDF.cginc"
- #pragma multi_compile_fwdadd_fullshadows
- #pragma multi_compile LIGHTMAP_OFF LIGHTMAP_ON
- #pragma multi_compile DIRLIGHTMAP_OFF DIRLIGHTMAP_COMBINED DIRLIGHTMAP_SEPARATE
- #pragma multi_compile DYNAMICLIGHTMAP_OFF DYNAMICLIGHTMAP_ON
- #pragma multi_compile_fog
- #pragma exclude_renderers opengl gles gles3 metal d3d11_9x xbox360 xboxone ps3 ps4 psp2
- #pragma target 3.0
- uniform sampler2D _BumpMap; uniform float4 _BumpMap_ST;
- uniform float _NormalIntensity;
- uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
- uniform float4 _Color;
- uniform float _Smoothness;
- uniform sampler2D _MaskTex; uniform float4 _MaskTex_ST;
- uniform float4 _Color_2;
- uniform float4 _Color_3;
- uniform float _Metallic;
- uniform float _Metallic_2;
- uniform float4 _SpecColor_3;
- uniform float _Smoothness_2;
- uniform sampler2D _MetallicMap; uniform float4 _MetallicMap_ST;
- float3 maskedcolor( float3 c , float cmask , float3 c_color , float3 c_color_2 , float3 c_color_3 , float3 c_speccolor , float3 mask ){
- float3 m_color = c.rgb * (1 - cmask) * _Color_2 + (c * _Color * mask.r) + (c * _SpecColor.rgb * mask.g) + (c * _Color_3 * mask.b);
- return m_color;
- }
- half maskedmetal( float3 m , float cmask , half c_metal , half c_metal_2 , half c_speccolor3_g , float3 mask , half c_speccolor3_r ){
- 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);
- return m_color;
- }
- half maskedgloss( half s , float cmask , half c_smooth , half c_smooth_2 , half c_speccolor3_a , float3 mask , half c_speccolor3_b ){
- 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);
- return s_color;
- }
- uniform sampler2D _DetailMap; uniform float4 _DetailMap_ST;
- uniform sampler2D _DetailAlbedo; uniform float4 _DetailAlbedo_ST;
- uniform sampler2D _DetailMetalGloss; uniform float4 _DetailMetalGloss_ST;
- uniform sampler2D _DetailBump; uniform float4 _DetailBump_ST;
- uniform float _DetailBumpScale;
- uniform float _DetailBumpStrength;
- uniform float _MaskStrength;
- uniform float4 _MaskColor;
- struct VertexInput {
- float4 vertex : POSITION;
- float3 normal : NORMAL;
- float4 tangent : TANGENT;
- float2 texcoord0 : TEXCOORD0;
- float2 texcoord1 : TEXCOORD1;
- float2 texcoord2 : TEXCOORD2;
- };
- struct VertexOutput {
- float4 pos : SV_POSITION;
- float2 uv0 : TEXCOORD0;
- float2 uv1 : TEXCOORD1;
- float2 uv2 : TEXCOORD2;
- float4 posWorld : TEXCOORD3;
- float3 normalDir : TEXCOORD4;
- float3 tangentDir : TEXCOORD5;
- float3 bitangentDir : TEXCOORD6;
- LIGHTING_COORDS(7,8)
- UNITY_FOG_COORDS(9)
- };
- VertexOutput vert (VertexInput v) {
- VertexOutput o = (VertexOutput)0;
- o.uv0 = v.texcoord0;
- o.uv1 = v.texcoord1;
- o.uv2 = v.texcoord2;
- o.normalDir = UnityObjectToWorldNormal(v.normal);
- o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
- o.bitangentDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
- o.posWorld = mul(_Object2World, v.vertex);
- float3 lightColor = _LightColor0.rgb;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex );
- UNITY_TRANSFER_FOG(o,o.pos);
- TRANSFER_VERTEX_TO_FRAGMENT(o)
- return o;
- }
- float4 frag(VertexOutput i) : COLOR {
- i.normalDir = normalize(i.normalDir);
- float3x3 tangentTransform = float3x3( i.tangentDir, i.bitangentDir, i.normalDir);
- float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
- float3 node_4537 = float3(0,0,1);
- float3 _BumpMap_var = UnpackNormal(tex2D(_BumpMap,TRANSFORM_TEX(i.uv0, _BumpMap)));
- float2 node_6216 = (i.uv0*_DetailBumpScale);
- float3 _DetailBump_var = UnpackNormal(tex2D(_DetailBump,TRANSFORM_TEX(node_6216, _DetailBump)));
- float3 node_1952_nrm_base = _BumpMap_var.rgb + float3(0,0,1);
- float3 node_1952_nrm_detail = lerp(node_4537,_DetailBump_var.rgb,_DetailBumpStrength) * float3(-1,-1,1);
- 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;
- float3 node_1952 = node_1952_nrm_combined;
- float4 _DetailMap_var = tex2D(_DetailMap,TRANSFORM_TEX(i.uv0, _DetailMap));
- float3 normalLocal = lerp(node_4537,lerp(_BumpMap_var.rgb,node_1952,_DetailMap_var.rgb),_NormalIntensity);
- float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
- float3 lightDirection = normalize(lerp(_WorldSpaceLightPos0.xyz, _WorldSpaceLightPos0.xyz - i.posWorld.xyz,_WorldSpaceLightPos0.w));
- float3 lightColor = _LightColor0.rgb;
- float3 halfDirection = normalize(viewDirection+lightDirection);
- ////// Lighting:
- float attenuation = LIGHT_ATTENUATION(i);
- float3 attenColor = attenuation * _LightColor0.xyz;
- float Pi = 3.141592654;
- float InvPi = 0.31830988618;
- ///////// Gloss:
- float4 _MetallicMap_var = tex2D(_MetallicMap,TRANSFORM_TEX(i.uv0, _MetallicMap));
- float4 _DetailMetalGloss_var = tex2D(_DetailMetalGloss,TRANSFORM_TEX(node_6216, _DetailMetalGloss));
- float node_2903 = (_MetallicMap_var.a*_DetailMetalGloss_var.a);
- float3 node_458 = (_DetailMap_var.rgb*_DetailBumpStrength);
- float4 _MaskTex_var = tex2D(_MaskTex,TRANSFORM_TEX(i.uv0, _MaskTex));
- float node_5598 = min(1.0,(_MaskTex_var.r+_MaskTex_var.g+_MaskTex_var.b));
- float3 node_4343 = lerp(float4(0,0,0,0),float4((_MaskColor.rgb*_MaskTex_var.rgb),0.0),_MaskStrength).rgb;
- 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 );
- float specPow = exp2( gloss * 10.0+1.0);
- ////// Specular:
- float NdotL = max(0, dot( normalDirection, lightDirection ));
- float LdotH = max(0.0,dot(lightDirection, halfDirection));
- 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 );
- float specularMonochrome;
- float4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex));
- float4 _DetailAlbedo_var = tex2D(_DetailAlbedo,TRANSFORM_TEX(node_6216, _DetailAlbedo));
- 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
- diffuseColor = DiffuseAndSpecularFromMetallic( diffuseColor, specularColor, specularColor, specularMonochrome );
- specularMonochrome = 1.0-specularMonochrome;
- float NdotV = max(0.0,dot( normalDirection, viewDirection ));
- float NdotH = max(0.0,dot( normalDirection, halfDirection ));
- float VdotH = max(0.0,dot( viewDirection, halfDirection ));
- float visTerm = SmithJointGGXVisibilityTerm( NdotL, NdotV, 1.0-gloss );
- float normTerm = max(0.0, GGXTerm(NdotH, 1.0-gloss));
- float specularPBL = (NdotL*visTerm*normTerm) * (UNITY_PI / 4);
- if (IsGammaSpace())
- specularPBL = sqrt(max(1e-4h, specularPBL));
- specularPBL = max(0, specularPBL * NdotL);
- float3 directSpecular = attenColor*specularPBL*FresnelTerm(specularColor, LdotH);
- float3 specular = directSpecular;
- /////// Diffuse:
- NdotL = max(0.0,dot( normalDirection, lightDirection ));
- half fd90 = 0.5 + 2 * LdotH * LdotH * (1-gloss);
- float nlPow5 = Pow5(1-NdotL);
- float nvPow5 = Pow5(1-NdotV);
- float3 directDiffuse = ((1 +(fd90 - 1)*nlPow5) * (1 + (fd90 - 1)*nvPow5) * NdotL) * attenColor;
- float3 diffuse = directDiffuse * diffuseColor;
- /// Final Color:
- float3 finalColor = diffuse + specular;
- fixed4 finalRGBA = fixed4(finalColor * 1,0);
- UNITY_APPLY_FOG(i.fogCoord, finalRGBA);
- return finalRGBA;
- }
- ENDCG
- }
- Pass {
- Name "Meta"
- Tags {
- "LightMode"="Meta"
- }
- Cull Off
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #define UNITY_PASS_META 1
- #define SHOULD_SAMPLE_SH ( defined (LIGHTMAP_OFF) && defined(DYNAMICLIGHTMAP_OFF) )
- #define _GLOSSYENV 1
- #include "UnityCG.cginc"
- #include "Lighting.cginc"
- #include "UnityPBSLighting.cginc"
- #include "UnityStandardBRDF.cginc"
- #include "UnityMetaPass.cginc"
- #pragma fragmentoption ARB_precision_hint_fastest
- #pragma multi_compile_shadowcaster
- #pragma multi_compile LIGHTMAP_OFF LIGHTMAP_ON
- #pragma multi_compile DIRLIGHTMAP_OFF DIRLIGHTMAP_COMBINED DIRLIGHTMAP_SEPARATE
- #pragma multi_compile DYNAMICLIGHTMAP_OFF DYNAMICLIGHTMAP_ON
- #pragma multi_compile_fog
- #pragma exclude_renderers opengl gles gles3 metal d3d11_9x xbox360 xboxone ps3 ps4 psp2
- #pragma target 3.0
- uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
- uniform float4 _Color;
- uniform float _Smoothness;
- uniform sampler2D _MaskTex; uniform float4 _MaskTex_ST;
- uniform float4 _Color_2;
- uniform float4 _Color_3;
- uniform float _Metallic;
- uniform float _Metallic_2;
- uniform float4 _SpecColor_3;
- uniform float _Smoothness_2;
- uniform sampler2D _MetallicMap; uniform float4 _MetallicMap_ST;
- float3 maskedcolor( float3 c , float cmask , float3 c_color , float3 c_color_2 , float3 c_color_3 , float3 c_speccolor , float3 mask ){
- float3 m_color = c.rgb * (1 - cmask) * _Color_2 + (c * _Color * mask.r) + (c * _SpecColor.rgb * mask.g) + (c * _Color_3 * mask.b);
- return m_color;
- }
- half maskedmetal( float3 m , float cmask , half c_metal , half c_metal_2 , half c_speccolor3_g , float3 mask , half c_speccolor3_r ){
- 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);
- return m_color;
- }
- half maskedgloss( half s , float cmask , half c_smooth , half c_smooth_2 , half c_speccolor3_a , float3 mask , half c_speccolor3_b ){
- 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);
- return s_color;
- }
- uniform sampler2D _DetailMap; uniform float4 _DetailMap_ST;
- uniform sampler2D _DetailAlbedo; uniform float4 _DetailAlbedo_ST;
- uniform sampler2D _DetailMetalGloss; uniform float4 _DetailMetalGloss_ST;
- uniform float _DetailBumpScale;
- uniform float _DetailBumpStrength;
- uniform float _MaskStrength;
- uniform float4 _MaskColor;
- struct VertexInput {
- float4 vertex : POSITION;
- float2 texcoord0 : TEXCOORD0;
- float2 texcoord1 : TEXCOORD1;
- float2 texcoord2 : TEXCOORD2;
- };
- struct VertexOutput {
- float4 pos : SV_POSITION;
- float2 uv0 : TEXCOORD0;
- float2 uv1 : TEXCOORD1;
- float2 uv2 : TEXCOORD2;
- float4 posWorld : TEXCOORD3;
- };
- VertexOutput vert (VertexInput v) {
- VertexOutput o = (VertexOutput)0;
- o.uv0 = v.texcoord0;
- o.uv1 = v.texcoord1;
- o.uv2 = v.texcoord2;
- o.posWorld = mul(_Object2World, v.vertex);
- o.pos = UnityMetaVertexPosition(v.vertex, v.texcoord1.xy, v.texcoord2.xy, unity_LightmapST, unity_DynamicLightmapST );
- return o;
- }
- float4 frag(VertexOutput i) : SV_Target {
- float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
- UnityMetaInput o;
- UNITY_INITIALIZE_OUTPUT( UnityMetaInput, o );
- o.Emission = 0;
- float4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex));
- float2 node_6216 = (i.uv0*_DetailBumpScale);
- float4 _DetailAlbedo_var = tex2D(_DetailAlbedo,TRANSFORM_TEX(node_6216, _DetailAlbedo));
- float4 _DetailMap_var = tex2D(_DetailMap,TRANSFORM_TEX(i.uv0, _DetailMap));
- float3 node_458 = (_DetailMap_var.rgb*_DetailBumpStrength);
- float4 _MaskTex_var = tex2D(_MaskTex,TRANSFORM_TEX(i.uv0, _MaskTex));
- float node_5598 = min(1.0,(_MaskTex_var.r+_MaskTex_var.g+_MaskTex_var.b));
- float3 node_4343 = lerp(float4(0,0,0,0),float4((_MaskColor.rgb*_MaskTex_var.rgb),0.0),_MaskStrength).rgb;
- 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 );
- float specularMonochrome;
- float3 specColor;
- float4 _MetallicMap_var = tex2D(_MetallicMap,TRANSFORM_TEX(i.uv0, _MetallicMap));
- float4 _DetailMetalGloss_var = tex2D(_DetailMetalGloss,TRANSFORM_TEX(node_6216, _DetailMetalGloss));
- 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 );
- float node_2903 = (_MetallicMap_var.a*_DetailMetalGloss_var.a);
- 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 );
- o.Albedo = diffColor + specColor * roughness * roughness * 0.5;
- return UnityMetaFragment( o );
- }
- ENDCG
- }
- }
- FallBack "Diffuse"
- CustomEditor "ShaderForgeMaterialInspector"
- }
Advertisement
Add Comment
Please, Sign In to add comment