newpoints = subdivision[pts, fun @@@ pts, 0.1, 0];
g1 = Show[
PlanarGraphPlot[pts, LabelPoints -> False] /. _Point ->
Sequence[] /. _Thickness -> Sequence[Thin, Opacity[.5]],
Graphics[{Point[pts], Red, Point[newpoints]}],
ContourPlot[5 x + y == 0, {x, -1, 1}, {y, -1, 1},
ContourStyle -> Directive[Thick, Green]]]
pts = Join[pts, newpoints];
g2 = ListDensityPlot[ArrayFlatten[{{pts, Partition[fun @@@ pts, 1]}}],
Mesh -> All]