I was interested in deferred rendering for a period of time for the same reason.
I noticed that jme’s current forward rendering pipeline would have drastic framerate drops when adding even just 1-2 point lights to a large scene, since it has to do a whole extra pass for each light (or so I thought)
But then I was thankfully informed by @RiccardoBlb that you can just change the number of lights per pass in jme with this code: (still very thankful to him for informing me of this just in time before I started work that I ultimately didn’t need to do)
app.getRenderManager().setSinglePassLightBatchSize(9);
And now I can render a decent number of lights with jme and it doesn’t lower the framerate at all.
I’m sure there are still benefits to a deferred pipeline, and maybe it would be beneficial in cases where I need 100s or 1000s of lights in close proximity to each other.
But in hindsight, I’m very glad I did not divert my efforts into working on a full deferred rendering pipeline since it ultimately was not necessary for my game. I think that you’d have to be making a pretty huge scale game for the differences in rendering pipelines to be a make-or-break factor, and most indie games don’t fail due to a bad rendering pipeline, they typically fail due to not being finished.
So (as others mentioned) I’d be careful about taking on such a huge task if your end goal is primarily to make games. Engine development is a great learning experience, but it also requires learning many things that are not necessary to develop a game, and the mindset is very different when you are developing a game for consumers vs developing an engine for developers.
Finding the time to do both effectively is very difficult in my opinion. I haven’t even delved into the deep side of rendering pipelines much myself, but I do know that just the work I’ve done developing shaders over the past few years has been enough to pull me away from my game more than I expected. So my advice would be to make sure that you are okay with putting game development on hold to exclusively be an engine developer for the next year or two (possibly more) if you do decide to take on such a huge task.
I also wouldn’t worry too much about this, especially not now. It will be a long time until new devices stop supporting OpenGL altogether. At most you may be missing out on 5% of the market who have new devices that don’t support opengl in the next few years, probably even less than that. And I suspect that when this time nears, there will likely already be community efforts to port as much of jme3 as possible over to a new vulkan based version of jme. There’s certainly many aspects of the engine that would need replaced and entirely rewritten, but also many parts of the engine that could be reusable. Starting over entirely from scratch would be a ton of work if the goal is to create a full fledged engine that can make shippable games. It would be a great learning process, but not a good business plan if your goal is to make a profit as a game dev.