I would say shaders are overrated :p If one wants to do a really commercial game there is Unity for that matter. Hobbyist game engines can never hope to compete with it.
But if you do have interest for actual programming side of it, then sure they can be fun too. What i tried to do with nxPascal is to wrap OpenGL and most of every gaming related functionality to more easier to use classes. You can do almost everything without using any OpenGL commands from its header.
As far as shaders go i would say it was still a work in progress, but i guess it was mainly about writing shaders themselves which i'm not so good at. So 3D part of it may be lacking, but nothing that can't be solved if you delve into shaders yourself. I did most i could to make support for multiple shaders, and here's example of it:
https://github.com/Zaflis/nxpascal/blob/master/demos/fpc/walker_shader/GraphicsUnit.pasBasically it went this high level use, much much easier than if you were to use actual OpenGL directly. Renderer is definitely not immediate mode, even though most of older nxPascal visuals are:
renderer.EnableProgram(renderProgram, false);
renderer.DrawRotateS(position.x, position.y, trunc(anim), 0, 0.5, 20/27, -17, 26)