Shader blend between textures

Hey guys,

I need some help on a shader for a project I’m currently working on:

Shader "BlendTextures" { 
	Properties {
		_Blend ("Blend", Range (0, 1) ) = 0
		_Override ("Override", Range (0, 1) ) = 0
		_BlendOverride ("Blend Override", Range (0, 1) ) = 0
		_MainTex ("Main Texture", 2D) = "" 
		_BlendTexture ("Blend Texture", 2D) = ""
		_OverrideTexture ("Override Texture", 2D) = ""
		_BlendOverrideTexture ("Blend Override Texture", 2D) = ""
	}
	SubShader {	
		Pass {
			Fog { Mode Off }
			SetTexture[_MainTex]
			SetTexture[_BlendTexture] { 
				ConstantColor (0,0,0, [_Blend]) 
				Combine texture Lerp(constant) previous
			}
			SetTexture[_OverrideTexture] { 
				ConstantColor (0,0,0, [_Override])
				Combine texture Lerp(constant) previous
			}
			SetTexture[_BlendOverrideTexture] {
				ConstantColor (0,0,0, [_BlendOverride])
				Combine texture Lerp(constant) previous
			}
		}
	}
}

I want that _BlendOverrideTexture depends on the Alpha of _OverrideTexture, e.g. it only should be shown if _Override is active (> 0).

Any idea how I could do that?

Most of my shader experience is with CGProgramming, but if that is alright, this should do:

Shader "Custom/Diffuse Blend" {
Properties {
	_Color ("Main Color", Color) = (1,1,1,1)
	_MainTex ("Base (RGB)", 2D) = "white" {}
	_OverrideTex ("Base (RGB) Override (A)", 2D) = "black" {}
}

SubShader {
	Tags {"Queue"="Opaque" "IgnoreProjector"="True" "RenderType"="Opaque"}
	LOD 200

CGPROGRAM
#pragma surface surf Lambert

sampler2D _MainTex;
sampler2D _OverrideTex;
fixed4 _Color;

struct Input {
	float2 uv_MainTex;
	float2 uv_OverrideTex;
};

void surf (Input IN, inout SurfaceOutput o) {
	fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
	fixed4 overrideC = tex2D(_OverrideTex, IN.uv_OverrideTex) * _Color;
	if (overrideC.a > 0)
		o.Albedo = overrideC.rgb;
	else
		o.Albedo = c.rgb;
}
ENDCG
}

Fallback "Transparent/VertexLit"
}

Shader “Custom/Diffuse Blend” {
Properties {
_Color (“Main Color”, Color) = (1,1,1,1)
_MainTex (“Base (RGB)”, 2D) = “white” {}
_OverrideTex (“Base (RGB) Override (A)”, 2D) = “black” {}
}

SubShader {
    Tags {"Queue"="Opaque" "IgnoreProjector"="True" "RenderType"="Geometry"}
    LOD 200
 
CGPROGRAM
#pragma surface surf Lambert
 
sampler2D _MainTex;
sampler2D _OverrideTex;
fixed4 _Color;
 
struct Input {
    float2 uv_MainTex;
    float2 uv_OverrideTex;
};
 
void surf (Input IN, inout SurfaceOutput o) {
    fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
    fixed4 overrideC = tex2D(_OverrideTex, IN.uv_OverrideTex) * _Color;
    if (overrideC.a > 0)
       o.Albedo = overrideC.rgb;
    else
       o.Albedo = c.rgb;
}
ENDCG
}
 
Fallback "Transparent/VertexLit"
}