What would be the best way to use a texture atlas on multiple instances of a mesh?

I have multiple instances of the same mesh in a scene – how can I specify a different set of co-ordinates (x, y, w, h) on each instance in order to reference a section in an atlased texture?

According to the documentation, the MonoBehaviour functions OnPreRender and OnPostRender (which I was planning to use to pass the co-ordinate values separately to each instance) only work on cameras, and setting the atlasing co-ordinates in the material would require that each instance of the mesh have a different material – is is even possible for different instances of the same mesh to use different materials?

I can’t make multiple copies of the mesh as the scene is already close to the maximum memory limit of the Unity editor.

You are going to have to modify the UV coordinates of each mesh to use the different section of the texture. This will allow you to use a single material.