Working on halftone shading now. First come the dots with adjustable printing imperfection:
Next is just a matter of scaling these dots based on the black levels in the scene texture:
Applying this naively results in variations within single dots that overlap high contrast areas, so I quantized the UVs to match the dot matrix:
Making this work for arbitrary rotations was tricky, but still easier than I expected: