O W3C apresentou uma versão preliminar do padrão WebGPU

O consórcio W3C apresentou os primeiros rascunhos das especificações WebGPU e WebGPU Shading Language (WGSL), que definem uma API para a execução de operações na GPU, como renderização e computação, além de uma linguagem de sombreador para a escrita de programas que operam na GPU. Conceitualmente, é semelhante às APIs Vulkan, Metal e Direct3D 12. As especificações foram preparadas por um grupo de trabalho que inclui engenheiros da Mozilla, Google, Apple e Microsoft.

Conceitualmente, o WebGPU difere do WebGL da mesma forma que a API gráfica Vulkan difere do OpenGL, mas não se baseia em uma API gráfica específica, sendo uma camada universal que utiliza os mesmos primitivos de baixo nível encontrados no Vulkan, Metal e Direct3D. O WebGPU fornece às aplicações em JavaScript meios para controle de baixo nível sobre a organização, processamento e envio de comandos para a GPU, gerenciando recursos relacionados, memória, buffers, objetos de textura e sombreadore de gráficos compilados. Essa abordagem permite alcançar um desempenho mais alto em aplicações gráficas reduzindo a sobrecarga e aumentando a eficiência no uso da GPU.

O WebGPU permite criar projetos 3D complexos para a Web que funcionam tão bem quanto programas isolados que interagem diretamente com Vulkan, Metal ou Direct3D, mas que não estão atrelados a plataformas específicas. O WebGPU também oferece mais possibilidades ao portar programas gráficos nativos para uma forma capaz de operar com base em tecnologias web, através da compilação para WebAssembly. Além da gráficos 3D, o WebGPU abrange também capacidades relacionadas à computação na GPU e à execução de sombreadore.

Principais características do WebGPU:

  • Gerenciamento separado de recursos, tarefas preparatórias e envio de comandos para a GPU (no WebGL, um único objeto lidava com tudo de uma vez). São fornecidos três contextos distintos: GPUDevice para a criação de recursos, como texturas e buffers; GPUCommandEncoder para a codificação de comandos individuais, incluindo fases de renderização e computação; GPUCommandBuffer para o envio à fila de execução na GPU. O resultado pode ser renderizado em uma área associada a um ou mais elementos canvas, ou processado sem saída (por exemplo, ao executar tarefas computacionais). A separação das fases simplifica a distribuição da criação de recursos e operações preparatórias em diferentes manipuladores, que podem ser executados em diferentes threads.
  • Uma abordagem diferente na manipulação de estados. O WebGPU oferece dois objetos — GPURenderPipeline e GPUComputePipeline — que permitem combinar diferentes estados, previamente definidos pelo desenvolvedor, o que possibilita ao navegador não desperdiçar recursos em trabalhos adicionais, como a recompilação de shaders. Entre os estados suportados estão: shaders, layouts de buffers de vértices e atributos, layouts de grupos anexados, mesclagem, profundidade e templates, formatos de saída após a renderização.
  • O modelo de ligação, que se assemelha muito aos mecanismos de agrupamento de recursos presentes no Vulkan. Para agrupar recursos no WebGPU, é fornecido o objeto GPUBindGroup, que pode ser associado a outros objetos semelhantes durante a gravação de comandos para uso em shaders. A criação de tais grupos permite que o driver execute antecipadamente as ações preparatórias necessárias, além de permitir que o navegador altere as ligações de recursos de forma significativamente mais rápida entre as chamadas de renderização. A disposição das ligações de recursos pode ser definida previamente utilizando o objeto GPUBindGroupLayout.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster