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.