Mientras que Metal es la tecnología de reproducción de gráficos rápidos de Apple para juegos, MetalFX agrega mejoras para que brille en Apple Silicon. Así es como funciona MetalFX.

En 2014, Apple presentó su nueva tecnología de renderizado de gráficos y juegos llamada Metal.

Metal es una API de renderizado que proporciona un rendimiento rápido optimizado para el hardware de Apple. Con la llegada de las GPU Apple Silicon, Metal obtiene un aumento de rendimiento aún mayor.

Un problema en la representación de gráficos de juegos de computadora es cómo dibujar grandes cantidades de polígonos modela rápido con sombreadores de superficie de alta resolución y efectos rápidamente. A medida que aumentaron las velocidades de fotogramas y la complejidad de la escena del juego, este problema creó cuellos de botella en las canalizaciones de representación de gráficos.

La API de Metal es una API de C++ de Apple que tiene su propio lenguaje de sombreado llamado, como era de esperar, Lenguaje de Sombreado de Metal (MSL). La API de Metal se ha comparado con DirectX 12 en Windows o con la biblioteca de renderizado de gráficos de terceros Vulkan.

También hay versiones Swift y Objective-C de la API de Metal.

Sin embargo, dado que Metal es de Apple y está diseñado para el hardware de Apple, proporciona el mejor rendimiento de representación de gráficos de cualquier tecnología de representación disponible en esos dispositivos.

Puedes ver una muestra del renderizado de Metal en acción cada vez que inicias un juego de Apple Arcade en un dispositivo iOS o tvOS: la breve animación de rebote del logotipo de Apple Arcade que se ejecuta antes de que cada juego de Apple Arcade se renderice con Metal..

Muchos juegos usan aceleración de hardware de GPU y sombreadores precalculados para acelerar la representación de gráficos. En Metal, los comandos gráficos se codifican por adelantado y luego se envían a las GPU para su procesamiento.

Los estados de procesamiento precalculados le indican a la GPU de antemano cómo configurar la canalización de procesamiento para obtener el máximo rendimiento.

Los sombreadores de renderizado, o programas precomputados que controlan la luz, la oscuridad y el color, se utilizan durante el renderizado de escenas 3D para proporcionar realismo y efectos especiales. El MSL describe cómo funcionan los sombreadores de Metal.

Los sombreadores se introdujeron por primera vez en software comercial en 1988 con el software RenderMan de Pixar, que tiene una larga historia en Mac desde hace décadas.

En la mayoría de las canalizaciones de procesamiento de GPU modernas, tanto los datos 3D como los programas de lenguaje de sombreado se envían a la GPU para su procesamiento, que luego administra un proceso o canalización de varios pasos mediante el cual se crea cada fotograma de una escena.

Los pasos de renderizado involucran aproximadamente transformaciones de geometría, dividir modelos en triángulos y cuadrantes, aplicar sombreadores de fragmentos, probar y combinar profundidad, y la exclusión de superficies y objetos ocluidos. El último paso consiste en combinarlo todo en el búfer de cuadro final para su visualización.

Todo esto sucede docenas de veces por segundo en el hardware de GPU moderno.

Metal también incluye sombreadores de rendimiento: programas que aceleran el renderizado y reducen la carga de la GPU. Los sombreadores de rendimiento incluyen filtrado de imágenes, redes neuronales, matemática avanzada y trazado de rayos.

El trazado de rayos mejora enormemente las superficies, las texturas y los reflejos de las fuentes de luz de los objetos del modelo 3D.

En 2020, Apple anunció que había portado Metal a las CPU y GPU Apple Silicon para proporcionar un rendimiento mucho más rápido. En WWDC 2022, Apple presentó una nueva función en Metal llamada MetalFX.

MetalFX permite una renderización de escenas más rápida y precisa al volver a calcular y suavizar algunos fotogramas para volver a calcular y suavizar los bordes de los objetos renderizados.

El arma secreta de MetalFX es una tecnología llamada mejora.

La idea es renderizar un objeto o escena a una resolución más baja, lo que hace que la representación general del búfer de fotogramas sea más rápida. Luego, agrega un paso adicional antes de que se muestre al ampliar la escena.

Al hacer la mayor parte del renderizado de escenas en dimensiones más pequeñas, las escenas se pueden renderizar más rápido y con más detalles y complejidad. En la mayoría de los casos, suele ser más rápido renderizar los objetos de la escena a una escala más pequeña y luego mejorar la resolución general del fotograma final que renderizar la escena completa a una dimensión final más grande.

Al utilizar la mejora de escala, MetalFX puede proporcionar una representación de escena más rápida y más detalles y nitidez de objetos.

Un ejemplo de mejora de MetalFX. El cuadro de la derecha aparece más nítido.

MetalFX utiliza dos tipos distintos de mejora de escala: mejora espacial y mejora de suavizado temporal.

En la ampliación espacial, se crean dos clases de Metal: MTLFXSpatialScalerDescriptor y MTLFXSpatialScaler. El objeto descriptor describe los detalles del objeto escalador espacial y el objeto MTLFXSpatialScaler realiza la codificación real (a través de su método de codificación).

Cuando se llama a codificar, el objeto MTLFXSpatialScaler crea y envía comandos de procesamiento a un objeto MTLCommandBuffer para su procesamiento. Este proceso se repite para cada fotograma de una escena.

La mejora espacial de MetalFX puede proporcionar aproximadamente hasta el doble de detalles de la escena sin pérdida material de rendimiento.

La creación de objetos MTLFXSpatialScaler es computacionalmente costosa y solo debe realizarse cuando se inicia una aplicación o una pantalla cambia de resolución.

En el escalado de suavizado temporal, los datos del fotograma anterior se utilizan como entrada para escalar el fotograma actual.

El supermuestreo y el muestreo temporal son técnicas que utilizan datos de píxeles individuales de fotogramas para lograr una mejora de escala. Se muestrean los datos de cada píxel y los píxeles de varios fotogramas.

El suavizado temporal es un poco más intensivo en computación y requiere datos adicionales de color, profundidad y movimiento para funcionar.

Aquí hay otro ejemplo de mejora de suavizado de la presentación de Apple en la WWDC:

1080p, izquierda-y 4K mejorado a la derecha con aumento de escala anti-aliasing.

La mayoría del procesamiento de aumento de escala de MetalFX debe ocurrir después del renderizado pero antes de cualquier procesamiento posterior final se hace en marcos.

Un uso de la mejora de suavizado de MetalFX es aumentar la resolución de los fotogramas de 1080p para que se acerquen a la resolución 4K.

Al igual que con la ampliación espacial, MetalFX proporciona dos clases para la ampliación de suavizado: MTLFXTemporalScalerDescriptor y MTLFXTemporalScaler.

La documentación completa de MetalFX está disponible en el sitio web para desarrolladores de Apple. Apple también realizó un video de sesión de MetalFX en WWDC’22 titulado”Aumente el rendimiento con MetalFX Upscaling”que describe el uso de MetalFX en detalle, incluido el código de muestra.

Varios títulos de juegos AAA, incluido No Man’s Sky, ya usan MetalFX en dispositivos Apple.

MetalFX promete modernas técnicas de procesamiento de gráficos para aumentar tanto la resolución de la escena como el rendimiento del juego en hardware de GPU moderno. Es probable que la nueva tecnología Metal revolucione los juegos en los dispositivos Apple.

Categories: IT Info