O número de recursos da WebGPU pode parecer um pouco baixo desta vez, mas os principais avanços estão a caminho! As próximas versões vão incluir recursos como DP4a, texturas de armazenamento somente leitura e leitura/gravação, controle separado de aspecto de estêncil e profundidade, renderização em frações de textura 3D e melhorias na compilação de sombreador.
Enquanto isso, saiba como turbinar os testes do seu modelo de IA da Web com suporte para WebGPU e WebGL no Chrome sem comando e por que a WebGPU pode estar desativada ou não funcionar no Chrome.
Ampliar o alcance com o modo de compatibilidade (recurso em desenvolvimento)
A WebGPU se alinha bem com APIs gráficas modernas (Vulkan, Metal e D3D12), mas alguns dispositivos não são compatíveis com elas. Isso limita a acessibilidade da WebGPU, especialmente em plataformas como Windows (31% dos usuários do Chrome não têm o D3D11.1+), Android (23% não têm o Vulkan 1.1+) e ChromeOS (adoção do Vulkan em crescimento).
A equipe do Chrome está trabalhando em um modo de compatibilidade na WebGPU para resolver isso, oferecendo uma versão ligeiramente restrita da WebGPU que funcione em APIs mais antigas, como D3D11 e OpenGL ES. Isso vai expandir a base de usuários em potencial da WebGPU.
É importante ressaltar que os aplicativos que usam o modo de compatibilidade continuam sendo aplicativos WebGPU totalmente válidos. Os dispositivos sem suporte ao modo de compatibilidade vão usar o adaptador WebGPU principal como padrão, garantindo uma ampla usabilidade.
Confira a proposta e comente se tiver dúvidas.
Aumentar o limite de maxVertexAttributes
Por padrão, o número máximo de atributos no total em todos os buffers ao criar um GPURenderPipeline é 16. Agora é possível solicitar até 30 usando o limite maxVertexAttributes quando compatível. Confira o exemplo a seguir e o problema dawn:2223 (link em inglês).
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxVertexAttributes < 30) {
// When the desired limit isn't supported, take action to either fall back to
// a code path that does not require the higher limit or notify the user that
// their device does not meet minimum requirements.
}
// Request highest limit of max vertex attributes.
const device = await adapter.requestDevice({
requiredLimits: { maxVertexAttributes: 30 },
});
Atualizações do amanhecer
Um novo botão de alternância de instância chamado "expose_wgsl_experimental_features" foi adicionado para que a instância exponha apenas os recursos experimentais da WGSL, mas não os inseguros, para que os recursos experimentais seguros da WGSL possam ser usados sem a necessidade de ativar as "allow_unsafe_apis". botão de alternância. Consulte problema dawn:2260.
Melhorias recentes nas vinculações do Dawn para Node.js incluem o seguinte:
GPUSupportedFeatures::getSize()
foi adicionado.- A inatividade de
GPUAdapter
foi implementada. GPUInternalError
agora é informado corretamente para os dispositivos.- Os atributos agora são enumeráveis.
Isso cobre apenas alguns dos principais destaques. Confira a lista completa de confirmações (link em inglês).
Novidades da WebGPU
Uma lista de tudo o que foi abordado na série O que há de novo na WebGPU.
Chrome 128
- Fazendo testes com subgrupos
- Suspender o uso da configuração de viés de profundidade para linhas e pontos
- Ocultar aviso de erro não capturado do DevTools se preventDefault
- A amostragem de WGSL é interpolada primeiro e
- Atualizações do amanhecer
Chrome 127
- Suporte experimental para OpenGL ES no Android
- Atributo de informações do GPUAdapter
- Melhorias na interoperabilidade do WebAssembly
- Erros aprimorados do codificador de comando
- Atualizações do amanhecer
Chrome 126
- Aumentar o limite de maxTextureArrayLayers
- Otimização do upload de buffer para back-end do Vulkan
- Melhorias no tempo de compilação do sombreador
- Os buffers de comando enviados precisam ser exclusivos
- Atualizações do amanhecer
Chrome 125
- Subgrupos (recurso em desenvolvimento)
- Renderizar uma fração de textura 3D
- Atualizações do amanhecer
Chrome 124
- Texturas de armazenamento somente leitura e leitura/gravação
- Suporte aos service workers e workers compartilhados
- Novos atributos de informações do adaptador
- Correções de bugs
- Atualizações do amanhecer
Chrome 123
- Suporte para funções integradas do DP4a na WGSL
- Parâmetros de ponteiro irrestritos na WGSL
- Sintaxe de açúcar para desreferenciar compostos na WGSL (link em inglês)
- Estado somente leitura separado para aspectos de estêncil e de profundidade
- Atualizações do amanhecer
Chrome 122
- Expandir o alcance com o modo de compatibilidade (recurso em desenvolvimento)
- Aumentar o limite de maxVertexAttributes
- Atualizações do amanhecer
Chrome 121
- Suporte à WebGPU no Android
- Usar DXC em vez de FXC para compilação de sombreador no Windows
- Consultas de carimbo de data/hora em passagens de computação e renderização
- Pontos de entrada padrão para módulos de sombreador
- Suporte a display-p3 como espaço de cores GPUExternalTexture
- Informações sobre heaps de memória
- Atualizações do amanhecer
Chrome 120
- Suporte para valores de ponto flutuante de 16 bits na WGSL
- Supere os limites
- Mudanças no estado de profundidade do estêncil
- Atualizações de informações sobre os adaptadores
- Quantização de consultas de carimbo de data/hora
- Recursos para fazer faxina
Chrome 119
- Texturas flutuantes filtráveis de 32 bits
- Formato de vértice unorm10-10-10-2
- Formato de textura rgb10a2uint
- Atualizações do amanhecer
Chrome 118
- Compatibilidade de HTMLImageElement e ImageData em
copyExternalImageToTexture()
- Suporte experimental à textura de armazenamento somente leitura e leitura-gravação
- Atualizações do amanhecer
Chrome 117
- Não definir buffer de vértice
- Cancelar configuração do grupo de vinculação
- Silenciar erros da criação de pipeline assíncrono quando o dispositivo for perdido
- Atualizações da criação do módulo de sombreador SPIR-V
- Como melhorar a experiência do desenvolvedor
- Pipelines em cache com layout gerado automaticamente
- Atualizações do amanhecer
Chrome 116
- Integração com WebCodecs
- Dispositivo perdido retornado pelo GPUAdapter
requestDevice()
- Manter a reprodução de vídeo suave se
importExternalTexture()
for chamado - Conformidade com especificações
- Como melhorar a experiência do desenvolvedor
- Atualizações do amanhecer
Chrome 115
- Extensões de idiomas da WGSL compatíveis
- Suporte experimental para Direct3D 11
- Receber uma GPU discreta por padrão com alimentação CA
- Como melhorar a experiência do desenvolvedor
- Atualizações do amanhecer
Chrome 114
- Otimizar o JavaScript
- getCurrentTexture() em uma tela não configurada gera InvalidStateError
- Atualizações da WGSL
- Atualizações do amanhecer