Hi,
kd-11 here with another update.
Last week, I was finally able to finish the mipmap gathering task that I had been working on for the better part of the month. But before we get to that, I should quickly go over the other tasks that were handled in the past two weeks.
1. Some minor refactoring was done in preparation for some future texturing changes coming to RPCS3. This was mostly a maintenance task and did not really offer any immediate improvements.
2. OpenGL compute was introduced and used to replace the various vendor drivers' built-in functionality in areas that were found to be lacking. While right now this is only focused on handling one bottleneck, more commits will be introduced in the future to improve other problematic areas. With this change, OpenGL becomes usable again after having fallen behind greatly in the recent past - even basic games were running at single digit framerates. Now it can almost match vulkan in some titles which should be a relief for users on older hardware.
Now onto the major task. Mipmap gathering is basically what is required to make runtime-generated mipmaps work in RPCS3. This are mipmaps generated on the PS3 GPU usually from non-static data that require to be 'stitched' together into a useful image. While in most cases just removing the extra information works fine, it can cause some post-processing effects to break or some advanced rendering techniques such as on-the-fly LOD billboard generation to fail. The first is very evident in the Nier series of games where post processing was broken before leading to intense flickering if anything moved on-screen. The second case is easily seen in games like RDR where the trees seem to disappear towards the horizon (thinning). This was partially hidden by a workaround in shaders but it never worked perfectly, making trees closer to the camera look muddy without antialiasing, and making trees further away invisible when using antialiasing. Both glitches should now be resolved. While more work in the series is still left, I hope to get it all ready for merge in the next two weeks. For those interested in more technical information, see the pull request on gihub [here].
Once this series of tasks and the upcoming supporting patches are finished, I will focus on finishing integration of the shader interpreters. This is a much more involved task aimed at eliminating glitchy graphics when shaders are compiling and should also make hybrid cache loading a reality (i.e loading the shader cache in the background as the user navigates menus or plays a game.)
Thank you all for your continued support.
Regards,
kd-11