The simplest type of cross-hatching is to have a set number of hatching angles and constant spacing. The header image shows the result with 16 different angles.

This can be extended to use other sorts of patterns. For example, here are orthogonal circular and radial lines:

The number of overlapping lines was computed for each pixel, then the stripes were drawn in each region. To make more continuous lines, a median filter was applied to the identified regions.