Pasó lo que se suponía que iba a pasar: la gente suponía que en la release candidate iban a estar todas las mejoras que había en la rama de desarrollo. Los usuarios empezaron a reportar errores que estaban subsanados en las versiones de desarrollo y los derivaban a esta última, además de que era difícil decidir qué mejoras meter o no en la release candidate.
Al final optaron por cancelar de momento la rama estable y seguirán como antes, así no se ralentizará el desarrollo. Y cuando haya una gran mejora, la aplicarán a la versión estable.
Para los que controléis algo de ingles y del desarrollo github os recomiendo que os paséis por la pull request de uno de los desarrolladores más activos últimamente,
phire:
[WIP] UbershadersA modo resúmen: tanto Wii como Gamecube no generan los shaders necesarios para un juego, sino que los solicitan a la GPU en tiempo real cuando los necesita. Ésto en PC no es posible por cómo funciona Direct3D y OpenGL, de modo que Dolphin lo que hace es generar un shader cuando lo solicita el juego, lo almacena en una caché y a partir de ese instante tira de la caché para evitar esos molestos microsaltos.
Un ejemplo claro de este problema es en el juego
Tatsunoko vs. Capcom: Ultimate All-Stars, tal y como explica la wiki:
Stuttering
The game will stutter; to fix this play the game and as it builds cache over time the stuttering will go away. Selecting each character and using a full set of attacks will assist in populating the cache.
Es decir, que el juego irá sin bajadas de frames hasta que no se hayan generado toda la cache de cada uno de los ataques de cada luchador.
¿Y por qué no hacer una base de datos con una caché completa y añadirla al Dolphin? Porque esto supondría varios cientos de megas, incluso
gigas de caché, además de la loca tarea de ejecutar todos los shaders posibles de todos los juegos. Una auténtica barbaridad.
La solución temporal: utilizar la branch que ya conocemos muchos aquí, Ishiiruka. Desde hace mucho tiempo este "mod" ha implementado una función llamada "async shader compilation". Lo que hace es detectar el shader, crear la caché, PERO no aplicar el shader inmediatamente, lo cual evita los microsaltos, a costa de errores gráficos pequeños.
La solución planteada por phire: utilizar "ubershaders", shaders "genéricos" (para que nos entendamos) que ejecuten la petición de un shader cualquiera mientras que paralelamente se genera la caché necesaria con el shader específico.
Este método se encuentra todavía en fase de desarrollo, no hay ninguna build compilada, pero para los que controlen en compilar con github os invito a que lo probéis. En un PR adyacente,
[WIP] [Not for Merge] Vertex Ubershaders, reportan grandísimas mejoras:
I know it's not ready for public consumption but I would like to thank you anyway phire, Tatsunoko Vs Capcom stuttering is hugely improved, it still have a little stutter here and there with this PR but compared to master where every single action you do in the game would cause various shader compilation stuttering it's thousands of times better...
Esta gente está haciendo algo increíble.
Saludos.