I'm currently looking into making some fixes and minor feature enhancements to gzdoom. I've already added one pull request (https://github.com/coelckers/gzdoom/pull/61), but given the feature requests forum is closed I'm not sure if I should announce them here or not (like zdoom wants me to do).
The things I'm planning on looking into are:
- Fix that the window cannot be maximized. The window can be resized, but this also doesn't work properly (the game just clamps to the lower left corner).
The way I intend to deal with it is to add support for rendering to an render target texture which then can be centered and scaled to match (with letterboxing). Ideally the window size would dictate the size of the viewport, but this probably would have to be addressed in zdoom first before it can be fixed in gzdoom. - Make hardware gamma optional because SetDeviceGammaRamp applies the gamma to the entire screen (and forces a reboot of the computer if you should be so unlucky to see gzdoom crash before it manages to restore the original values).
With the support for the render target texture it gets trivial to do a tonemapping step where gamma and such is applied. - Add diminishing light. When comparing my true color software renderer with gzdoom the most striking difference is the light not darkening in the distance. As I'm very familiar with this part of zdoom I think I have a fair chance of figuring out how to get it in gzdoom too.
- Change fullscreen default to false (actually already did this in my local version as its just a CVAR change). The main rationale for this is that OpenGL applications cannot properly enter fullscreen without messing up all windows on the screen (thanks Microsoft!). This is a limitation of ChangeDisplaySettingsEx and there's no replacement function outside Direct3D.
- Add support to the shaders to output normals and depth into gbuffers. This should be a relatively simple extension to the render target texture thing which should allow adding ambient occlusion, bloom, depth of field, cinematic tone mapping, and other effects.