// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
|
|
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
|
|
|
|
Shader "MyShader/Water"
|
|
{
|
|
Properties
|
|
{
|
|
_farColor("far-Color", Color) = (1,1,1,1)
|
|
_ColorStrong ("Color-Change", Range (0.1, 2)) = 1
|
|
_nearColor("near-Color", Color) = (1,1,1,1)
|
|
_MainTex("zhezhao-R,wave-G,NoiseScale-B", 2D) = "white" {}
|
|
_wave("waveScale-x,WaveSpeed-y NoiseScale-z,NoiseSpeed-w",vector)=(1.7,0.02,7.3,0.04)
|
|
_transparent("transparent", Range(0.5, 1)) = 1
|
|
_opaque("near-opaque", Range(0, 0.8)) = 0
|
|
_EColor("EnvironmentalColor", Color) = (1,1,1,1)
|
|
}
|
|
|
|
SubShader
|
|
{
|
|
tags{"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True"}
|
|
Blend SrcAlpha OneMinusSrcAlpha
|
|
Pass
|
|
{
|
|
CGPROGRAM
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#pragma multi_compile_fog
|
|
#include "UnityCG.cginc"
|
|
sampler2D _MainTex;
|
|
fixed4 _MainTex_ST,_farColor,_nearColor,_EColor,_wave;
|
|
fixed _ColorStrong,_transparent,_opaque;
|
|
|
|
struct a2v {
|
|
float4 vertex : POSITION;
|
|
fixed4 color : COLOR;
|
|
fixed4 texcoord : TEXCOORD0;
|
|
};
|
|
|
|
struct v2f {
|
|
float4 pos : POSITION;
|
|
fixed2 uv : TEXCOORD0;
|
|
fixed4 color : COLOR;
|
|
fixed diff : TEXCOORD1;
|
|
UNITY_FOG_COORDS(2)
|
|
};
|
|
|
|
v2f vert(a2v v){
|
|
v2f o;
|
|
o.pos = UnityObjectToClipPos(v.vertex);
|
|
o.uv = v.texcoord.xy;
|
|
o.diff = 0.5;
|
|
o.color = v.color;
|
|
UNITY_TRANSFER_FOG(o,o.pos);
|
|
return o;
|
|
}
|
|
|
|
half4 frag(v2f i):COLOR
|
|
{
|
|
fixed2 waveOffset =(tex2D(_MainTex, i.uv.xy*_wave.z + float2(0, _Time.y * _wave.w)).b + tex2D(_MainTex, i.uv.xy*_wave.z + float2(_Time.y * _wave.w, 0)).b);
|
|
|
|
fixed2 ruv = float2(i.uv.x, 1 - i.uv.y) + waveOffset * 0.01;
|
|
float4 tex = tex2D (_MainTex, ruv.xy*float2(_wave.x,_wave.x)+float2(0, _Time.y * _wave.y)) ;
|
|
fixed3 near = i.diff * _ColorStrong;
|
|
fixed3 far = max((1 - near), 0);
|
|
fixed3 ap = i.diff*_opaque;
|
|
float4 result;
|
|
result.rgb = (far*_EColor*tex.g + far*_farColor + near*_nearColor);
|
|
result.a = _transparent-ap;//
|
|
float4 c = result*i.color;
|
|
|
|
UNITY_APPLY_FOG(i.fogCoord, c);
|
|
return c;
|
|
}
|
|
|
|
ENDCG
|
|
}
|
|
}
|
|
}
|