GTK 4.14 presenta nuevos motores de renderizado, mejoras y mas

GTK4

GTK ​​ o The GIMP Toolkit​​ es una biblioteca de componentes gráficos multiplataforma para desarrollar interfaces gráficas de usuario

En esta nueva versión que se presenta de GTK 4.14 se destacan los nuevos motores de renderizado unificados llamados «NGL» y «Vulkan» que hacen uso tanto de OpenGL (GL 3.3+ y GLES 3.0+) como de las API de gráficos Vulkan. Ambos motores están basados en la API de Vulkan, pero el motor «NGL» presenta una capa de abstracción separada para OpenGL que se ejecuta sobre Vulkan, teniendo en cuenta las diferencias entre ambas API. Este enfoque ha permitido el uso de una infraestructura común en ambos motores para el procesamiento de gráficos de escenas, transformaciones, almacenamiento en caché de texturas y glifos. La unificación también ha simplificado notablemente el mantenimiento de la base de código de ambos motores, así como su actualización y sincronización.

Se menciona que a diferencia del antiguo motor «GL», que empleaba un sombreador simple separado para cada tipo de nodo de renderizado y reorganizaba periódicamente los datos durante el renderizado fuera de pantalla, los nuevos motores utilizan un sombreador complejo (ubershader) para el renderizado fuera de pantalla, interpretando los datos del búfer. Entre las características distintivas de los nuevos motores se destacan el suavizado de contornos, que permite conservar detalles finos y lograr contornos más suaves, la formación de gradientes arbitrarios, que admite cualquier número de colores y suavizado, y el escalado fraccional. El nuevo motor de renderizado «NGL» está activado de forma predeterminada, al igual que la compatibilidad con la API de gráficos Vulkan. Al integrar la configuración predeterminada, ahora se requiere la compatibilidad con Vulkan 1.3.

Otro de los cambios que se destacan de GTK 4.14, es la biblioteca GSK (GTK Scene Kit), que proporciona la capacidad de representar escenas gráficas a través de OpenGL y Vulkan, ha experimentado mejoras significativas relacionadas con la representación de fuentes, sugerencias y el uso de valores de escala no enteros al mostrar texto. Se ha implementado el suavizado del contorno de los glifos durante la rasterización para mejorar la claridad en pantallas de baja resolución, así como el posicionamiento de subpíxeles de los glifos al hacer sugerencias. La calidad de representación de fuentes también se ha mejorado en valores de escala no enteros, como 125%. Asimismo, se ha añadido soporte para el desalojo de elementos de caché para glifos y texturas, lo que ha mejorado la eficiencia del almacenamiento en caché de glifos.

Además de ello, se ha incorporado soporte para «Path» en GTK, lo cual permite dibujar formas y áreas utilizando una secuencia de líneas o curvas Bézier cúbicas y cuadráticas. Para realizar dibujos con trazados, se han introducido varios objetos en GTK, como GskPath para definir parámetros de líneas o curvas, GskPathBuilder para crear curvas, GskPathPoint para establecer un punto en una forma y GskPathMeasure para tomar medidas como la longitud de un trazado.

Por otro lado, la biblioteca GDK, que actúa como una capa entre GTK y el subsistema de gráficos, ha expandido su soporte para el mecanismo DMA-BUF, se menciona que este mecanismo permite el uso de buffers a nivel de kernel direccionados mediante un descriptor, lo que posibilita la transferencia directa de datos entre subsistemas del kernel sin necesidad de copiarlos. En el contexto de GTK, el soporte para DMA-BUF se utiliza para minimizar las operaciones de copia de datos de píxeles durante la composición y al trabajar con vídeo. Por ejemplo, el vídeo puede ser grabado mediante un decodificador de hardware en dmabuf, luego adjuntado a una superficie Wayland y finalmente pasar a un administrador de composición para su visualización en pantalla sin copias adicionales de datos.

También se han incorporado mejoras significativas para personas con discapacidades relacionadas con la visualización de texto con formato complejo, el funcionamiento de WebKitGTK y la visualización de notificaciones.

De los demás cambios que se destacan de esta nueva versión:

  • Se ha mejorado el soporte para las especificaciones ARIA, y se ha añadido la interfaz GtkAccessibleText para utilizar funciones de accesibilidad en widgets de texto de terceros.
  • La interfaz GtkText ha ampliado su soporte para el protocolo AT-SPI, permitiendo la interacción con lectores de pantalla.
  • Se ha añadido la clase GtkPrintDialog para generar cuadros de diálogo de impresión y proporcionar una API asincrónica que se puede utilizar en lugar de GtkPrintOperation.
  • Este widget ha actualizado los datos de Emoji y ahora ofrece la capacidad de buscar en diferentes idiomas, considerando las diferentes configuraciones regionales.
  • Se ha mejorado el seguimiento de los cambios realizados por el usuario en el widget GtkEntry, lo que facilita la implementación de la operación de deshacer.
  • Se ha acelerado la apertura del cuadro de diálogo de selección de archivos en el widget GtkFileChooser para mejorar la experiencia del usuario.
  • El inspector GTK ahora proporciona visualización de información sobre OpenGL, subsuperficies y FPS para facilitar la depuración y el análisis de rendimiento.
  • La utilidad gtk4-node-editor ahora cuenta con soporte de grabación automática para mayor comodidad al trabajar con nodos y ediciones complejas.

Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: AB Internet Networks 2008 SL
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.