thought i'd post a demonstration of generating simple dither patterns for fillp in case it was useful to anyone!
feel free to use under the CC license or mit license or public domain
dither.lua:
-- threshold map from https://en.wikipedia.org/wiki/Ordered_dithering local threshold_map = { 0, 8, 2, 10, 12, 4, 14, 6, 3, 11, 1, 9, 15, 7, 13, 5, } local function make_mask (value) local mask = 0 for i = 1, 16 do mask = mask * 2 if threshold_map [i] >= value then mask = mask + 1 end end return mask end local dither_masks = {} for i = 0, 16 do dither_masks[i] = make_mask (i) end -- value 0-1 function dither_mask (value) return dither_masks [mid (0, math.floor (value * 16 + 0.5), 16)] end |
main.lua:
include 'dither.lua' local W, H = 480, 270 local color1 = 9 local color2 = 30 function _draw () for i = 0, H-1 do fillp (dither_mask (i/H)) rectfill (0, i, W, i, (color1 << 8) | color2) end fillp () end |
[Please log in to post a comment]