Wolfram Language (Mathematica), 83 bytes
Nest[ArrayFlatten[Map[Curry[#2+#/Length[#2]^2&][#],{{0,2},{3,1}}/4,{2}]]&,{{0}},#]&
Uses the recursive formula on the Wikipedia page for ordered dithering: $$M_{2s}=\begin{bmatrix}M_s&M_s+2/(2s)^2\\ M_s+3/(2s)^2&M_s+1/(2s)^2 \end{bmatrix}$$
Parcly Taxel
- 4.7k
- 1
- 8
- 55