# More efficient way to generate lattice graph with edges between visible vertices?

Given a nXn lattice, I need to generate the graph such that there is an edge between two vertices iff they are directly "visible" to each other, i.e., there is no vertex between them.

I'm using

latticeSize = 3;
vertices = Range[latticeSize^2];
coords = Transpose[{Ceiling[vertices/latticeSize],
Mod[vertices, latticeSize, 1]}];
coordsPairs = Subsets[coords, {2}];
graph = UndirectedEdge @@@
Replace[Pick[coordsPairs,
Map[GCD[#[[2, 1]] - #[[1, 1]], #[[2, 2]] - #[[1, 2]]] == 1 &,