Shading vertexes of a mesh with different textures

I am working on back projecting real world camera images onto their respective meshes ,given the pose of the camera. By considering not every photo sees all of the mesh, I need several photos (2-3) to use as a texture while rendering this mesh.However not every triangle uses the same photo/texture. I am already able to associate each triangle to a photo sees it from the desired pose and generate UV coordinates for it. But I dont know how I can transfer this to a unity shader, such that switch between 2-3 or maybe more textures for each triangle being rendered? I assume I must have an array that associate each triangle with a texture index.

How can I transfer such an array from cpu to unity shader? also which unity shader would work best for me? surface shader or vertex shader?

Easiest way is just to pass all 3 textures all the time as _TexA, _TexB, _TexC, then store all three UVs in the mesh’s UV sets and a “use this texture index” value in the vertex colors (RGB 1,0,0 for “use texture A”, RGB 0,1,0 for “use texture B” etc.).

As for vertex be surface shader, that’s more a question of do you need these to be lit by Unity lighting? If not there’s not reason to use surface shaders. If you do then you might want to use a surface shader.