passing custom variables into surface shader

Has anyone done it? I’d like to get specular color from a separate texture and pass it into a custom lighting model.
Basically, can we have more float3 channels than Albedo,Normal and Reflection? I’ve run into some trouble,with the compiler failing to allocate the added output.

Yes this is possible.

in your script:

void Start(){

    public Color colorBalance = Color.white;

}

void Update(){

    myMaterial.SetColor ("colorBalance", colorBalance);

}

in your shader:

Properties {

    colorBalance ("colorBalance", Color) = (1,1,1,1) 

}

...

float4 colorBalance; //declared outside of structs

...

thanks for the comment , you kind of misunderstood my question, but i luckily found a solution anyway, posted a sample in this thread:
http://forum.unity3d.com/threads/62685-Bump-color-spec-shader-not-working-in-Unity3.0