per-vertex data(input) in custom shaders?

I’m currently try to wrap my head around shaders.
What I actually want to do? Implement a Fog of War system like in Age of Empires for example on my unity terrain.

That means I have 3 different transparency states per vertex/tile (0,50,100% or unexplored, explored but not in viewrange, explored and in viewrange)

I’m aware of that I can do something like shader.SetInt("foo", 2); but I don’t know how to do this per vertex.

So my question is: How can I pass data to an Shader per-vertex ?

Seems to be that you would want to pass this info in the Mesh.colors array. Probably be best to use the ‘a’ of each color in the array.