One possibility to get gradient/shading even with only black and white/on and off pixels is dithering.
Image from: https://blog.csdn.net/lz0499/article/details/101627042 Equations for it at this link too.
I'm not familiar with most engines, but in Godot at least it's not too hard to make a shader, heres a video:
I imagine it would be possible to replace the color limiting stuff in the above vid with the dithering equations to get a dithering filter.