You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
262 lines
25 KiB
Plaintext
262 lines
25 KiB
Plaintext
|
4 years ago
|
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
|
||
|
|
|
||
|
|
// Shader created with Shader Forge v1.36
|
||
|
|
// 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.36;sub:START;pass:START;ps:flbk:,iptp:0,cusa:False,bamd:0,cgin:,lico:1,lgpr:1,limd:1,spmd:0,trmd:0,grmd:0,uamb:True,mssp:True,bkdf:False,hqlp:False,rprd:False,enco:False,rmgx:True,imps:True,rpth:0,vtps:0,hqsc:True,nrmq:1,nrsp:0,vomd:0,spxs:False,tesm:0,olmd:1,culm:0,bsrc:3,bdst:7,dpts:2,wrdp:False,dith:0,atcv:False,rfrpo:True,rfrpn:Refraction,coma:15,ufog:False,aust:True,igpj:True,qofs:0,qpre:3,rntp:2,fgom:False,fgoc:False,fgod:False,fgor:False,fgmd:0,fgcr:0.01027249,fgcg:0.2571382,fgcb:0.2794118,fgca:1,fgde:0.85,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,fsmp:False;n:type:ShaderForge.SFN_Final,id:3138,x:39103,y:32740,varname:node_3138,prsc:2|diff-8234-OUT,spec-1036-OUT,gloss-4729-OUT,normal-1964-OUT,emission-6069-OUT,alpha-3237-OUT;n:type:ShaderForge.SFN_Color,id:7241,x:37623,y:33113,ptovrint:False,ptlb:Color,ptin:_Color,varname:_Color,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,c1:0.07843138,c2:0.3921569,c3:0.7843137,c4:1;n:type:ShaderForge.SFN_Tex2d,id:2459,x:32090,y:33099,varname:_Layers,prsc:2,tex:fb6566c21f717904f83743a5a76dd0b0,ntxv:0,isnm:False|UVIN-6492-UVOUT,MIP-6073-OUT,TEX-4819-TEX;n:type:ShaderForge.SFN_FragmentPosition,id:6633,x:30687,y:32701,varname:node_6633,prsc:2;n:type:ShaderForge.SFN_ComponentMask,id:3244,x:30844,y:32834,varname:node_3244,prsc:2,cc1:0,cc2:2,cc3:-1,cc4:-1|IN-6633-XYZ;n:type:ShaderForge.SFN_Divide,id:8317,x:31258,y:32986,varname:node_8317,prsc:2|A-3244-OUT,B-1364-OUT;n:type:ShaderForge.SFN_Slider,id:1364,x:30537,y:33113,ptovrint:False,ptlb:Scale,ptin:_Scale,varname:_Scale,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:1,cur:1,max:200;n:type:ShaderForge.SFN_Multiply,id:1038,x:31835,y:33208,varname:node_1038,prsc:2|A-1090-UVOUT,B-4511-OUT;n:type:ShaderForge.SFN_Vector1,id:4511,x:31628,y:33301,varname:node_4511,prsc:2,v1:1.1;n:type:ShaderForge.SFN_Tex2dAsset,id:4819,x:31562,y:32755,ptovrint:False,ptlb:node_4819,ptin:_node_4819,varname:_node_4819,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,tex:fb6566c21f717904f83743a5a76dd0b0,ntxv:3,isnm:True;n:type:ShaderForge.SFN_Tex2d,id:8684,x:32078,y:33283,varname:_node_2312,prsc:2,tex:fb6566c21f717904f83743a5a76dd0b0,ntxv:0,isnm:False|UVIN-1038-OUT,MIP-6073-OUT,TEX-4819-TEX;n:type:ShaderForge.SFN_Slider,id:3005,x:37774,y:32821,ptovrint:False,ptlb:Specular,ptin:_Specular,varname:_Specular,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:0.7948718,max:1;n:type:ShaderForge.SFN_Slider,id:6924,x:31805,y:34964,ptovrint:False,ptlb:Gloss,ptin:_Gloss,varname:_Gloss,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:0.8205128,max:1;n:type:ShaderForge.SFN_Tex2d,id:9650,x:30604,y:31814,ptovrint:False,ptlb:NormalMap blend mask,ptin:_NormalMapblendmask,varname:_NormalMapblendmask,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,tex:e80c3c84ea861404d8a427db8b7abf04,ntxv:0,isnm:False|UVIN-7490-UVOUT;n:type:ShaderForge.SFN_Lerp,id:6208,x:32553,y:33126,varname:node_6208,prsc:2|A-2459-RGB,B-8684-RGB,T-1683-OUT;n:type:ShaderForge.SFN_TexCoord,id:7490,x:30354,y:31784,varname:node_7490,prsc:2,uv:0,uaff:False;n:type:ShaderForge.SFN_Multiply,id:9333,x:31287,y:31584,varname:node_9333,prsc:2|A-3786-OUT,B-9650-R,C-9650-R;n:type:ShaderForge.SFN_Vector1,id:3786,x:31141,y:31771,varname:node_3786,prsc:2,v1:4;n:type:ShaderForge.SFN_Clamp01,id:1683,x:31498,y:31629,varname:node_1683,prsc:2|IN-9333-OUT;n:type:ShaderForge.SFN_Multiply,id:9374,x:31261,y:31891,varname:node_9374,prsc:2|A-929-OUT,B-9650-G,C-9650-G;n:type:ShaderForge.SFN_Vector1,id:929,x:31115,y:32077,varname:node_929,prsc:2,v1:4;n:type:ShaderForge.SFN_Clamp01,id:8889,x:31472,y:31936,varname:node_8889,prsc:2|IN-9374-OUT;n:type:ShaderForge.SFN_Multiply,id:6727,x:31858,y:33486,varname:node_6727,prsc:2|A-1038-OUT,B-2650-OUT;n:type:ShaderForge.SFN_Vector1,id:2650,x:31651,y:33579,varname:no
|
||
|
|
|
||
|
|
Shader "Fog Volume/WaterPlane" {
|
||
|
|
Properties {
|
||
|
|
_Color ("Color", Color) = (0.07843138,0.3921569,0.7843137,1)
|
||
|
|
_Scale ("Scale", Range(1, 200)) = 1
|
||
|
|
_node_4819 ("node_4819", 2D) = "bump" {}
|
||
|
|
_Specular ("Specular", Range(0, 1)) = 0.7948718
|
||
|
|
_Gloss ("Gloss", Range(0, 1)) = 0.8205128
|
||
|
|
_NormalMapblendmask ("NormalMap blend mask", 2D) = "white" {}
|
||
|
|
_Normal ("Normal", Range(0, 1)) = 1
|
||
|
|
_NormalMult ("NormalMult", Color) = (1,0.9310346,0,1)
|
||
|
|
_Pan ("Pan", Range(0, 1)) = 0.1111111
|
||
|
|
_Fadedistance ("Fade distance", Range(1, 50000)) = 1
|
||
|
|
_MIPS ("MIPS", Range(1, 50000)) = 1
|
||
|
|
_GlossMap ("Gloss", 2D) = "white" {}
|
||
|
|
_Backcatter ("Backcatter", Color) = (0.0227076,0.5684106,0.6176471,1)
|
||
|
|
_Backcatterpow ("Backcatter pow", Range(1, 60)) = 30.78636
|
||
|
|
_Normalfadedist ("Normal fade dist", Range(1, 12000)) = 1
|
||
|
|
[HideInInspector]_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
|
||
|
|
}
|
||
|
|
SubShader {
|
||
|
|
Tags {
|
||
|
|
"IgnoreProjector"="True"
|
||
|
|
"Queue"="Transparent"
|
||
|
|
"RenderType"="Transparent"
|
||
|
|
}
|
||
|
|
Pass {
|
||
|
|
Name "FORWARD"
|
||
|
|
Tags {
|
||
|
|
"LightMode"="ForwardBase"
|
||
|
|
}
|
||
|
|
Blend SrcAlpha OneMinusSrcAlpha
|
||
|
|
ZWrite Off
|
||
|
|
|
||
|
|
CGPROGRAM
|
||
|
|
#pragma vertex vert
|
||
|
|
#pragma fragment frag
|
||
|
|
//#define UNITY_PASS_FORWARDBASE
|
||
|
|
#include "UnityCG.cginc"
|
||
|
|
#pragma multi_compile_fwdbase
|
||
|
|
#pragma only_renderers d3d9 d3d11 glcore gles
|
||
|
|
#pragma target 3.0
|
||
|
|
uniform float4 _LightColor0;
|
||
|
|
uniform sampler2D _CameraDepthTexture;
|
||
|
|
uniform float4 _TimeEditor;
|
||
|
|
uniform float4 _Color;
|
||
|
|
uniform float _Scale;
|
||
|
|
uniform sampler2D _node_4819; uniform float4 _node_4819_ST;
|
||
|
|
uniform float _Specular;
|
||
|
|
uniform float _Gloss;
|
||
|
|
uniform sampler2D _NormalMapblendmask; uniform float4 _NormalMapblendmask_ST;
|
||
|
|
uniform float _Normal;
|
||
|
|
uniform float4 _NormalMult;
|
||
|
|
uniform float _Pan;
|
||
|
|
uniform float _Fadedistance;
|
||
|
|
uniform float _MIPS;
|
||
|
|
uniform sampler2D _GlossMap; uniform float4 _GlossMap_ST;
|
||
|
|
uniform float4 _Backcatter;
|
||
|
|
uniform float _Backcatterpow;
|
||
|
|
uniform float _Normalfadedist;
|
||
|
|
struct VertexInput {
|
||
|
|
float4 vertex : POSITION;
|
||
|
|
float3 normal : NORMAL;
|
||
|
|
float4 tangent : TANGENT;
|
||
|
|
float2 texcoord0 : TEXCOORD0;
|
||
|
|
};
|
||
|
|
struct VertexOutput {
|
||
|
|
float4 pos : SV_POSITION;
|
||
|
|
float2 uv0 : TEXCOORD0;
|
||
|
|
float4 posWorld : TEXCOORD1;
|
||
|
|
float3 normalDir : TEXCOORD2;
|
||
|
|
float3 tangentDir : TEXCOORD3;
|
||
|
|
float3 bitangentDir : TEXCOORD4;
|
||
|
|
float4 projPos : TEXCOORD5;
|
||
|
|
};
|
||
|
|
VertexOutput vert (VertexInput v) {
|
||
|
|
VertexOutput o = (VertexOutput)0;
|
||
|
|
o.uv0 = v.texcoord0;
|
||
|
|
o.normalDir = UnityObjectToWorldNormal(v.normal);
|
||
|
|
o.tangentDir = normalize( mul( unity_ObjectToWorld, float4( v.tangent.xyz, 0.0 ) ).xyz );
|
||
|
|
o.bitangentDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
|
||
|
|
o.posWorld = mul(unity_ObjectToWorld, v.vertex);
|
||
|
|
float3 lightColor = _LightColor0.rgb;
|
||
|
|
o.pos = UnityObjectToClipPos(v.vertex );
|
||
|
|
o.projPos = ComputeScreenPos (o.pos);
|
||
|
|
COMPUTE_EYEDEPTH(o.projPos.z);
|
||
|
|
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);
|
||
|
|
float4 node_7600 = _Time + _TimeEditor;
|
||
|
|
float node_2890 = (_Pan*node_7600.r);
|
||
|
|
float2 node_8317 = (i.posWorld.rgb.rb/_Scale);
|
||
|
|
float2 node_6492 = (node_8317+node_2890*float2(-1,1));
|
||
|
|
float node_6073 = (saturate((distance(i.posWorld.rgb,_WorldSpaceCameraPos)/_MIPS))*5.0);
|
||
|
|
float3 _Layers = UnpackNormal(tex2Dlod(_node_4819,float4(TRANSFORM_TEX(node_6492, _node_4819),0.0,node_6073)));
|
||
|
|
float2 node_1038 = ((node_8317+node_2890*float2(1,1))*1.1);
|
||
|
|
float3 _node_2312 = UnpackNormal(tex2Dlod(_node_4819,float4(TRANSFORM_TEX(node_1038, _node_4819),0.0,node_6073)));
|
||
|
|
float4 _NormalMapblendmask_var = tex2D(_NormalMapblendmask,TRANSFORM_TEX(i.uv0, _NormalMapblendmask));
|
||
|
|
float2 node_6727 = (node_1038*1.1);
|
||
|
|
float3 _node_9753 = UnpackNormal(tex2Dlod(_node_4819,float4(TRANSFORM_TEX(node_6727, _node_4819),0.0,node_6073)));
|
||
|
|
float3 normalLocal = (lerp(float3(0,0,1),lerp(lerp(_Layers.rgb,_node_2312.rgb,saturate((4.0*_NormalMapblendmask_var.r*_NormalMapblendmask_var.r))),_node_9753.rgb,saturate((4.0*_NormalMapblendmask_var.g*_NormalMapblendmask_var.g))),(_Normal*(1.0 - saturate((distance(i.posWorld.rgb,_WorldSpaceCameraPos)/_Normalfadedist)))))*_NormalMult.rgb);
|
||
|
|
float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
|
||
|
|
float sceneZ = max(0,LinearEyeDepth (UNITY_SAMPLE_DEPTH(tex2Dproj(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos)))) - _ProjectionParams.g);
|
||
|
|
float partZ = max(0,i.projPos.z - _ProjectionParams.g);
|
||
|
|
float3 lightDirection = normalize(_WorldSpaceLightPos0.xyz);
|
||
|
|
float3 lightColor = _LightColor0.rgb;
|
||
|
|
float3 halfDirection = normalize(viewDirection+lightDirection);
|
||
|
|
////// Lighting:
|
||
|
|
float attenuation = 1;
|
||
|
|
float3 attenColor = attenuation * _LightColor0.xyz;
|
||
|
|
///////// Gloss:
|
||
|
|
float4 _GlossMap_var = tex2D(_GlossMap,TRANSFORM_TEX(i.uv0, _GlossMap));
|
||
|
|
float gloss = (_GlossMap_var.r*_Gloss);
|
||
|
|
float specPow = exp2( gloss * 10.0 + 1.0 );
|
||
|
|
////// Specular:
|
||
|
|
float NdotL = saturate(dot( normalDirection, lightDirection ));
|
||
|
|
float node_1036 = (_Specular*30.0*(pow(1.0-max(0,dot(normalDirection, viewDirection)),5.0)+0.02));
|
||
|
|
float3 specularColor = float3(node_1036,node_1036,node_1036);
|
||
|
|
float3 directSpecular = attenColor * pow(max(0,dot(halfDirection,normalDirection)),specPow)*specularColor;
|
||
|
|
float3 specular = directSpecular;
|
||
|
|
/////// Diffuse:
|
||
|
|
NdotL = max(0.0,dot( normalDirection, lightDirection ));
|
||
|
|
float3 directDiffuse = max( 0.0, NdotL) * attenColor;
|
||
|
|
float3 indirectDiffuse = float3(0,0,0);
|
||
|
|
indirectDiffuse += UNITY_LIGHTMODEL_AMBIENT.rgb; // Ambient Light
|
||
|
|
float node_8234 = 0.0;
|
||
|
|
float3 diffuseColor = float3(node_8234,node_8234,node_8234);
|
||
|
|
float3 diffuse = (directDiffuse + indirectDiffuse) * diffuseColor;
|
||
|
|
////// Emissive:
|
||
|
|
float3 emissive = (_Color.rgb+(pow((1.0 - max(0,dot(viewDirection,halfDirection))),_Backcatterpow)*_Backcatter.rgb));
|
||
|
|
/// Final Color:
|
||
|
|
float3 finalColor = diffuse + specular + emissive;
|
||
|
|
return fixed4(finalColor,(exp((-1*(distance(i.posWorld.rgb,_WorldSpaceCameraPos)/_Fadedistance)))*saturate((sceneZ-partZ))));
|
||
|
|
}
|
||
|
|
ENDCG
|
||
|
|
}
|
||
|
|
Pass {
|
||
|
|
Name "FORWARD_DELTA"
|
||
|
|
Tags {
|
||
|
|
"LightMode"="ForwardAdd"
|
||
|
|
}
|
||
|
|
Blend One One
|
||
|
|
ZWrite Off
|
||
|
|
|
||
|
|
CGPROGRAM
|
||
|
|
#pragma vertex vert
|
||
|
|
#pragma fragment frag
|
||
|
|
//#define UNITY_PASS_FORWARDADD
|
||
|
|
#include "UnityCG.cginc"
|
||
|
|
#include "AutoLight.cginc"
|
||
|
|
#pragma multi_compile_fwdadd
|
||
|
|
#pragma only_renderers d3d9 d3d11 glcore gles
|
||
|
|
#pragma target 3.0
|
||
|
|
uniform float4 _LightColor0;
|
||
|
|
uniform sampler2D _CameraDepthTexture;
|
||
|
|
uniform float4 _TimeEditor;
|
||
|
|
uniform float4 _Color;
|
||
|
|
uniform float _Scale;
|
||
|
|
uniform sampler2D _node_4819; uniform float4 _node_4819_ST;
|
||
|
|
uniform float _Specular;
|
||
|
|
uniform float _Gloss;
|
||
|
|
uniform sampler2D _NormalMapblendmask; uniform float4 _NormalMapblendmask_ST;
|
||
|
|
uniform float _Normal;
|
||
|
|
uniform float4 _NormalMult;
|
||
|
|
uniform float _Pan;
|
||
|
|
uniform float _Fadedistance;
|
||
|
|
uniform float _MIPS;
|
||
|
|
uniform sampler2D _GlossMap; uniform float4 _GlossMap_ST;
|
||
|
|
uniform float4 _Backcatter;
|
||
|
|
uniform float _Backcatterpow;
|
||
|
|
uniform float _Normalfadedist;
|
||
|
|
struct VertexInput {
|
||
|
|
float4 vertex : POSITION;
|
||
|
|
float3 normal : NORMAL;
|
||
|
|
float4 tangent : TANGENT;
|
||
|
|
float2 texcoord0 : TEXCOORD0;
|
||
|
|
};
|
||
|
|
struct VertexOutput {
|
||
|
|
float4 pos : SV_POSITION;
|
||
|
|
float2 uv0 : TEXCOORD0;
|
||
|
|
float4 posWorld : TEXCOORD1;
|
||
|
|
float3 normalDir : TEXCOORD2;
|
||
|
|
float3 tangentDir : TEXCOORD3;
|
||
|
|
float3 bitangentDir : TEXCOORD4;
|
||
|
|
float4 projPos : TEXCOORD5;
|
||
|
|
LIGHTING_COORDS(6,7)
|
||
|
|
};
|
||
|
|
VertexOutput vert (VertexInput v) {
|
||
|
|
VertexOutput o = (VertexOutput)0;
|
||
|
|
o.uv0 = v.texcoord0;
|
||
|
|
o.normalDir = UnityObjectToWorldNormal(v.normal);
|
||
|
|
o.tangentDir = normalize( mul( unity_ObjectToWorld, float4( v.tangent.xyz, 0.0 ) ).xyz );
|
||
|
|
o.bitangentDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
|
||
|
|
o.posWorld = mul(unity_ObjectToWorld, v.vertex);
|
||
|
|
float3 lightColor = _LightColor0.rgb;
|
||
|
|
o.pos = UnityObjectToClipPos(v.vertex );
|
||
|
|
o.projPos = ComputeScreenPos (o.pos);
|
||
|
|
COMPUTE_EYEDEPTH(o.projPos.z);
|
||
|
|
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);
|
||
|
|
float4 node_7600 = _Time + _TimeEditor;
|
||
|
|
float node_2890 = (_Pan*node_7600.r);
|
||
|
|
float2 node_8317 = (i.posWorld.rgb.rb/_Scale);
|
||
|
|
float2 node_6492 = (node_8317+node_2890*float2(-1,1));
|
||
|
|
float node_6073 = (saturate((distance(i.posWorld.rgb,_WorldSpaceCameraPos)/_MIPS))*5.0);
|
||
|
|
float3 _Layers = UnpackNormal(tex2Dlod(_node_4819,float4(TRANSFORM_TEX(node_6492, _node_4819),0.0,node_6073)));
|
||
|
|
float2 node_1038 = ((node_8317+node_2890*float2(1,1))*1.1);
|
||
|
|
float3 _node_2312 = UnpackNormal(tex2Dlod(_node_4819,float4(TRANSFORM_TEX(node_1038, _node_4819),0.0,node_6073)));
|
||
|
|
float4 _NormalMapblendmask_var = tex2D(_NormalMapblendmask,TRANSFORM_TEX(i.uv0, _NormalMapblendmask));
|
||
|
|
float2 node_6727 = (node_1038*1.1);
|
||
|
|
float3 _node_9753 = UnpackNormal(tex2Dlod(_node_4819,float4(TRANSFORM_TEX(node_6727, _node_4819),0.0,node_6073)));
|
||
|
|
float3 normalLocal = (lerp(float3(0,0,1),lerp(lerp(_Layers.rgb,_node_2312.rgb,saturate((4.0*_NormalMapblendmask_var.r*_NormalMapblendmask_var.r))),_node_9753.rgb,saturate((4.0*_NormalMapblendmask_var.g*_NormalMapblendmask_var.g))),(_Normal*(1.0 - saturate((distance(i.posWorld.rgb,_WorldSpaceCameraPos)/_Normalfadedist)))))*_NormalMult.rgb);
|
||
|
|
float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
|
||
|
|
float sceneZ = max(0,LinearEyeDepth (UNITY_SAMPLE_DEPTH(tex2Dproj(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos)))) - _ProjectionParams.g);
|
||
|
|
float partZ = max(0,i.projPos.z - _ProjectionParams.g);
|
||
|
|
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;
|
||
|
|
///////// Gloss:
|
||
|
|
float4 _GlossMap_var = tex2D(_GlossMap,TRANSFORM_TEX(i.uv0, _GlossMap));
|
||
|
|
float gloss = (_GlossMap_var.r*_Gloss);
|
||
|
|
float specPow = exp2( gloss * 10.0 + 1.0 );
|
||
|
|
////// Specular:
|
||
|
|
float NdotL = saturate(dot( normalDirection, lightDirection ));
|
||
|
|
float node_1036 = (_Specular*30.0*(pow(1.0-max(0,dot(normalDirection, viewDirection)),5.0)+0.02));
|
||
|
|
float3 specularColor = float3(node_1036,node_1036,node_1036);
|
||
|
|
float3 directSpecular = attenColor * pow(max(0,dot(halfDirection,normalDirection)),specPow)*specularColor;
|
||
|
|
float3 specular = directSpecular;
|
||
|
|
/////// Diffuse:
|
||
|
|
NdotL = max(0.0,dot( normalDirection, lightDirection ));
|
||
|
|
float3 directDiffuse = max( 0.0, NdotL) * attenColor;
|
||
|
|
float node_8234 = 0.0;
|
||
|
|
float3 diffuseColor = float3(node_8234,node_8234,node_8234);
|
||
|
|
float3 diffuse = directDiffuse * diffuseColor;
|
||
|
|
/// Final Color:
|
||
|
|
float3 finalColor = diffuse + specular;
|
||
|
|
return fixed4(finalColor * (exp((-1*(distance(i.posWorld.rgb,_WorldSpaceCameraPos)/_Fadedistance)))*saturate((sceneZ-partZ))),0);
|
||
|
|
}
|
||
|
|
ENDCG
|
||
|
|
}
|
||
|
|
}
|
||
|
|
FallBack "Diffuse"
|
||
|
|
CustomEditor "ShaderForgeMaterialInspector"
|
||
|
|
}
|