This can be done completely without shaders, yes. At first everything was shader based, but then I switched to model (+animation) based shadows. I only use a shader for the lighting (not the shadows) of the back- and foreground blocks, but you can emulate this behaviour f.i. with a bright and transparent sprite (in the background) and a fullscreen shadow panel that has a circle cut out.
Btw. thanks for the nice words!