|  | @@ -3,6 +3,7 @@ Shader "Custom/ParallaxCloud"
 | 
	
		
			
				|  |  |      Properties
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          _MainTex ("BaseMap:基础贴图", 2D) = "white" {}
 | 
	
		
			
				|  |  | +//        _TurbulenceTex ("turbulence:扰动图", 2D) = "white" {}
 | 
	
		
			
				|  |  |          _Color ("Color:颜色", Color) = (0.0, 0.0, 0.0, 1.0)
 | 
	
		
			
				|  |  |          _ParallaxSize ("ParallaxSize:视差映射强度", Range(0.0, 0.1)) = 0.0
 | 
	
		
			
				|  |  |          _ParallaxLayers ("ParallaxLayers:视差映射层数", Range(1.0, 50.0)) = 20
 | 
	
	
		
			
				|  | @@ -67,7 +68,10 @@ Shader "Custom/ParallaxCloud"
 | 
	
		
			
				|  |  |              SAMPLER(sampler_NormalTex);
 | 
	
		
			
				|  |  |              TEXTURE2D(_ParallaxTex);
 | 
	
		
			
				|  |  |              SAMPLER(sampler_ParallaxTex);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              sampler2D _CameraDepthTexture;
 | 
	
		
			
				|  |  | +            // TEXTURE2D(_TurbulenceTex);
 | 
	
		
			
				|  |  | +            // SAMPLER(sampler_TurbulenceTex);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              Varyings vert(Attributes v)
 | 
	
		
			
				|  |  |              {
 | 
	
	
		
			
				|  | @@ -78,8 +82,8 @@ Shader "Custom/ParallaxCloud"
 | 
	
		
			
				|  |  |                  o.tDirWS = normalize(TransformObjectToWorld(v.tangent.xyz));
 | 
	
		
			
				|  |  |                  o.bDirWS = normalize(cross(o.nDirWS, o.tDirWS) * v.tangent.w);
 | 
	
		
			
				|  |  |                  // o.uv.xy = TRANSFORM_TEX(v.uv, _MainTex) + float2(frac(_Time.y * _MoveSpeed), 0.0);
 | 
	
		
			
				|  |  | -                 o.uv.xy=  o.positionWS.xz*0.06+ float2(frac(_Time.y * _MoveSpeed), 0.0);
 | 
	
		
			
				|  |  | -                o.uv.zw = v.uv;
 | 
	
		
			
				|  |  | +                o.uv.xy = o.positionWS.xz * 0.06 + float2(frac(_Time.y * _MoveSpeed), 0.0);
 | 
	
		
			
				|  |  | +                o.uv.zw =  o.positionWS.xz * 0.02;
 | 
	
		
			
				|  |  |                  o.screenPos = ComputeScreenPos(o.positionCS);
 | 
	
		
			
				|  |  |                  return o;
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -127,17 +131,20 @@ Shader "Custom/ParallaxCloud"
 | 
	
		
			
				|  |  |                  dist = dist * 0.2;
 | 
	
		
			
				|  |  |                  dist = clamp(dist, 0, 1);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                float ptcpos=length(i.positionWS-_WorldSpaceCameraPos);
 | 
	
		
			
				|  |  | -                ptcpos= 1-(ptcpos-100)/50;
 | 
	
		
			
				|  |  | -                ptcpos=clamp(ptcpos,0,1);
 | 
	
		
			
				|  |  | +                float ptcpos = length(i.positionWS - _WorldSpaceCameraPos);
 | 
	
		
			
				|  |  | +                ptcpos = 1 - (ptcpos - 100) / 50;
 | 
	
		
			
				|  |  | +                ptcpos = clamp(ptcpos, 0, 1);
 | 
	
		
			
				|  |  |                  //Light mylight = GetMainLight();
 | 
	
		
			
				|  |  |                  //half3 light = mylight.color;
 | 
	
		
			
				|  |  |                  float3x3 TBN = float3x3(i.tDirWS, i.bDirWS, i.nDirWS);
 | 
	
		
			
				|  |  |                  float3 vDir = normalize(i.positionWS - _WorldSpaceCameraPos.xyz);
 | 
	
		
			
				|  |  |                  float3 vDirTS = mul(TBN, vDir);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                // float2 raoDongUv = SAMPLE_TEXTURE2D(_TurbulenceTex, sampler_TurbulenceTex,i.positionWS.xz * 0.06).r*0.1;
 | 
	
		
			
				|  |  | +                // i.uv.xy += raoDongUv;
 | 
	
		
			
				|  |  | +                // i.uv.zw += raoDongUv;
 | 
	
		
			
				|  |  |                  float3 var_MainTex = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv.zw).rgb;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  half2 offset = 0.0;
 | 
	
		
			
				|  |  |                  half currentDepth = 0.0;
 | 
	
		
			
				|  |  |                  half parallaxDepth = 0.0;
 | 
	
	
		
			
				|  | @@ -163,7 +170,7 @@ Shader "Custom/ParallaxCloud"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  half3 finalColor = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv.xy).rgb * var_MainTex.rgb;
 | 
	
		
			
				|  |  |                  float alphaTex = max(var_MainTex.r * finalColor.r, 0.0);
 | 
	
		
			
				|  |  | -                half alpha = max(pow(abs(lerp(alphaTex, 1.0, _Alpha)), _AlphaExtent), 0.0) * _Alpha * dist*ptcpos;
 | 
	
		
			
				|  |  | +                half alpha = max(pow(abs(lerp(alphaTex, 1.0, _Alpha)), _AlphaExtent), 0.0) * _Alpha * dist * ptcpos;
 | 
	
		
			
				|  |  |                  return half4(finalColor * _Color.rgb, alpha);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              ENDHLSL
 |