Recientemente, los desarrolladores de GTK anunciaron la incorporación de dos nuevos renderizadores: «ngl» y «vulkan», diseñados respectivamente para GL y Vulkan. Ambos renderizadores se construyen a partir de la misma base de código y siguen las API de Vulkan, lo que facilita el mantenimiento y las actualizaciones.
Aunque aún no superan en velocidad al antiguo renderizador GL, estos motores “unificados” ofrecen nuevas características interesantes como antialiasing, escalado fraccional y soporte para dmabuf. Es importante destacar que ngl se ha convertido en el nuevo motor de renderizado predeterminado en la reciente instantánea 4.13.6.
Para quienes desconocen de GTK (anteriormente GIMP ToolKit y GTK+) deben saber que este es un popular conjunto de bibliotecas de software multiplataforma de código abierto para crear interfaces gráficas de usuario (GUI). Desarrollado originalmente para las necesidades del software de procesamiento de imágenes GIMP, GTK en particular, es uno de los conjuntos de herramientas más populares para los sistemas de ventanas Wayland y X11.
Sobre «ngl» y «vulkan»
La incorporación de estos nuevos renderizadores, «ngl» y «vulkan», marca un hito significativo en el desarrollo de GTK, pues con la introducción de dos nuevos renderizadores se destaca su capacidad para ofrecer funcionalidades avanzadas mientras mantiene la compatibilidad con versiones anteriores es un testimonio del compromiso de la comunidad con la mejora continua y la innovación en el desarrollo de interfaces de usuario.
Estos nuevos motores de renderizado están diseñados para aprovechar al máximo las capacidades de las API de GL y Vulkan, respectivamente, y ofrecen una serie de mejoras y características interesantes para los usuarios y desarrolladores por igual.
Una de las características más destacadas de estos nuevos renderizadores es que comparten una fuente común, lo que los convierte en lo que se conoce como «renderizadores unificados». Esto significa que están construidos a partir de la misma base de código, modelados para seguir las API de Vulkan y GL, y ofrecen abstracciones para cubrir las diferencias entre ambas. Este enfoque unificado no solo facilita la actualización y el mantenimiento, sino que también proporciona una base sólida para futuras expansiones.
El nuevo enfoque de renderizado introduce una serie de mejoras y capacidades, incluyendo:
- Antialiasing Mejorado: Los nuevos renderizadores abordan el problema de la pérdida de detalles finos y los bordes irregulares, especialmente en casos como los subrayados y mnemotécnicos.
- Escala Fraccionaria: Los renderizadores unificados manejan de manera más eficiente las escalas fraccionarias, lo que resulta en imágenes más nítidas y menos píxeles.
- Gradientes Arbitrarios: Se ha ampliado el soporte para degradados con un número ilimitado de paradas de color, mejorando la calidad visual de los diseños.
- Soporte para Dmabufs: Los nuevos renderizadores admiten la creación de dmabufs para texturas a través de la API render_texture, lo que amplía las capacidades de renderizado.
Si bien los nuevos renderizadores ofrecen numerosas ventajas, también plantean algunos desafíos para los desarrolladores de aplicaciones:
- Nodos glshader: Los nuevos renderizadores no admiten todos los nodos glshader del antiguo renderizador GL, lo que puede requerir ajustes en algunas aplicaciones.
- Posiciones Fraccionarias: Las posiciones fraccionarias ahora se manejan con mayor precisión, lo que puede requerir ajustes en ciertos diseños y gráficos.
- Problemas con el Controlador: El cambio a los nuevos renderizadores puede plantear problemas de compatibilidad con algunos controladores de gráficos.
Además de ello, también se menciona que aunque los nuevos renderizadores aún no son más rápidos que el antiguo renderizador GL, ofrecen un gran potencial para futuras mejoras y expansiones. Se espera que las próximas versiones aborden aún más aspectos del renderizado, como la gestión del color, la representación de glifos y el rendimiento en dispositivos menos potentes.
Finalmente por parte de los planes futuros para los nuevos renderizadores, se menciona que está sobre la mesa lo siguiente:
- Manejo adecuado del color (incluido HDR)
- Representación de rutas en la GPU
- Posiblemente incluyendo representación de glifos
- Representación fuera del hilo principal
- Rendimiento (en dispositivos antiguos y menos potentes)
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.