I'll recap the reasons:
- Our numerous shader problems - things that work on nVidia, don't on ATI/Intel and other legal syntax can't be garuanteed between proprietary drivers and open source on Linux.
- Terrain Texturing - I have a test branch of this but it's going nowhere until I rewrite the terrain generation, even then using a texture atlas causes numerous mipmapping issue and without GL 3+ I can't use texture arrays.
- Terrain Generation - I have another branch with this partially working, but again driver/OS compatibility issue have nerfed it.
It's currently running on a heavily cut down fork of Pioneer using the OpenGL 3.2 Core profile (3.2 version, Core just means it's stripped of any compatibility stuff).
It's basically the same underlying renderer with the incompatible part removed, so no more bare triangle/line/point drawing.
Instead that will all be handled by additions to the Drawables namespace which wrap the data and manage the calls to buffer creation/initialisation/drawing.
This impacts a massive amount of code, requiring a lot of rewriting and time so this is simply notice that it will be happening over the next 6 months!
I'll be doing this work in this order probably, it will mean a lot of background changes throughout the code:
- New Drawables for primitive types: triangles, lines, points, billboards, etc.
- Changes to font, GUI and UI to use the above.
- Changing the rest of codebase to use new Drawables objects.
- Deprecating (removing) the old OpenGL 2.1 style methods.
- The new renderer actually goes in set to require either OpenGL 3.1 or 3.3 depending on compatibility (I vote for GL 3.3).
I also thought about dropping our renderer entirely and replacing it with something like BGFX which ultimately might be something we could do. However, doing that without all of the other changes required for this 3.x transition would be painful. Therefore if we ever do it then *that* transition would benefit from this one.
I imagine that this will cut-off some low-end GPU users. I'm thinking specifically of older integrated Intel GPU's that suck arse and don't support anything better than OpenGL 2.1, we'll have to see who that affects.
As I said, this is already mostly up and running in a cut-down fork of Pioneer, it's missing some of the functionality and not everything is ported over due to the fork having no GUI(!) etc. There will be a lot of differences between that version and what goes into Pioneer but with such a long term plan/project I've decided to put up info about it.
Andy