Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

beloko

Members
  • Content count

    217
  • Joined

  • Last visited

Everything posted by beloko

  1. I am adding a GLES 2 renderer to GZDoom 4 and thought it might be interesting to someone so will add some information here. The main goal of this is performance, therefore ‘nice to have’ advanced rendering features have been removed or reduced. But it needs to work in 90% of the normal cases. This is primarily for mobile platforms but it could be interesting to PC players because I think this could allow older GL 2.1 cards (with GLSL version 1.20) to work with GZDoom 4x. Maybe could be added to LZDoom..? At least it should make GL3 cards run better. The GZDoom devs have done an incredible job splitting the rendering code and the hardware implementation therefore there is minimal change to the core files. Removed features (In the GLES2 render code only) All post-process code has been removed. GLES2 shaders can only have a single output so GBUFFER_PASS stuff can not work. Materials have been removed (PBR, Specular). These could possible be added back later if less expensive implementation can be found User shaders are disabled. Shadow maps have been removed Spot-light dynamic lights are removed, normal dynamic lights work BUT it’s currently limited to 32 lights per surface. This should be enough for 99% of cases I think. Various lighting modes are removed – the most useful ones will be added back. Should look mostly normal by default. Texture filtering modes are broken - this will be fixed ASAP. Technical details: Added multiple ‘pipelined’ buffers (Vertex, Light buffer, Viewpoint buffer) for GL and GLES, this allowed glFinish() to be removed, this give a substantial performance increase for mobile and older cards because the GPU can pipeline better. There is no buffer memory mapping in core GLES2 therefore data buffers are backed by memory and need to be uploaded manually. There are no Uniform Buffers or SSBO in GLES2, therefore all shader data which relies on this needs to be emulated with normal uniforms. This is especially apparent with dynamic light data. Shader optimisation: There are now almost no branching instructions in the gles2 shaders, instead all the switching branches are converted to precompilation ‘#defines’ and the shaders are compiled on-the-fly [Still a few to be removed]. This means lots of smaller shaders are compiled as they are used. For every combination of these render-states a new shader is created: int textureMode; int texFlags; int blendFlags; bool twoDFog; bool fogEnabled; bool fogEquationRadial; bool colouredFog; bool doDesaturate; bool dynLightsMod; bool dynLightsSub; bool dynLightsAdd; bool useULightLevel; In theory if EVERY combination of these were used then 1000’s of shaders should be created, in reality there are not many combinations made during a game. This may seem slightly overkill but I found on older mobile hardware a single ‘if’ statement in the shader reduced performance by 2-3FPS! Removing the branching outweighed any penalties in switching more shaders in and out. This performance difference seems only apparent on older mobile and older desktop hardware, I think modern hardware intelligently patches shaders on-the-fly as the input uniforms change so branching isn’t as much of an issue? Performance difference: On modern mobile and desktop hardware these changes won’t much much difference or might even be worse! On older mobile GPUs I can get 5x speed up. I only have one old laptop GPU to test on (Radeon HD 4500) and I get about 3x speed increase (30fps to 90fps) compared to official release of GZDoom 4.5. If you have an old GPU (Still needs OpenGL 3.3+ at the moment) and wanna try a test version a Windows build is here: New releases will be here: https://forum.zdoom.org/viewtopic.php?f=1&t=72361 Selecting OpenGL will use the GLES2 path, there will is visual difference and probably bugs (and may simply not work), but it would be interesting to see if it helps with performance.
  2. beloko

    GLESZDoom - GZDoom for potatoes

    There are more official releases now here: https://forum.zdoom.org/viewtopic.php?f=1&t=72361
  3. beloko

    Delta Touch on Android

    OK Thanks, I can't download that now but looking at the feature list it seems this is more than just new GFX? Does it have a new .dll file included in the mod? Mods which have a modified DLL file will not work in the app because it can not be loaded in Android (Also Dhewm 3 changed the game interface). Do you know if this mod works with Dhewm3 on the PC?
  4. beloko

    Delta Touch on Android

    Looks like you have an extra unnecessary level of folder in your mod folder. I would try moving whatever folder is in 'doom3_ahd_17_full' UP a level in to 'D3'. That folder should then contain the PK4 files I guess? The file sizes shown only check THAT folder, it is not a recursive operation (This was to speed up loading)
  5. beloko

    GLESZDoom - GZDoom for potatoes

    Hi Rachelle has made a build which should help narrow down crashes like this in the last comment on here: https://github.com/drdteam/gzdoom-gles/issues/2 Please try using that build and sending the crash report files, thanks.
  6. beloko

    Delta Touch on Android

    No sorry, mobile port of Raze, the port for all the Build engine games.
  7. beloko

    Delta Touch on Android

    Yes it's a great game! Looking at 'Raze Touch' (name TBD!) Seems to be working well so far.
  8. beloko

    GLESZDoom - GZDoom for potatoes

    Yes I have removed that debug text a while ago now, also most of the light modes works and there are other bug fixes. I'll post it here when 4.6 is released.
  9. beloko

    GLESZDoom - GZDoom for potatoes

    I don't know if anyone is actually using this modified version but I can do an update when v4.6 comes out officially, I also have the equivalent change for Raze.
  10. beloko

    Delta Touch on Android

    I'll give it a go. I have not changed anything to do with the save games so I guess it depends how they are technically implemented and if they have any architecture dependent data. There may just be a check in the engine which can be disabled.
  11. beloko

    Delta Touch on Android

    Huh, this suggests the log is huge, does it work if you press it while on another engine? Try waiting for a bit longer while loads. I need to fix it so loads large logs in pieces.
  12. beloko

    Delta Touch on Android

    Did you know about the 'View last log' button in the app? It should show you the full last log generated by the engine which may help?
  13. beloko

    Delta Touch on Android

    Yeah I plan to add the other lightmodes back, they operate differently so I need to figure out how they work. I noticed the mirror issue actually, not sure what I broke but I think it basically tries to the draw the entire level seen from the mirror. I think it's something to do with the clipping planes I broke, not sure yet.
  14. beloko

    Delta Touch on Android

    Yes that usually works, but then how will you connect to the pc at the same time? Bluetooth mouse should also work!
  15. beloko

    Delta Touch on Android

    Mouse should work, but you need to connect it to your phone, is the moue still connected to the PC and the mouse data is going over the USB cable?
  16. beloko

    GLESZDoom - GZDoom for potatoes

    Oh great! Yes wait though, I'll make a branch with a couple of changes to use, otherwise the Pi will try to use GL3 context with some sort of emulator (that's what my Ri Pi 3 did anyway)
  17. beloko

    GLESZDoom - GZDoom for potatoes

    Thanks for the link! Very interesting to see the results when they come in and how the modification translates to PC platforms and if they help or make it worse. Actually I tried the build on a Raspberry Pi 3, definitely helped in a speed but still wasn't playable running at 15-20 FPS which long pauses when loading new shaders. May work on Raspberry Pi 4, I'll give it a try when I get one. Also did a few updates, interesting one is now 'Fixed color map' is working again, this fixes the black and white 'invulnerability' screen mode. It doesn't use a second pass, instead performs the color fragment operation in the main render pass - this mostly works but currently looks bad with transparent objects. New code is now in this branch: https://github.com/emileb/gzdoom/commits/master
  18. beloko

    GLESZDoom - GZDoom for potatoes

    I think it's possibly the updating of the vertex data which uses a very old method in the GLES2 code. There is a common extension to GLES2 to allow the use of glMapBuffer, I'll be adding that in as an option which might make a difference for larger maps.
  19. beloko

    GLESZDoom - GZDoom for potatoes

    (Full menu options) Display Options- > Hardware Renderer ->Sector Light mode: Change to something else, some of them are broken
  20. beloko

    GLESZDoom - GZDoom for potatoes

    If you pc is only 3yrs old and runs doom 2016 at 180 fps there is a good chance this won't help you out (and may be worse) , but just try and see what happens. I did an update which should fix the texture filtering modes, make sure you have downloaded the new 0.2 version. Let me know if it still doesn't work.
  21. beloko

    GLESZDoom - GZDoom for potatoes

    No need to apologise for anything. Will it be faster? Well I don't know, you just need to give it a try. There seems to be so many variables which effect it. If you don't have trouble with performance on Gzdoom just use that, it has more features and is gaureteed to work. If you have a really old GPU and low average frame rate is it possible the binary I posted may help.
  22. beloko

    GLESZDoom - GZDoom for potatoes

    Tnx. Yep don't use SW mode I have broken it (there is no point anyway as it won't be any difference even if it did work).
  23. beloko

    GLESZDoom - GZDoom for potatoes

    OK I have not touched the Vulkan engine so it will play exactly the same as before (except if I have broken it by accident). You need to run the binary I posted with OpenGL selected otherwise nothing will change! It still may not make much difference but you HAVE to select OpenGL mode if you wanna try it out :)
  24. beloko

    GLESZDoom - GZDoom for potatoes

    Appreciate the update! Are you saying you are using the binary I posted with Vulkan?
  25. beloko

    GLESZDoom - GZDoom for potatoes

    Please keep testing if you can, it very much helps ensuring the changes I made aren't too broken. Those are debug output and are shown every time a new shader is generated and compiled, they give me an idea of how many shaders are used and what features they use. I can put behind a CVAR so you can turn them off. You may notice a few frames dropped when they are created. I haven't changed anything at all except for the rendering, but it uses what ever was in 'master' from a few weeks ago so that must be a future change for GZDoom I guess? Pretty sure nothing I did would have done that! Yes I need to put those back, there was a reasonable amount of shader code for those features which I removed, will see how I can put it back in and avoid most branching in the shader code.
×