The most "pure" way to do a "no mesh" render would probably be to use geometry shaders to emit your geometric primitives. (You do need to give it at least one "starting" primitive to make the draw call, but you're free to entirely ignore that primitive). It'd be trivial to embed some mesh data into a "texture", for example, just by reading vertex xyz positions into the rgb channels of a 1D texture that's `number_of_triangles*3` elements wide, and your geometry shader could walk along that texture and output those vertices and triangles and have them get rendered, without ever accessing a vertex buffer object.
That way you only need point positions in the mesh, and no UV or normals.
However, I think (at least in games: in VFX we go the other way and have many many "primvars" as vertex/point data) most real-time setups for hero objects end up having points and UVs, and then normals are normally done as a texture.