much more customizable dithering