Read vertex colours in Surface function?

I’ve managed to make a shader that displays the vertex colours of a mesh, but the only way I could figure out how to do it was to access them in a Vert/Frag shader. Not one that uses Surface.

I’m worried about it not using the lights, is this something I should be worried about? Or can it be handled separately?

In my understanding the vertex color should be accessible in a vertex function of a Surface Shader. (For examples of vertex functions see Unity - Manual: Surface Shader examples .)

UnityCG.cginc appears to define struct appdata_full (which is the argument to the vertex function) this way:

struct appdata_full {
float4 vertex : POSITION;
float4 tangent : TANGENT;
float3 normal : NORMAL;
float4 texcoord : TEXCOORD0;
float4 texcoord1 : TEXCOORD1;
fixed4 color : COLOR;
};

Thus, “color” should give you the vertex function. Did you try this?