![]() On older mobile GPUs I can get 5x speed up. On modern mobile and desktop hardware these changes won’t much much difference or might even be worse! 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? 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. 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. For every combination of these render-states a new shader is created: This means lots of smaller shaders are compiled as they are used. 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. This is especially apparent with dynamic light data. There are no Uniform Buffers or SSBO in GLES2, therefore all shader data which relies on this needs to be emulated with normal uniforms. There is no buffer memory mapping in core GLES2 therefore data buffers are backed by memory and need to be uploaded manually. Texture filtering modes are broken - this will be fixed ASAP.Īdded 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. Various lighting modes are removed – the most useful ones will be added back. This should be enough for 99% of cases I think. Spot-light dynamic lights are removed, normal dynamic lights work BUT it’s currently limited to 32 lights per surface. These could possible be added back later if less expensive implementation can be found Materials have been removed (PBR, Specular). GLES2 shaders can only have a single output so GBUFFER_PASS stuff can not work. Removed features (In the GLES2 render code only)Īll post-process code has been removed. 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. ![]() Maybe could be added to LZDoom.? At least it should make G元 cards run better. 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. But it needs to work in 90% of the normal cases. The main goal of this is performance, therefore ‘nice to have’ advanced rendering features have been removed or reduced. I am adding a GLES 2 renderer to GZDoom 4 and thought it might be interesting to someone so will add some information here.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |