1 pontos por GN⁺ 2024-01-30 | 1 comentários | Compartilhar no WhatsApp

Novos renderizadores para GTK

  • Dois novos renderizadores para GL e Vulkan foram adicionados ao GTK.
  • Eles foram nomeados reutilizando os nomes existentes "ngl" e "vulkan".
  • São construídos a partir da mesma base de código e por isso também são chamados de renderizadores "unificados".

Fonte única

  • Os dois renderizadores são construídos a partir da mesma fonte e projetados com um modelo que segue a API do Vulkan.
  • Incluem abstrações para cobrir as diferenças entre Vulkan e GL.
  • Isso permite compartilhar infraestrutura como travessia do grafo de cena, manutenção de transformações e cache de texturas e glifos.
  • Há possibilidade de expansão para um renderizador baseado em Metal no macOS ou em DirectX no Windows.

Detalhes de implementação

  • O renderizador GL existente usa shaders simples e depende de renderização offscreen para conteúdos complexos.
  • O renderizador unificado tem shaders por nó e usa shaders complexos que interpretam dados em buffers em vez de usar offscreen.
  • O renderizador unificado é menos otimizado, mas consegue tratar corretamente uma variedade maior de árvores de nós de renderização ao priorizar correção e manutenção.

Novos recursos

  • Antialiasing: o renderizador GL anterior tinha problemas de perda de detalhes, mas o renderizador unificado melhora isso com antialiasing.
  • Escalonamento fracionário: o renderizador unificado consegue lidar corretamente com escala fracionária.
  • Gradientes arbitrários: o renderizador unificado pode processar gradientes com um número ilimitado de pontos de cor.
  • Dmabufs: o renderizador Vulkan pode criar dmabufs ao gerar texturas por meio da API render_texture.

Pontos de atenção

  • Nós glshader não são mais suportados.
  • Posições fracionárias: o novo renderizador posiciona objetos na localização exata.
  • Problemas de driver: o novo renderizador usa os drivers gráficos de formas novas e diferentes, então podem surgir problemas.

É mais rápido?

  • Por enquanto, o novo renderizador não é mais rápido.
  • O renderizador GL existente é otimizado para velocidade, enquanto o novo renderizador oferece novos recursos e maior precisão.
  • Em benchmarks não oficiais, o renderizador Vulkan mostra desempenho semelhante ao do renderizador GL existente.

Novo padrão

  • No snapshot 4.13.6 anunciado recentemente, o renderizador ngl foi definido como novo padrão.
  • Esta é uma medida experimental, e se surgirem problemas é possível voltar ao renderizador GL existente.

Planos futuros e possibilidades

  • O novo renderizador é uma boa base para implementar tratamento adequado de cores, incluindo HDR, renderização de paths na GPU, renderização fora da thread principal e melhorias de desempenho.

Resumo

  • O novo renderizador traz recursos interessantes, e mais funcionalidades devem ser adicionadas.
  • É pedido que as pessoas testem o novo renderizador e enviem feedback sobre seu funcionamento.

Opinião do GN⁺

  • O novo renderizador representa um avanço importante ao oferecer opções de renderização mais precisas e variadas para desenvolvedores.
  • A abordagem unificada entre Vulkan e GL tem potencial para melhorar a compatibilidade de renderização em diferentes plataformas no futuro.
  • Esse avanço técnico deve contribuir para melhorar a experiência do usuário e elevar a qualidade visual dos aplicativos.

1 comentários

 
GN⁺ 2024-01-30
Comentários do Hacker News
  • Por volta de 2010, houve um renderizador HTML experimental que permitia implementar a UI de aplicações GTK no navegador usando apenas HTML e CSS. Na época, isso era muito impressionante, já que foi antes do surgimento de Atom, VS Code, Electron e provavelmente NodeJS. Hoje não está claro se esse renderizador HTML ainda existe.
  • Lamento que o GTK esteja seguindo a tendência de permitir widgets na barra de título. Alguns podem ser arrastados e outros não, e isso reduz o espaço destinado ao aplicativo e ao nome do arquivo. Isso não é um problema exclusivo do GTK.
  • Falta entendimento sobre como funcionam os ambientes de desktop no Linux. Parece que estão ficando cada vez mais complexos e cheios de camadas adicionais.
  • Empolgação com o dimensionamento fracionário preciso no nível de pixel.
  • Menção de que, usando wgpu.rs, é possível obter DirectX e Metal de graça.
  • Interesse em um renderizador de texto ANSI, que permitiria executar programas GTK dentro do xterm. Opcionalmente, também poderia ser adicionada funcionalidade sixel.
  • Questionamento sobre por que a perda de desempenho é aceita. A maior parte da computação é feita em hardware antigo, e esses recursos podem ser desativados ou talvez nem tenham suporte da GPU.
  • O trabalho no GTK parece divertido e muito legal. Há menção a antialiasing e expectativa sobre a possibilidade de aplicar a técnica de signed distance field usada na renderização de fontes em engines de jogos. Várias técnicas usadas em renderizadores de jogos também podem ser úteis no código de GUI.
  • Há muitos desenvolvedores de engines gráficas que criaram renderizadores várias gerações à frente dos renderizadores de toolkits GUI de código aberto, mas a maioria trabalha em empresas de desenvolvimento de jogos e não tem tempo para contribuir com a stack open source. Se a comunidade pudesse organizar um orçamento recorrente para pagar esses desenvolvedores, seria possível ver atualizações significativas de renderização e toolkit no desktop open source.
  • Um comentário específico foi denunciado e seu conteúdo foi ocultado.