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

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"
}