A mesh gradient rendered in WebGL, then quantised through a Bayer matrix so it reads as printed halftone rather than a blur. Every setting is live, and the panel underneath is the code for what you are looking at.
Field
Tone field
0.3
Drift of the tone field
0.25
Turbulence in the field
Grain
3
Size of one dither cell
3
Two is a hard cross-hatch
0.35
Warp applied to tone only
Colour
Palette
Mode
0.15
Where the dark end sits
0.85
Where the light end sits