Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Shader created with Shader Forge Beta 0.31
- // Shader Forge (c) Joachim Holmer - http://www.acegikmo.com/shaderforge/
- // Note: Manually altering this data may prevent you from opening it in Shader Forge
- /*SF_DATA;ver:0.31;sub:START;pass:START;ps:flbk:Bumped Specular,lico:1,lgpr:1,nrmq:1,limd:1,uamb:True,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:0,culm:0,dpts:2,wrdp:True,ufog:True,aust:True,igpj:False,qofs:0,qpre:1,rntp:1,fgom:False,fgoc:False,fgod:False,fgor:False,fgmd:0,fgcr:0.3142246,fgcg:0.3759843,fgcb:0.4486077,fgca:1,fgde:0.0015,fgrn:300,fgrf:1000,ofsf:0,ofsu:0,f2p0:False;n:type:ShaderForge.SFN_Final,id:1,x:32701,y:32804|diff-505-OUT,spec-420-OUT,gloss-69-OUT,normal-1016-OUT,emission-1007-OUT;n:type:ShaderForge.SFN_Tex2d,id:2,x:33744,y:32084,ptlb:Colour Map,ptin:_ColourMap,ntxv:0,isnm:False;n:type:ShaderForge.SFN_Tex2d,id:9,x:33742,y:32860,ptlb:Normal Map,ptin:_NormalMap,ntxv:3,isnm:True;n:type:ShaderForge.SFN_ValueProperty,id:69,x:33092,y:32793,ptlb:Gloss Range,ptin:_GlossRange,glob:False,v1:1;n:type:ShaderForge.SFN_Tex2d,id:145,x:34396,y:33153,ptlb:Detail Normal Map,ptin:_DetailNormalMap,ntxv:0,isnm:False;n:type:ShaderForge.SFN_NormalBlend,id:148,x:33550,y:32849|BSE-9-RGB,DTL-172-OUT;n:type:ShaderForge.SFN_Lerp,id:172,x:33955,y:33132,cmnt:Detail Normal |A-175-OUT,B-1176-OUT,T-177-OUT;n:type:ShaderForge.SFN_Vector3,id:175,x:34376,y:33036,v1:0,v2:0,v3:1;n:type:ShaderForge.SFN_Slider,id:177,x:34165,y:33343,ptlb:Normal Blend Weight,ptin:_NormalBlendWeight,min:0,cur:0,max:1;n:type:ShaderForge.SFN_Multiply,id:420,x:33191,y:32533,cmnt:Specular |A-1091-OUT,B-2-G,C-447-OUT;n:type:ShaderForge.SFN_Slider,id:447,x:33360,y:32569,ptlb:Specular Intensity,ptin:_SpecularIntensity,min:0,cur:0,max:1;n:type:ShaderForge.SFN_Lerp,id:505,x:33093,y:32003|A-1028-OUT,B-1306-RGB,T-533-OUT;n:type:ShaderForge.SFN_Slider,id:533,x:33320,y:32259,ptlb:Blend Texture Weight,ptin:_BlendTextureWeight,min:0,cur:0,max:1;n:type:ShaderForge.SFN_Multiply,id:545,x:33210,y:33298|A-547-OUT,B-801-OUT;n:type:ShaderForge.SFN_Fresnel,id:547,x:33370,y:33240|NRM-552-OUT,EXP-977-OUT;n:type:ShaderForge.SFN_NormalVector,id:552,x:33544,y:33230,pt:True;n:type:ShaderForge.SFN_Power,id:557,x:33544,y:33499|VAL-571-RGB,EXP-836-OUT;n:type:ShaderForge.SFN_Color,id:571,x:33736,y:33499,ptlb:Fresnel Colour,ptin:_FresnelColour,glob:False,c1:0.5,c2:0.5,c3:0.5,c4:1;n:type:ShaderForge.SFN_ValueProperty,id:626,x:33544,y:33445,ptlb:Fresnel Value,ptin:_FresnelValue,glob:False,v1:0;n:type:ShaderForge.SFN_Multiply,id:801,x:33370,y:33371|A-626-OUT,B-557-OUT;n:type:ShaderForge.SFN_Vector1,id:836,x:33736,y:33642,v1:2;n:type:ShaderForge.SFN_Vector1,id:977,x:33544,y:33371,v1:5;n:type:ShaderForge.SFN_Multiply,id:1007,x:33021,y:33170,cmnt:Fresnel effect|A-2-R,B-545-OUT;n:type:ShaderForge.SFN_Normalize,id:1016,x:33376,y:32849,cmnt:Normal Map|IN-148-OUT;n:type:ShaderForge.SFN_Multiply,id:1028,x:33332,y:31892,cmnt:Colour map and Blend Map|A-2-RGB,B-1031-OUT;n:type:ShaderForge.SFN_Lerp,id:1031,x:33544,y:31924|A-1041-OUT,B-2-A,T-1037-OUT;n:type:ShaderForge.SFN_Slider,id:1037,x:33761,y:31982,ptlb:AO Strength,ptin:_AOStrength,min:0,cur:0.5,max:1;n:type:ShaderForge.SFN_Vector3,id:1041,x:33761,y:31880,v1:1,v2:1,v3:1;n:type:ShaderForge.SFN_Blend,id:1091,x:33652,y:32525,blmd:1,clmp:True|SRC-2-R,DST-145-A;n:type:ShaderForge.SFN_RemapRange,id:1176,x:34165,y:33153,frmn:0,frmx:1,tomn:-1,tomx:1|IN-145-RGB;n:type:ShaderForge.SFN_Tex2d,id:1306,x:33320,y:32051,ptlb:Blend Texture Map,ptin:_BlendTextureMap,ntxv:0,isnm:False;proporder:2-1037-1306-533-447-69-9-177-571-626-145-476;pass:END;sub:END;*/
- Shader "Shader Forge/EnvironmentRocks" {
- Properties {
- _ColourMap ("Colour Map", 2D) = "white" {}
- _AOStrength ("AO Strength", Range(0, 1)) = 0.5
- _BlendTextureMap ("Blend Texture Map", 2D) = "white" {}
- _BlendTextureWeight ("Blend Texture Weight", Range(0, 1)) = 0
- _SpecularIntensity ("Specular Intensity", Range(0, 1)) = 0
- _GlossRange ("Gloss Range", Float ) = 1
- _NormalMap ("Normal Map", 2D) = "bump" {}
- _NormalBlendWeight ("Normal Blend Weight", Range(0, 1)) = 0
- _FresnelColour ("Fresnel Colour", Color) = (0.5,0.5,0.5,1)
- _FresnelValue ("Fresnel Value", Float ) = 0
- _DetailNormalMap ("Detail Normal Map", 2D) = "white" {}
- _BlendTexture ("Blend Texture", 2D) = "white" {}
- }
- SubShader {
- Tags {
- "RenderType"="Opaque"
- }
- Pass {
- Name "ForwardBase"
- Tags {
- "LightMode"="ForwardBase"
- }
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #define UNITY_PASS_FORWARDBASE
- #include "UnityCG.cginc"
- #include "AutoLight.cginc"
- #pragma multi_compile_fwdbase_fullshadows
- #pragma exclude_renderers xbox360 ps3 flash d3d11_9x
- #pragma target 3.0
- uniform float4 _LightColor0;
- uniform sampler2D _ColourMap; uniform float4 _ColourMap_ST;
- uniform sampler2D _NormalMap; uniform float4 _NormalMap_ST;
- uniform float _GlossRange;
- uniform sampler2D _DetailNormalMap; uniform float4 _DetailNormalMap_ST;
- uniform float _NormalBlendWeight;
- uniform float _SpecularIntensity;
- uniform float _BlendTextureWeight;
- uniform float4 _FresnelColour;
- uniform float _FresnelValue;
- uniform float _AOStrength;
- uniform sampler2D _BlendTextureMap; uniform float4 _BlendTextureMap_ST;
- struct VertexInput {
- float4 vertex : POSITION;
- float3 normal : NORMAL;
- float4 tangent : TANGENT;
- float4 uv0 : TEXCOORD0;
- };
- struct VertexOutput {
- float4 pos : SV_POSITION;
- float4 uv0 : TEXCOORD0;
- float4 posWorld : TEXCOORD1;
- float3 normalDir : TEXCOORD2;
- float3 tangentDir : TEXCOORD3;
- float3 binormalDir : TEXCOORD4;
- LIGHTING_COORDS(5,6)
- };
- VertexOutput vert (VertexInput v) {
- VertexOutput o;
- o.uv0 = v.uv0;
- o.normalDir = mul(float4(v.normal,0), _World2Object).xyz;
- o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
- o.binormalDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
- o.posWorld = mul(_Object2World, v.vertex);
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
- TRANSFER_VERTEX_TO_FRAGMENT(o)
- return o;
- }
- fixed4 frag(VertexOutput i) : COLOR {
- i.normalDir = normalize(i.normalDir);
- float3x3 tangentTransform = float3x3( i.tangentDir, i.binormalDir, i.normalDir);
- float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
- /////// Normals:
- float2 node_1339 = i.uv0;
- float4 node_145 = tex2D(_DetailNormalMap,TRANSFORM_TEX(node_1339.rg, _DetailNormalMap));
- float3 node_148_nrm_base = UnpackNormal(tex2D(_NormalMap,TRANSFORM_TEX(node_1339.rg, _NormalMap))).rgb + float3(0,0,1);
- float3 node_148_nrm_detail = lerp(float3(0,0,1),(node_145.rgb*2.0+-1.0),_NormalBlendWeight) * float3(-1,-1,1);
- float3 node_148_nrm_combined = node_148_nrm_base*dot(node_148_nrm_base, node_148_nrm_detail)/node_148_nrm_base.z - node_148_nrm_detail;
- float3 node_148 = node_148_nrm_combined;
- float3 normalLocal = normalize(node_148);
- float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
- float3 lightDirection = normalize(_WorldSpaceLightPos0.xyz);
- float3 halfDirection = normalize(viewDirection+lightDirection);
- ////// Lighting:
- float attenuation = LIGHT_ATTENUATION(i);
- float3 attenColor = attenuation * _LightColor0.xyz;
- /////// Diffuse:
- float NdotL = dot( normalDirection, lightDirection );
- float3 diffuse = max( 0.0, NdotL) * attenColor + UNITY_LIGHTMODEL_AMBIENT.xyz;
- ////// Emissive:
- float4 node_2 = tex2D(_ColourMap,TRANSFORM_TEX(node_1339.rg, _ColourMap));
- float3 emissive = (node_2.r*(pow(1.0-max(0,dot(normalDirection, viewDirection)),5.0)*(_FresnelValue*pow(_FresnelColour.rgb,2.0))));
- ///////// Gloss:
- float gloss = _GlossRange;
- float specPow = exp2( gloss * 10.0+1.0);
- ////// Specular:
- NdotL = max(0.0, NdotL);
- float node_420 = (saturate((node_2.r*node_145.a))*node_2.g*_SpecularIntensity); // Specular
- float3 specularColor = float3(node_420,node_420,node_420);
- float3 specular = (floor(attenuation) * _LightColor0.xyz) * pow(max(0,dot(halfDirection,normalDirection)),specPow) * specularColor;
- float3 finalColor = 0;
- float3 diffuseLight = diffuse;
- float3 node_1028 = (node_2.rgb*lerp(float3(1,1,1),float3(node_2.a,node_2.a,node_2.a),_AOStrength)); // Colour map and Blend Map
- float4 node_1306 = tex2D(_BlendTextureMap,TRANSFORM_TEX(node_1339.rg, _BlendTextureMap));
- finalColor += diffuseLight * lerp(node_1028,node_1306.rgb,_BlendTextureWeight);
- finalColor += specular;
- finalColor += emissive;
- /// Final Color:
- return fixed4(finalColor,1);
- }
- ENDCG
- }
- Pass {
- Name "ForwardAdd"
- Tags {
- "LightMode"="ForwardAdd"
- }
- Blend One One
- Fog { Color (0,0,0,0) }
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #define UNITY_PASS_FORWARDADD
- #include "UnityCG.cginc"
- #include "AutoLight.cginc"
- #pragma multi_compile_fwdadd_fullshadows
- #pragma exclude_renderers xbox360 ps3 flash d3d11_9x
- #pragma target 3.0
- uniform float4 _LightColor0;
- uniform sampler2D _ColourMap; uniform float4 _ColourMap_ST;
- uniform sampler2D _NormalMap; uniform float4 _NormalMap_ST;
- uniform float _GlossRange;
- uniform sampler2D _DetailNormalMap; uniform float4 _DetailNormalMap_ST;
- uniform float _NormalBlendWeight;
- uniform float _SpecularIntensity;
- uniform float _BlendTextureWeight;
- uniform float4 _FresnelColour;
- uniform float _FresnelValue;
- uniform float _AOStrength;
- uniform sampler2D _BlendTextureMap; uniform float4 _BlendTextureMap_ST;
- struct VertexInput {
- float4 vertex : POSITION;
- float3 normal : NORMAL;
- float4 tangent : TANGENT;
- float4 uv0 : TEXCOORD0;
- };
- struct VertexOutput {
- float4 pos : SV_POSITION;
- float4 uv0 : TEXCOORD0;
- float4 posWorld : TEXCOORD1;
- float3 normalDir : TEXCOORD2;
- float3 tangentDir : TEXCOORD3;
- float3 binormalDir : TEXCOORD4;
- LIGHTING_COORDS(5,6)
- };
- VertexOutput vert (VertexInput v) {
- VertexOutput o;
- o.uv0 = v.uv0;
- o.normalDir = mul(float4(v.normal,0), _World2Object).xyz;
- o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
- o.binormalDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
- o.posWorld = mul(_Object2World, v.vertex);
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
- TRANSFER_VERTEX_TO_FRAGMENT(o)
- return o;
- }
- fixed4 frag(VertexOutput i) : COLOR {
- i.normalDir = normalize(i.normalDir);
- float3x3 tangentTransform = float3x3( i.tangentDir, i.binormalDir, i.normalDir);
- float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
- /////// Normals:
- float2 node_1340 = i.uv0;
- float4 node_145 = tex2D(_DetailNormalMap,TRANSFORM_TEX(node_1340.rg, _DetailNormalMap));
- float3 node_148_nrm_base = UnpackNormal(tex2D(_NormalMap,TRANSFORM_TEX(node_1340.rg, _NormalMap))).rgb + float3(0,0,1);
- float3 node_148_nrm_detail = lerp(float3(0,0,1),(node_145.rgb*2.0+-1.0),_NormalBlendWeight) * float3(-1,-1,1);
- float3 node_148_nrm_combined = node_148_nrm_base*dot(node_148_nrm_base, node_148_nrm_detail)/node_148_nrm_base.z - node_148_nrm_detail;
- float3 node_148 = node_148_nrm_combined;
- float3 normalLocal = normalize(node_148);
- float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
- float3 lightDirection = normalize(lerp(_WorldSpaceLightPos0.xyz, _WorldSpaceLightPos0.xyz - i.posWorld.xyz,_WorldSpaceLightPos0.w));
- float3 halfDirection = normalize(viewDirection+lightDirection);
- ////// Lighting:
- float attenuation = LIGHT_ATTENUATION(i);
- float3 attenColor = attenuation * _LightColor0.xyz;
- /////// Diffuse:
- float NdotL = dot( normalDirection, lightDirection );
- float3 diffuse = max( 0.0, NdotL) * attenColor;
- ///////// Gloss:
- float gloss = _GlossRange;
- float specPow = exp2( gloss * 10.0+1.0);
- ////// Specular:
- NdotL = max(0.0, NdotL);
- float4 node_2 = tex2D(_ColourMap,TRANSFORM_TEX(node_1340.rg, _ColourMap));
- float node_420 = (saturate((node_2.r*node_145.a))*node_2.g*_SpecularIntensity); // Specular
- float3 specularColor = float3(node_420,node_420,node_420);
- float3 specular = attenColor * pow(max(0,dot(halfDirection,normalDirection)),specPow) * specularColor;
- float3 finalColor = 0;
- float3 diffuseLight = diffuse;
- float3 node_1028 = (node_2.rgb*lerp(float3(1,1,1),float3(node_2.a,node_2.a,node_2.a),_AOStrength)); // Colour map and Blend Map
- float4 node_1306 = tex2D(_BlendTextureMap,TRANSFORM_TEX(node_1340.rg, _BlendTextureMap));
- finalColor += diffuseLight * lerp(node_1028,node_1306.rgb,_BlendTextureWeight);
- finalColor += specular;
- /// Final Color:
- return fixed4(finalColor * 1,0);
- }
- ENDCG
- }
- }
- FallBack "Bumped Specular"
- CustomEditor "ShaderForgeMaterialInspector"
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement