1 puntos por GN⁺ 2024-01-30 | 1 comentarios | Compartir por WhatsApp

Nuevos renderizadores para GTK

  • Se agregaron a GTK dos nuevos renderizadores para GL y Vulkan.
  • Fueron nombrados reutilizando los nombres existentes, "ngl" y "vulkan".
  • Se construyen a partir de la misma fuente, por lo que también se les llama renderizador "unificado".

Fuente única

  • Ambos renderizadores se construyen desde la misma fuente y están diseñados con un modelo que sigue la API de Vulkan.
  • Incluyen abstracciones para cubrir las diferencias entre Vulkan y GL.
  • Esto permite compartir infraestructura como el recorrido del grafo de escena, el mantenimiento de transformaciones y el caché de texturas y glifos.
  • Existe la posibilidad de extenderlo a un renderizador basado en Metal en macOS o a uno basado en DirectX en Windows.

Detalles de implementación

  • El renderizador GL existente usa shaders simples y depende del renderizado fuera de pantalla para contenido complejo.
  • El renderizador unificado tiene shaders por cada nodo y usa shaders complejos que interpretan datos desde búferes en lugar de renderizado fuera de pantalla.
  • El renderizador unificado está menos optimizado, pero al priorizar la precisión y el mantenimiento puede manejar correctamente una mayor variedad de árboles de nodos de renderizado.

Nuevas funciones

  • Antialiasing: el renderizador GL existente tenía problemas de pérdida de detalle, pero el renderizador unificado mejora esto mediante antialiasing.
  • Escalado fraccional: el renderizador unificado puede manejar correctamente escalas fraccionales.
  • Gradientes arbitrarios: el renderizador unificado puede procesar gradientes con una cantidad ilimitada de puntos de color.
  • Dmabufs: el renderizador Vulkan puede crear dmabufs al generar texturas mediante la API render_texture.

Puntos a tener en cuenta

  • Los nodos glshader ya no son compatibles.
  • Posiciones fraccionales: el nuevo renderizador coloca los objetos en posiciones exactas.
  • Problemas de drivers: el nuevo renderizador usa los drivers gráficos de una forma nueva y distinta, por lo que pueden surgir problemas.

¿Es más rápido?

  • Por ahora, el nuevo renderizador no es más rápido.
  • El renderizador GL existente está optimizado para velocidad, pero el nuevo renderizador ofrece nuevas funciones y mayor precisión.
  • En benchmarks no oficiales, el renderizador Vulkan muestra un rendimiento similar al del renderizador GL existente.

Nuevo valor predeterminado

  • En el snapshot 4.13.6 anunciado recientemente, el renderizador ngl se estableció como nuevo valor predeterminado.
  • Esta es una medida experimental, y si surgen problemas se puede volver al renderizador GL existente.

Planes y posibilidades futuras

  • El nuevo renderizador es una buena base para implementar manejo correcto del color, incluido HDR, renderizado de trazados en la GPU, renderizado fuera del hilo principal, mejoras de rendimiento y más.

Resumen

  • El nuevo renderizador tiene funciones interesantes y se agregarán más en el futuro.
  • Se invita a probar el nuevo renderizador y enviar comentarios sobre si funciona correctamente.

Opinión de GN⁺

  • El nuevo renderizador es un avance importante que ofrece a los desarrolladores opciones de renderizado más precisas y variadas.
  • El enfoque unificado entre Vulkan y GL tiene el potencial de mejorar la compatibilidad de renderizado en distintas plataformas en el futuro.
  • Este avance técnico contribuirá a mejorar la experiencia de usuario y a elevar la calidad visual de las aplicaciones.

1 comentarios

 
GN⁺ 2024-01-30
Comentarios en Hacker News
  • Alrededor de 2010, hubo un renderizador HTML experimental que permitía implementar la UI de aplicaciones GTK en el navegador usando solo HTML y CSS. En ese momento, antes de la aparición de Atom, VS Code, Electron y probablemente NodeJS, era algo muy impresionante. Actualmente no está claro si ese renderizador HTML sigue existiendo.
  • Hay cierta decepción con que GTK siga la tendencia de permitir widgets en la barra de título. Algunos se pueden arrastrar y otros no, y además se reduce el espacio asignado al nombre de la aplicación y del archivo. Esto no es un problema exclusivo de GTK.
  • Falta comprensión sobre cómo funcionan los entornos de escritorio en Linux. Cada vez se sienten más complejos y recargados.
  • Entusiasmo por el escalado fraccional preciso a nivel de píxel.
  • Se menciona que al usar wgpu.rs se obtiene DirectX y Metal gratis.
  • Interés en un renderizador de texto ANSI, con el que se podrían ejecutar programas GTK dentro de xterm. Opcionalmente también podría añadirse soporte para sixel.
  • Dudas sobre por qué se acepta la degradación del rendimiento. Mucha gente hace la mayor parte de su computación en hardware antiguo, y estas funciones podrían desactivarse o incluso no estar soportadas por la GPU.
  • El trabajo en GTK parece divertido y genial. Se menciona el antialiasing y hay expectativa sobre la posible aplicación de la técnica de campos de distancia con signo usada para renderizar fuentes en motores de juegos. Varias técnicas usadas en renderizadores de juegos también podrían ser útiles en el código de GUI.
  • Hay muchos desarrolladores de motores gráficos que han creado renderizadores varias generaciones por delante de los renderizadores de toolkits GUI de código abierto, pero la mayoría trabaja en empresas de desarrollo de videojuegos y no tiene tiempo para contribuir al stack open source. Si la comunidad pudiera organizar un presupuesto regular para pagarles a estos desarrolladores, podrían verse actualizaciones importantes en renderizado y toolkits para el escritorio open source.
  • Un comentario específico fue reportado y su contenido quedó oculto.