.

Andrew Cunningham/Google
O Google anunciou hoje que habilitaria o suporte WebGPU em seu navegador Chrome por padrão a partir da versão 113, atualmente em beta. Em desenvolvimento desde 2017, o WebGPU é uma API gráfica de última geração que visa trazer os benefícios de APIs de baixa sobrecarga, como Direct3D 12 da Microsoft, Metal da Apple e Vulkan para navegadores da web e outros aplicativos.
O suporte a WebGPU está disponível, mas desativado por padrão no Chrome há algum tempo, porque a API não foi finalizada e as coisas podem quebrar de atualização para atualização. O Google diz que a Mozilla e a Apple acabarão suportando o WebGPU no Firefox e no Safari, e navegadores como o Microsoft Edge e o Opera que dependem do mecanismo do navegador Chromium podem presumivelmente optar por ativá-lo, assim como o Google.
O Chrome 113 suporta WebGPU no Windows, macOS e ChromeOS para começar, com “suporte para outras plataformas” como Linux e Android “chegando ainda este ano”. Esta versão do navegador deve ser lançada para todos os usuários do Chrome em maio.
O suporte no Chrome é um grande impulso para qualquer novo padrão, seja uma API nova ou atualizada, formato de imagem ou codec de vídeo. O Chrome responde por cerca de dois terços da participação no mercado de navegadores em todo o mundo, de acordo com dados do StatCounter, e quase 80% de toda a participação no mercado de navegadores, se você contar outros navegadores baseados no Chromium. Depois que o Safari e o Firefox adicionarem suporte, praticamente todos os navegadores da Web em qualquer lugar poderão executar o código WebGPU, portanto, vale a pena explicar brevemente o que é o WebGPU e por que ele existe.
O que é WebGPU?
O WebGPU é uma espécie de sucessor do WebGL, uma API muito mais antiga que permite que gráficos baseados em OpenGL sejam renderizados em seu navegador sem a necessidade de plug-ins adicionais de terceiros, como o Flash da Adobe. Embora revolucionário quando foi anunciado em 2009, o WebGL hoje sofre de muitos dos mesmos problemas do OpenGL: ele não tira proveito de todos os recursos das GPUs atuais, pode perder desempenho devido à sobrecarga do driver e tem apenas recursos limitados e suporte kludgey para cargas de trabalho de computação de GPU.
“Enquanto o WebGL é principalmente para desenhar imagens, mas pode ser reaproveitado (com grande esforço) para fazer outros tipos de cálculos, o WebGPU tem suporte de primeira classe para realizar cálculos gerais na GPU”, diz o documento preliminar que explica por que o WebGPU existe. A nova API permitirá gráficos aprimorados em estruturas como Babylon.js e mecanismos de jogo como Unity; oferecerá suporte a cargas de trabalho aceleradas por GPU, como as usadas para aprendizado de máquina e IA; e pode tornar mais fácil para aplicativos de foto e vídeo baseados na web (entre outros) usar o tipo de aceleração de GPU da qual os aplicativos nativos se beneficiam.
O WebGPU está sendo desenvolvido por um grupo de trabalho que inclui membros do Google, Microsoft, Apple, Mozilla, Intel e muitas outras empresas e, como resultado, a API foi projetada para ser o mais amplamente compatível possível. O WebGPU não é uma implementação direta de nenhuma API gráfica existente, mas sim sua própria API que fica por cima e faz interface com Direct3D 12, Metal e Vulkan. Este explicador de Surma, engenheiro da Shopify e ex-Googler, resume bem (ênfase nossa):
“Enquanto o WebGL é apenas um invólucro fino em torno do OpenGL, o WebGPU escolheu uma abordagem diferente. Ele apresenta suas próprias abstrações e não espelha diretamente nenhuma dessas APIs nativas. Isso ocorre parcialmente porque nenhuma API única está disponível em todos os sistemas, mas também porque muitos conceitos (como gerenciamento de memória de nível extremamente baixo) não são idiomáticos para uma API voltada para a Web. Em vez disso, a WebGPU foi projetada para parecer “web” e sentar-se confortavelmente em cima de qualquer uma das APIs gráficas nativas enquanto abstrai suas idiossincrasias. Está sendo padronizado no W3C com todos os principais fornecedores de navegadores tendo um lugar à mesa.”
Isso tem a vantagem de tornar o código WebGPU muito portátil – escreva código WebGPU e, desde que os usuários tenham hardware e um navegador compatível, você deve obter o mesmo resultado em um sistema Windows executando Direct3D e um telefone Android executando Vulkan. E evita alguns dos hacks que mantêm o WebGL em execução – por exemplo, o WebGL no Windows e no macOS nem usa o OpenGL diretamente, mas sim um tradutor chamado ANGLE que transforma as chamadas da API OpenGL em Direct3D e chamadas da API Metal. Com WebGPU, não há necessidade de iniciar um projeto separado para escrever em torno de uma implementação OpenGL lenta ou mal mantida.
O WebGPU também possui sua própria linguagem de shader (WGSL), que a equipe do Chrome ainda está trabalhando para oferecer suporte – o anúncio de hoje diz que o Google “planeja fornecer acesso mais profundo aos núcleos de shader” via WGSL em uma versão futura. Como o restante da API WebGPU, o WGSL foi criado para ser independente de plataforma e facilmente traduzível para o idioma de shader preferido de qualquer sistema operacional em que você o esteja executando.
Finalmente, apesar de “web” em seu nome, a API WebGPU não está restrita a navegadores. O projeto wgpu é uma versão do WebGPU para Rust que permite que aplicativos WebGPU sejam escritos e executados fora dos navegadores da web.
Se você quiser experimentar o WebGPU agora, a versão beta do Chrome 113 está disponível aqui. Um repositório GitHub de amostras de código está disponível aqui e também há documentação oficial sobre WebGPU e WGSL.
.