Preguntas y respuestas sobre Pascal Gilcher (también conocido como Marty McFly) y Path Tracing ReShade: cómo funciona, cuándo sale y más

Preguntas y respuestas sobre Pascal Gilcher (también conocido como Marty McFly) y Path Tracing ReShade: cómo funciona, cuándo sale y más


Sin embargo, el trazado de rutas es la nueva palabra de moda en la renderización de gráficos para 2023. Representa la evolución de los efectos rasterizados, pasando de un trazado de rayos limitado para efectos específicos, como la oclusión ambiental, las sombras o los reflejos, a un abandono casi total de esos efectos. La versión preliminar del modo Overdrive de Cyberpunk 2077, que rápidamente se convirtió en el nuevo estándar gráfico de los videojuegos, permitió a los jugadores de PC probar por primera vez esta tecnología el pasado mes de abril.

El trazado de rutas es extremadamente agotador para cualquier hardware, lo cual es un inconveniente. El modo Overdrive de Cyberpunk 2077 solo se puede ejecutar cómodamente en las tarjetas gráficas GeForce RTX 40 Series más recientes gracias a la combinación de DLSS 2 (superresolución) y 3 (generación de cuadros).

Dado que el nuevo complemento ReShade de Pascal, que aún está en proceso de creación, no podrá utilizar DLSS ni siquiera los núcleos RT de las GPU GeForce RX, su presentación fue aún más inesperada. Pascal está convencido de que el rendimiento será superior al del método convencional basado en triángulos, a pesar de ello.

Él y yo tuvimos una conversación larga y fascinante sobre su estrategia para trazar rutas, cuándo estaría disponible para los suscriptores de Patreon y cuántos otros efectos podría reemplazar o inyectar con su complemento. Lee la transcripción completa editada después de saltarte el vídeo.

Empezaré diciendo que estoy al tanto de tu contacto con NVIDIA porque recientemente han añadido tu RTGI al Freestyle de GeForce Experience. ¿Habéis hablado ya de esto con ellos?

Sin duda les interesaría, pero no estoy seguro de poder discutirlo, dado que todavía está sucediendo. Digamos que la posibilidad me intriga.

Creo que has estado esforzándote un poco en esto desde hace un tiempo.

hablando en términos generales. La API ReShade, que ahora tiene una interfaz que dice «Está bien, el juego quiere hacer esto», permitía modificar las llamadas de los juegos cuando se lanzó. ¿Qué opinas al respecto?

Con eso, puedes crear complementos que lleven a cabo cualquier tarea de acuerdo con los objetivos del juego. Digamos que el objetivo del juego es producir un resultado particular. Entonces puedes negarte, diciendo que no actuarás de esa manera. Por ejemplo, puedes evitar que un objeto o un efecto específico se muestre en el juego. Antes de que se lanzara formalmente la API ReShade, empecé a trabajar en ello. Pero hace poco que la recogí.

¿La razón por la que volviste a elegirlo fue específica o solo por una cuestión de programación de la carga de trabajo?

Obviamente, al principio era algo nuevo para mí, así que no tenía mucha experiencia con él. Además, no tenía mucha experiencia con C++ en su conjunto, pero entretanto lancé dos complementos adicionales. He mejorado mucho desde entonces. Hace poco dije: «Está bien, este complemento puede hacer esto», cuando intentaba hacer que algo funcionara. Intenté actualizarlo con la nueva información, pero quedó completamente destruido. Le respondí: «Está bien, eso es malo». Supongo que debería echarle otro vistazo.

Cuando me di la vuelta, descubrí que muchos de los problemas que inicialmente me habían impedido seguir adelante eran en realidad bastante obvios. Es como si estuvieras repasando tu propio examen de sexto grado y te dieras cuenta de lo sencillo que era. Dije que ahora podría manejar esto mucho mejor después de pensarlo un poco. Era una gran idea, así que decidí retomarla. Llevo dos meses trabajando en ella de nuevo, creo, intentando incorporar todas las funciones.

Según entiendo su trabajo, está basado en vóxeles. Digital Foundry lo comparó con el trazado de rutas de SEUS para Minecraft. ¿Cree que su valoración es correcta?

Tanto sí como no. Se le podría llamar vóxeles, supongo. En esencia, esto no es más que una descripción de cómo aparecerían los píxeles 3D. Sí, almacena datos y se ejecuta en el cubo más cercano del mundo de los juegos, pero no en todos. De hecho, puedes buscar Spatial Hashing, una presentación de NVIDIA. En esencia, significa que cada vez que ves algo en un juego, intentas encontrar el cubo más cercano e introducirlo en una estructura de datos incompleta. Sería como intentar alojar a 100 inquilinos en un espacio en el que solo caben 10 de ellos.

Como resultado, en realidad no necesito almacenar todo el espacio. Cada vóxel que contenga aire, por ejemplo, estaría disponible en un juego como Minecraft. Aunque técnicamente está inactivo, todavía usa memoria, lo que hace imposible almacenar todos los datos. Usaría de 40 a 50 gigabytes de VRAM (aproximadamente el doble que las principales GPU) si tuviera que almacenar todos los vóxeles que utiliza esta infraestructura. Utilizo un modelo de almacenamiento disperso, lo que significa que solo almacenamos los nodos reales y no todos. Aproximadamente el 2% o el 3% de todos los candidatos potenciales están presentes. Eso funciona bastante bien y puedo almacenar muchos más datos de lo habitual.

Los datos desactualizados se eliminan, como usted ha dicho. Eso implica, supongo, que el sistema purga automáticamente los datos antiguos y recupera los nuevos a medida que se mueve por el mundo.

Cierto. Supongamos que la imagen es completamente negra con unos pocos píxeles blancos. La imagen ocuparía mucha memoria si tuvieras que almacenar cada píxel y fuera muy grande. Sin embargo, si solo almacenaras píxeles blancos en una lista y no negros, solo necesitarías almacenar unos cinco píxeles, lo que es muy poco dato, y yo puedo conseguir almacenar muchos menos píxeles. Por lo tanto, el soporte de volumen actual puede ser hasta 2000 veces mayor, pero almacenarlo consumiría más RAM que la RTX 4090. Actualmente solo necesito de 300 a 400 megabytes.

A la gente le preocupa el coste de rendimiento del complemento porque el rastreo de rutas suele ser muy caro. ¿Puedes decirnos, por ejemplo, qué velocidad de fotogramas tendrá Skyrim?

El trazado en sí mismo suele funcionar mejor que el trazado basado en triángulos. RTX Remix captura la geometría mientras el juego intenta renderizarla. Realizan un trazado de rutas estándar basado en triángulos y, la mayoría de las veces, solo pueden permitirse maximizar el uso de un solo rayo por píxel. Usé de tres a cuatro rayos por píxel en el vídeo de demostración de Skyrim que mostré.

Mi RTX 4090 produce unos 100 fotogramas por segundo. Con mi nuevo sistema puedo usar solo un rayo, pero como el filtro es más caro y el modelo NVIDIA (ReStir GI) mejora la calidad de un solo haz, también necesito disponer de más tiempo de posprocesamiento. Hay mucho margen de maniobra que optimizar, pero aún hay que mejorar el rendimiento. Reproduzco varias cosas en alta resolución que, en teoría, no estoy obligado a hacerlo.

Como rara vez sabes si algo tiene mala pinta, solo quiero aprovecharlo al máximo antes de volver a optimizarlo. ¿Es porque ya has hecho concesiones o es una falla en tu estrategia? Por lo tanto, primero me esfuerzo por lograr el más alto nivel de calidad antes de intentar reducir el rendimiento sin sacrificar significativamente la calidad visual.

Incluso podrías usar la aceleración por hardware de BVH, según un artículo que leí en Digital Foundry. ¿Qué tan lejos está eso?

Es algo complicado porque, por el momento, puedo salirme con la mía con el funcionamiento interno del sombreador. Necesitaría almacenar la estructura de datos en la CPU si tuviera que usar BVH para crear algo. Tendría que crear mi propia interfaz, lo que me impediría usar la aceleración de hardware, por ejemplo, si el juego se ejecuta en DX9 o RX10.

Tendría que crear mi propio dispositivo de renderizado, usar DX12 o Vulkan y, a continuación, enviar los datos al juego para poder utilizar la biblioteca RTX. Además, excluiría a cualquier persona que no tuviera una tarjeta de vídeo que pueda usarse para el trazado de rayos. Por lo tanto, no estoy seguro de que valga la pena dedicarle tanto esfuerzo. Además, no veo nada malo en la solución actual de rastreo de rutas. No hace falta decir que el trazado de rayos basado en triángulos es más preciso cuando dos objetos se cruzan. La verdad es que no importa si mi calco puede determinar la ubicación de la camiseta de una persona, porque lo único que me interesa es la luz. Solo necesita entender que la luz también debe ser roja para que lo sea.

Además, no noto ningún deterioro visual, a diferencia de lo que ocurre con los enfoques de espacio en pantalla. Por supuesto, tienen condiciones significativamente peores que las del resto del planeta.

Pascal Gilcher dijo: «Creo que algunas personas no reconocerían el trazado de un camino si les diera en la cabeza».

No estoy seguro de que hayas leído algunas de las respuestas que han aparecido en sitios web como Reddit o foros de juegos como ResetEra. Algunos lo consideraron realmente genial. Otros comentaron: «Bueno, a mí esto no me parece que se esté trazando un camino». ¿Será que aún no ha incluido fuentes de luz dinámicas en su solución?

La mayoría de estos comentarios, en mi opinión, no tienen ni idea de lo que están discutiendo. Sí, no tengo acceso a las fuentes de luz del juego en este caso, pero ya lo tiene. Hacerlo no tendría sentido. Hago hincapié en la iluminación indirecta, lo que significa que la luz se refleja en las áreas sombreadas después de que la fuente de luz la arroje a la escena.

Hay una escena en el vídeo en la que las ventanas brillantes iluminan el suelo. Solo el trazado de rutas puede lograr esto.

No están realmente seguros de lo que les rodea. Solo hace que las cosas sean más contrastadas, según los comentarios que he visto. Si el trazado del camino les hubiera dado en la cabeza, dudo que lo reconocieran.

No cabe duda de que algunos de estos comentaristas carecen de los conocimientos técnicos suficientes. ¿Ha pensado en utilizar el SDK de iluminación directa RTX en relación con las fuentes de luz dinámicas? Es posible que sean posibles numerosas luces dinámicas adicionales.

Mi solución de trazado de rutas también es capaz de manejar numerosas luces. Todo lo que necesita saber es su ubicación. Este es otro problema con RTX Remix porque, en ocasiones, dificulta la confianza en el juego y los juegos más antiguos no utilizan realmente el concepto de iluminación dinámica. Al hacer que los creadores coloquen manualmente las fuentes de luz donde deberían estar, RTX Remix pretende solucionar este problema. Supongo que podría estar de acuerdo con eso.

Todos los juegos que quieras pueden usar lo que hago yo. Solo algunas cosas que tienen casi todos los juegos, por favor. Solo necesito localizarlos para poder ascender a los mismos lugares.

Por supuesto, uno de los principales atractivos de su solución es ese. Sin embargo, no estaba seguro de que los modders pudieran modificar ellos mismos el complemento de trazado de rutas para cada juego, en lugar de tener que hacerlo vosotros mismos.

Para que funcione, el complemento debe decir: «Está bien, vas a esperar a que llegue este evento de renderizado específico». A continuación, debe examinar el recurso adjunto. Examine esta entrada y la información que contiene. Actualmente lo ejecuto y quiero reportar todos los datos que van y vienen para poder identificar cada uno de ellos. Supongamos, por ejemplo, que necesito información precisa que convierta las posiciones de la cámara en posiciones de juego. Además de entender cómo aparecen estas cosas, necesitas experiencia en programación de juegos. Alguien que carece de algo de eso no puede distinguirlos, pero yo sí. Quizá cinco personas del barrio de ReShade sean capaces de hacerlo. Es un proceso muy poco lineal y, dado que esto podría implicar datos diferentes según lo que el juego tenga reservado para ti. Tengo la intención de utilizar un modelo dividido porque no creo que mucha gente sea capaz de hacerlo. El complemento recopila todos los datos de renderizado a la vez mientras los busco y, a continuación, me proporciona la información que realmente necesito.

Actualmente, las únicas personas que pueden trabajar en juegos específicos y crear archivos de configuración que expliquen al complemento cuáles son los datos relevantes y cómo interpretarlos somos yo y quizás algunas otras personas que tienen suficiente conocimiento sobre este tema. Los usuarios finales utilizarían entonces los archivos de configuración finales.

El RTX Remix de NVIDIA es una de las comparaciones más populares (incluso tú la hiciste). Dado que la solución de NVIDIA está dirigida a juegos más antiguos (en su mayoría aquellos que utilizaban canales de funciones fijas antes de que aparecieran los sombreadores), mientras que su solución de trazado de rutas puede soportar hasta DX12 y Vulkan, ¿es justo decir que las dos tecnologías son diferentes y complementarias?

Por supuesto, el RTX Remix, que cambia completamente las reglas del juego, es más potente que mi solución. Tengo una solución menos intrusiva. Por lo tanto, también es más transportable. Sí, tiene un enfoque muy diferente y probablemente pueda lograr menos que RTX Remix. Además de introducir el trazado de rutas, el objetivo principal de RTX Remix es reemplazar los modelos 3D, las texturas y otros componentes del juego existentes.

Mi único objetivo es, eh, mejorar el atractivo visual del juego. Sus características varían de un juego a otro, pero creo que podrías compararlo más con, por ejemplo, la serie ENB, que mejora los gráficos de numerosos juegos.

Pascal Gilcher afirma que este complemento se puede utilizar para añadir o eliminar diversos efectos, como el «trazado de rutas».

Podría denominarse EnbSeries with Path Tracing, supongo.

Sí, pero este complemento se puede usar para inyectar o reemplazar una variedad de efectos de renderizado en los juegos, incluido el trazado de rutas. Supongamos que un juego X tiene un efecto de renderizado en Y deficiente; ahora puedo reemplazarlo. Como casi todo el mundo me reconoce como el de RTGI, lo anuncié usando el trazado de rutas. Aunque era el curso de acción más obvio, hay varias maneras de mejorarlo. He logrado mucho más.

Sí, me he dado cuenta de lo impresionantes que son tus nubes volumétricas para Skyrim. Mencionaste que seguías trabajando en este complemento, lo sé. ¿Tienes una franja horaria? ¿Cuándo estará disponible para los suscriptores de Patreon?

De hecho, esa es una pregunta válida. La solución Skyrim actualmente no está completamente integrada. Faltan algunos objetos transparentes. Y seamos sinceros, se requiere el ENB para jugar a Skyrim. Ya lo he hecho compatible con la versión que no es eNB, por lo que probablemente sea necesaria la integración con ENB. Además, no veo ninguna justificación para volver a implementar las acciones de ENB. Skyrim podría estar terminado en tres meses si me concentro en ello.

Sin embargo, yo diría que seis meses es un plazo razonable para que sea viable porque intento hacerlo compatible con tantos juegos como pueda. Como todos los juegos siguen haciendo cosas que nunca esperé, la verdad es que esto es muy difícil. Cada juego que jugaba tenía un elemento sorpresa, y después de eso, solucionar el problema llevó una semana. Pero con cada juego nuevo, mejora cada vez más.

Por lo tanto, estimo que tardaré unos seis meses en encontrar una solución que pueda usar en los juegos, modificarla durante cinco minutos y luego usarla. Por supuesto, el conjunto de funciones puede cambiar por completo según el juego.

¿Crees que tu solución también sería compatible con juegos isométricos populares como Baldur’s Gate 3?

Sí, en teoría. No hay ninguna razón por la que no pueda, en mi opinión.

Qué bien, sería genial verlo. ¿Funcionará el mod DLSS 3 Skyrim de Puredark con tu complemento de rastreo de rutas? Sería fantástico maximizar el rendimiento y las imágenes a la vez.

Para ser completamente honesto, realmente no lo he investigado. Actualmente estoy usando un Skyrim que básicamente no ha sido modificado. La gente puede elegir porque, por lo que tengo entendido, es incompatible con la serie ENB. Tienen la opción de usar el DLSS 3 y obtener altas velocidades de cuadro o gráficos nítidos.

En teoría, deberían funcionar juntos porque mi solución de rastreo de rutas no tiene ese problema de compatibilidad.

Agradezco tu tiempo.