GTK apresenta dois novos renderizadores: um para GL e outro para Vulkan

GTK

Logotipo GTK

Recentemente, o Os desenvolvedores do GTK anunciaram a adição de dois novos renderizadores: “ngl” e “vulkan”, projetado respectivamente para GL e Vulkan. Ambos os renderizadoress são construídos a partir da mesma base de código e seguem as APIs Vulkan, facilitando a manutenção e as atualizações.

Embora ainda não superem o antigo renderizador GL em velocidade, Esses motores “unificados” oferecem novos recursos interessantes como antialiasing, escala fracionária e suporte para dmabuf. É importante ressaltar que ngl se tornou o novo mecanismo de renderização padrão no recente snapshot 4.13.6.

Para aqueles que não estão familiarizados com GTK (anteriormente GIMP ToolKit e GTK+), você deve saber que este é um conjunto popular de bibliotecas de software de plataforma cruzada de código aberto para a criação de interfaces gráficas de usuário (GUIs). Originalmente desenvolvido para as necessidades do software de processamento de imagem GIMP, o GTK em particular é um dos conjuntos de ferramentas mais populares para os sistemas de janelas Wayland e X11.

Sobre "ngl" e "vulkan"

A incorporação desses novos renderizadores, "ngl" e "vulkan", marca um marco significativo no desenvolvimento do GTK, A introdução de dois novos renderizadores destaca a sua capacidade de oferecer funcionalidades avançadas, mantendo a compatibilidade com versões anteriores e é uma prova do compromisso da comunidade com a melhoria contínua e a inovação no desenvolvimento da interface do usuário.

Esses novos mecanismos de renderização foram projetados para aproveitar ao máximo os recursos das APIs GL e Vulkan, respectivamente, e oferecer uma série de melhorias e recursos interessantes para usuários e desenvolvedores.

Uma das características mais notáveis ​​desses novos renderizadores é que eles compartilham uma fonte comum, tornando-os conhecidos como “renderizadores unificados”. Isso significa que Eles são construídos a partir da mesma base de código, modelados para seguir as APIs Vulkan e GLe oferece abstrações para cobrir as diferenças entre os dois. Essa abordagem unificada não apenas facilita a atualização e a manutenção, mas também fornece uma base sólida para expansão futura.

A nova abordagem de renderização introduz uma série de melhorias e recursos, incluindo:

  • Antialiasing aprimorado: Os novos renderizadores resolvem o problema de perda de detalhes finos e bordas irregulares, especialmente em casos como sublinhados e mnemônicos.
  • Escala Fracionária: Os renderizadores unificados lidam com escalas fracionárias com mais eficiência, resultando em imagens mais nítidas e menos pixels.
  • Gradientes Arbitrários: O suporte para gradientes foi ampliado com um número ilimitado de interrupções de cores, melhorando a qualidade visual dos designs.
  • Suporte para Dmabufs: Os novos renderizadores suportam a criação de dmabufs para texturas por meio da API render_texture, expandindo os recursos de renderização.

Embora os novos renderizadores ofereçam inúmeras vantagens, eles também apresentam alguns desafios para os desenvolvedores de aplicativos:

  • Nós glshader: Os novos renderizadores não suportam todos os nós glshader do antigo renderizador GL, o que pode exigir ajustes em algumas aplicações.
  • Posições fracionárias: As posições fracionárias agora são tratadas com mais precisão, o que pode exigir ajustes em determinados layouts e gráficos.
  • Problemas do controlador: Mudar para novos renderizadores pode causar problemas de compatibilidade com alguns drivers gráficos.

Além disso, também é mencionado que embora os novos renderizadores ainda não sejam mais rápidos que o antigo renderizador GL, eles oferecem grande potencial para futuras melhorias e expansões. Espera-se que versões futuras abordem ainda mais aspectos de renderização, como gerenciamento de cores, renderização de glifos e desempenho em dispositivos menos potentes.

Por fim, em relação aos planos futuros para os novos renderizadores, menciona-se que está em cima da mesa o seguinte:

  • Gerenciamento adequado de cores (incluindo HDR)
  • Renderização de rota na GPU
  • Possivelmente incluindo representação de glifo
  • Renderizando fora do thread principal
  • Desempenho (em dispositivos mais antigos e menos potentes)

Por fim, se você estiver interessado em saber mais sobre o assunto, pode consultar o detalhes no link a seguir.