The answer to this might differ depending on your tool, graphics API, and what you're specifically doing with the vertices at this stage. I think the most general answer is to use separate vertices when you need different UVs or other information, even if their position is the same. However, in some situations it might be possible to store a list of unique positions, and assign different UVs to different instances of each. What are the specifics of your setup?
I'm using Unity3D.
Yep, you fully share vertices unless they have all attributes the same. But you can share some of your vertices twice as they are used by both triangles making up the square tile.
I wouldn't bother with sharing in your case, tiles this big are not likely to be a performance issue for the GPU, and the code is actually simpler without sharing.
If you insisted on sharing, the alternative is to have some non straightforward mapping between UVs and tiles. For example, you could simply record the x-y position of the tiles as the UV, and then in the shader look up that, say, the (5,3) tile reads from (0.3, 0.
in your tile atlas.
I have actually recently gotten into shaders and the solution you're proposing makes sense, but indeed sounds like too much trouble for what's it worth.
Thanks for the clear answers, I'll just go with duplicate vertices for simplicity's sake.