blueSpeckle
Fine, even speckle with no clumps: blue noise, one random value per pixel block.
blueSpeckle(): Field
Import noise from shaders/std and use noise.blueSpeckle.
Still (no animation). Unit range, about 0 to 1, so it feeds noiseTone directly. Only makes sense over pixelGrid, which gives it the pixel coordinates it expects.
Example
paint: rampOver(noiseTone(pixelGrid(blueSpeckle(), {grain: p('grain'), seed: p('seed')})), stops(p('colorSpace')))
Tip. A good dither or film-grain layer over another shader at low opacity.
See also
pixelGrid— Frames a field on the pixel grid: one value per block ofgraindevice pixels.