Fog

how to combine these two shader

Shader "fluids"{
Properties {
  _Color ("Main Color", Color) = (1,1,1,1)
  _WaveScale ("Wave scale", Range (0.0002,0.0007)) = .07
  _ColorControl ("Reflective color (RGB) fresnel (A) ", 2D) = "" { }
  _BumpMap ("Waves Normalmap ", 2D) = "" { }
  WaveSpeed ("Wave speed (map1 x,y; map2 x,y)", Vector) = (19,9,-16,-7)
  _ColorControlCube ("Reflective color cube (RGB) fresnel (A) ", Cube) = "" { TexGen CubeReflect }
  _MainTex ("Fallback texture", 2D) = "" { }
}
CGINCLUDE
// -----------------------------------------------------------
// This section is included in all program sections below
#include "UnityCG.cginc"
uniform float4 _Color;
uniform float4 WaveSpeed;
uniform float _WaveScale;
uniform float4 _WaveOffset;
struct appdata {
  float4 vertex : POSITION;
  float3 normal : NORMAL;
};
struct v2f {
  float4 pos : SV_POSITION;
  float2 bumpuv[2] : TEXCOORD0;
  float3 viewDir : TEXCOORD2;
};
v2f vert(appdata v)
{
  v2f o;
  float4 s;
  o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
  // scroll bump waves
  float4 temp;
  temp.xyzw = v.vertex.xzxz * _WaveScale / unity_Scale.w + _WaveOffset;
  o.bumpuv[0] = temp.xy * float2(.5, .5);
  o.bumpuv[1] = temp.wz;
  // object space view direction
  o.viewDir.xzy = normalize( ObjSpaceViewDir(v.vertex) );
  return o;
}
ENDCG
   
// -----------------------------------------------------------
// Fragment program
Subshader {
  Alphatest Greater 0
  Tags {Queue=Transparent}
  Blend SrcAlpha OneMinusSrcAlpha
  Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
sampler2D _BumpMap;
sampler2D _ColorControl;
half4 frag( v2f i ) : COLOR
{
  half3 bump1 = UnpackNormal(tex2D( _BumpMap, i.bumpuv[0] )).rgb;
  half3 bump2 = UnpackNormal(tex2D( _BumpMap, i.bumpuv[1] )).rgb;
  half3 bump = (bump1 + bump2) * 0.5;
   
  half fresnel = dot( i.viewDir, bump );
  half4 water = tex2D( _ColorControl, float2(fresnel,fresnel) );
   
  half4 col;
  col.rgb = water.rgb;
  col.a = _Color.a;
  return col;
}
ENDCG
  }
}
  Fallback "Diffuse"
  }

&

Shader "Fog"{
  Properties {
  _MainTex ("Base (RGB)", 2D) = "white" {}
  }
  SubShader {
   
  Alphatest Greater 0
  Tags {Queue=Transparent}
  Blend SrcAlpha OneMinusSrcAlpha
   
   
   
  CGPROGRAM
  #pragma surface surf Lambert vertex:myvert
  sampler2D _MainTex;
  uniform half4 unity_FogStart;
  uniform half4 unity_FogEnd;
  struct Input {
  float2 uv_MainTex;
  half fog;
  };
   
  void myvert (inout appdata_full v, out Input data) {
  UNITY_INITIALIZE_OUTPUT(Input,data);
  float pos = length(mul (UNITY_MATRIX_MV, v.vertex).xyz);
  float diff = unity_FogEnd.x - unity_FogStart.x;
  float invDiff = 1.0f / diff;
  data.fog = clamp ((unity_FogEnd.x - pos) * invDiff, 0.0, 1.0);
  }
  void surf (Input IN, inout SurfaceOutput o) {
  half4 c = tex2D (_MainTex, IN.uv_MainTex);
  o.Albedo = c.rgb;
  o.Alpha = lerp (0, 1, IN.fog);
  }
  ENDCG
  }
  FallBack "Diffuse"
}
    CGPROGRAM
    #pragma surface surf Lambert vertex:myvert

    sampler2D _MainTex;
    uniform half4 unity_FogStart;
    uniform half4 unity_FogEnd;

    struct Input {
      float2 uv_MainTex;
      half fog;
    };

   
    void myvert (inout appdata_full v, out Input data) {
      UNITY_INITIALIZE_OUTPUT(Input,data);
      float pos = length(mul (UNITY_MATRIX_MV, v.vertex).xyz);
      float diff = unity_FogEnd.x - unity_FogStart.x;
      float invDiff = 1.0f / diff;
      data.fog = clamp ((unity_FogEnd.x - pos) * invDiff, 0.0, 1.0);
    }

    void surf (Input IN, inout SurfaceOutput o) {
      half4 c = tex2D (_MainTex, IN.uv_MainTex);
      o.Albedo = c.rgb;
      o.Alpha = lerp (0, 1, IN.fog);
    }
    ENDCG

need to separate this part for pass shader, also