Conoce al modder que pirateó la nueva tecnología de mejora de AMD en Cyberpunk 2077
Gaming News

Conoce al modder que pirateó la nueva tecnología de mejora de AMD en Cyberpunk 2077


A principios de esta semana, se conoció la noticia de un modder que hackeó la tecnología de mejora temporal FSR 2.0 de AMD en Cyberpunk 2077, lo que permitió a los usuarios de tarjetas gráficas que no son RTX la oportunidad de jugar a velocidades de cuadro más altas con una calidad visual sustancialmente mejor que con la mejora FSR 1.0. . Eso es enorme para los propietarios de GPU AMD, y el mod incluso funciona a la perfección en Steam Deck.

Nos pusimos en contacto con el creador del mod, el gloriosamente llamado PotatoOfDoom1337, para averiguar exactamente cómo funciona, y si eso significa que FSR 2.0 pronto estará disponible en una tonelada de juegos existentes. Aquí está la entrevista, editada ligeramente para mayor claridad. ¡Disfrutar!

El manual básico de Alex Battaglia sobre FSR 2.0 muestra la función en God of War, uno de los tres juegos FSR 2.0 lanzados.

¿Cuál es tu experiencia en programación y modificación de juegos? En NexusMods, parece que solo has estado creando mods desde abril del año pasado.

patata de la fatalidad: Estoy estudiando informática, siempre me ha interesado el aspecto técnico de los videojuegos y me fascinó cuando me enteré de proyectos como Resombrear, Especial K o DXVK. Veo la programación como mi pasatiempo favorito y, además, me gusta la ingeniería inversa y jugar mucho con el código. Hice mi primer mod de Cyberpunk 2077 porque CDPR solucionó un error muy divertido en el juego. Esto me molestó tanto que descargué las herramientas de desarrollo y volví a implementar el error yo mismo. El proceso de creación de este mod me enganchó, aprendí más sobre el juego con el tiempo y comencé a crear mods más complejos.

¿Qué te motivó a intentar piratear FSR 2.0 en Cyberpunk 2077?

patata de la fatalidad: Principalmente mi antigua GTX 1080, un poco de envidia hacia los usuarios de RTX debido a su tecnología DLSS exclusiva y curiosidad sobre cómo funcionan las soluciones de mejora temporal en general. Además, FSR 2.0 y DLSS se describieron como muy similares, así que solo quería ver si era posible.

¿Cómo desarrollaste el mod?

patata de la fatalidad: Inicialmente comencé el mod hace unas semanas en previsión del lanzamiento de código abierto FSR 2.0. Los primeros pasos fueron hacer que el juego hablara con mi .dll personalizado y decirle al juego que es compatible con DLSS e informar las resoluciones DLSS disponibles al juego mediante la implementación de las interfaces requeridas. Luego escribí un sombreador pequeño que solo muestra una imagen roja en blanco. Mi objetivo era usar esto como base para verificar que las partes DirectX de mi código funcionaban correctamente. Luego solo esperé el lanzamiento de código abierto. Después de que AMD lanzó el código fuente, reemplacé inmediatamente mi código de prueba con FSR 2.0. Esperaba trabajar en él durante varios días, pero me sorprendió gratamente que solo me llevó unas pocas horas integrarlo. Usé depuradores como x64dbg y software de ingeniería inversa como IDA y Ghidra para encontrar los detalles del comportamiento de DLSS en el código del juego. Además, para depurar los búferes, RenderDoc fue increíblemente útil.

Habilite JavaScript para utilizar nuestras herramientas de comparación.

Así es como se ve el mod en acción en Cyberpunk 2077 y Dying Light 2, en comparación con DLSS, FSR 1.0 y 4K nativo.

¿Hubo alguna sorpresa en términos de que las cosas fueran más difíciles o más fáciles de lograr?

patata de la fatalidad: Los principales búferes de entrada DLSS y FSR son los mismos. Básicamente copié la integración FSR del ejemplo de AMD, establecí los valores FoV/Depth, inicié el juego e inmediatamente obtuve una imagen bastante decente. Lo peor fue una peculiaridad en Cyberpunk donde el juego no restablecía una estructura DirectX especial (ComputeRootSignature) después de ejecutar DLSS. Esto no es tan importante para DLSS de Nvidia ya que usa CUDA, pero desafortunadamente FSR usa sombreadores de computación DirectX ordinarios, que rompen el juego. Así que tuve que encontrar una forma de restaurar esa estructura después de ejecutar FSR.

En cuanto a la implementación de FSR 2.0 CP2077, ¿qué está funcionando bien en este momento y qué debe corregirse?

patata de la fatalidad: Las texturas fantasma y animadas son los mayores problemas en este momento. Tanto DLSS como FSR usan máscaras separadas para darle sugerencias al algoritmo sobre si reutilizar material temporal antiguo o descartarlo, pero no parecen ser compatibles y necesito crear un sombreador que traduzca las máscaras DLSS en máscaras FSR.

Máscaras DLSS y FSR… ¿son similares a una máscara de Photoshop?

patata de la fatalidad: Sí, básicamente así. Puede imaginarlos como una imagen en escala de grises con valores que van de 0,0 a 1,0 y el escalador temporal reproyecta los fotogramas antiguos en función de esos valores. los Documentación FSR entra en más detalles sobre eso.

Aquí hay un ejemplo visual. Lancé una granada de fuego a la calle y, como pueden ver, no hay nada en los vectores de movimiento ni en el búfer de profundidad. Esto se debe a que ni la textura de fuego 2D ni las partículas de chispa tienen una representación 3D en el juego. Para garantizar que las pequeñas chispas no dejen rastros antiestéticos, se enmascaran en InputBiasColorMask para que el algoritmo de reproyección ignore estos píxeles y no reproyecte nada en esa ubicación.

¿FSR 2.0 y DLSS tienen requisitos similares en términos de las entradas que requieren?

patata de la fatalidad: Sí, de lo contrario este mod no sería posible. Ambas integraciones necesitan color, vectores de movimiento y un búfer de profundidad como entrada. Además, usan las máscaras que mencioné anteriormente. Son muy importantes para las cosas que no tienen vectores de movimiento, como partículas o texturas animadas como el humo y las pantallas de computadora en el juego y las máscaras aplicadas incorrectamente son la razón principal por la que aparecen fantasmas en un juego. Además, FSR necesita conocer el FOV y los planos cercano y lejano del búfer de profundidad. DLSS no necesita esa información adicional (supongo que se da cuenta a través del algoritmo ML integrado).

Con lo que sabe ahora, ¿qué tan fácil sería desarrollar una solución similar para otros juegos DLSS?

patata de la fatalidad: Sí, creo que sí. Todavía no he terminado con este, pero si otros juegos son similares, esto realmente no debería tomar más de unos pocos días por juego. Ya he hecho algunas pruebas iniciales con Death Stranding y los primeros resultados parecen muy buenos.

Por ejemplo, ¿podría agregarse FSR 2.0 a Control, un juego que funciona muy mal en las GPU de AMD, incluso con RT deshabilitado?

patata de la fatalidad: Sí, creo que sí. El control se actualizó a DLSS 2.0, lo que significa que la interfaz DLSS con la que se comunica el juego es la misma o al menos muy similar a Cyberpunk. Esta es la parte más importante.

Dado el gran interés público en el mod, ¿cuáles son sus planes para el futuro? ¿Estaría abierto a que otros desarrolladores se unan al proyecto para mejorar los resultados o implementar modificaciones similares para otros juegos?

patata de la fatalidad: Realmente no esperaba tanto interés en mi mod, y si hubiera sabido eso, me habría preparado un poco más cuando presioné el botón de publicar el jueves pasado. Primero quiero terminar Cyberpunk (si los desarrolladores reales no son más rápidos que yo XD) y luego pasar a otros juegos DLSS. Y sí, por supuesto, me encantaría que otros desarrolladores se unieran a mí y me ayudaran a sacar este proyecto de la etapa de prueba de concepto más rápido y convertirlo en algo que la gente pueda usar. Escuché que ya hay alguien que quiere portar mi mod a Red Dead Redemption 2.


Wow, tan gráficos. La imagen oficial del mod es una obra maestra.

¿Será posible crear un reemplazo directo de DLSS que funcione en una variedad de juegos (‘dlss2fsr’, como lo sugirió un usuario de Github) o cree que se trata más de una serie de modificaciones, cada una adaptada a un juego determinado?

patata de la fatalidad: Sólo con algunos compromisos. Sería posible crear algún tipo de mod que obtenga los valores de FoV y profundidad de un archivo ini simple. Este mod podría funcionar para casi cualquier juego DLSS, pero la calidad de la imagen podría no ser tan buena como podría ser. Quiero decir, incluso Nvidia optimiza DLSS para ciertos juegos. Por ejemplo, las primeras versiones de DLSS tenían un efecto fantasma terrible en Cyberpunk, mientras que las actualizaciones posteriores de DLSS mejoraron la situación. No puedo hablar por otros juegos, pero, por ejemplo, Cyberpunk envía involuntariamente el búfer de ID de objeto a DLSS (que es un búfer que asigna un valor de color único a cada objeto en la escena). DLSS no necesita este búfer y no puede hacer nada con esta información, pero esto me permite mejorar enormemente la función anti-ghosting (especialmente cuando conduzco). Además, el error ComputeRootSignature que mencioné anteriormente es exclusivo de Cyberpunk y hace que esta versión del mod FSR sea incompatible con cualquier otro juego. Cada juego tiene algunas peculiaridades únicas o incluso errores que hacen que sea importante optimizar cada juego para obtener la mejor experiencia. Obviamente, no puedo hacer algo como esto para todos los juegos, pero creo que si hay algún tipo de marco DLSS2FSR, debería ser posible para otros desarrolladores con algo de experiencia en programación integrar y optimizar fácilmente FSR para otros juegos DLSS.

¿Algo más que te gustaría compartir sobre el proceso de creación del mod, o que te gustaría que la gente supiera?

patata de la fatalidad: Creo que mis respuestas anteriores deberían cubrir todo sobre el mod por ahora. Este mod tiene solo unos días y ya es muy bien recibido. Estoy seguro de que veremos un montón de desarrollos emocionantes en las próximas semanas. Mantente sintonizado para más.

¡Cosas realmente emocionantes! Desde que se realizo esta entrevista, otro colaborador por el DNI de mnxn adaptado con éxito el mod para Dying Light 2, y espero ver muchos más juegos compatibles en las próximas semanas si todo va bien. ¡Gracias a PotatoOfDoom por su tiempo creando el mod y hablando con nosotros!

Si estás interesado en probar el mod por ti mismo, puedes encuéntralo en NexusMods. La instalación es bastante sencilla: reemplace algunos archivos en su directorio CP2077 y realice un cambio en el registro. También puedes seguir el desarrollo del mod en Repositorio GitHub de PotatoOfDoom.



Leave a Reply

Your email address will not be published. Required fields are marked *