O W3C presenta o borrador do estándar WebGPU

O W3C publicou os primeiros borradores das especificacións WebGPU e WebGPU Shading Language (WGSL), que definen as API para realizar operacións de GPU como renderizado e computación, así como unha linguaxe de sombreado para escribir programas que se executan na GPU. conceptualmente similares ás API de Vulkan, Metal e Direct3D 12. As especificacións foron elaboradas por un grupo de traballo que incluía enxeñeiros de Mozilla, Google, Apple e Microsoft.

Conceptualmente, WebGPU difire de WebGL da mesma forma que a API de gráficos Vulkan difiere de OpenGL, pero non está baseada nunha API de gráficos específica, senón que é unha capa universal que usa as mesmas primitivas de baixo nivel que se atopan en Vulkan, Metal e Direct3D. WebGPU ofrece ás aplicacións JavaScript un control de baixo nivel sobre a organización, procesamento e transmisión de comandos á GPU, xestionando os recursos asociados, a memoria, os búfers, os obxectos de textura e os sombreadores de gráficos compilados. Este enfoque permítelle acadar un maior rendemento para as aplicacións gráficas reducindo os custos xerais e aumentando a eficiencia de traballar coa GPU.

WebGPU permite crear proxectos 3D complexos para a Web que non funcionan peor que os programas autónomos que acceden directamente a Vulkan, Metal ou Direct3D, pero non están vinculados a plataformas específicas. WebGPU tamén ofrece capacidades adicionais para portar programas de gráficos nativos a un formulario habilitado para a web mediante a compilación en WebAssembly. Ademais dos gráficos 3D, WebGPU tamén inclúe capacidades relacionadas coa descarga de cálculos á GPU e a execución de sombreadores.

Características principais da WebGPU:

  • Xestión separada de recursos, traballo preparatorio e transmisión de comandos á GPU (en WebGL, un obxecto era responsable de todo á vez). Ofrécense tres contextos separados: GPUDevice para crear recursos como texturas e búfers; GPUCommandEncoder para codificar comandos individuais, incluíndo as fases de renderización e cálculo; GPUCommandBuffer para pasar á cola de execución da GPU. O resultado pódese renderizar nunha área asociada a un ou máis elementos do lenzo, ou renderizarse sen saída (por exemplo, cando se executan tarefas computacionais). A separación de etapas facilita a separación das operacións de creación e aprovisionamento de recursos en diferentes controladores que poden executarse en diferentes fíos.
  • Un enfoque diferente para manexar os estados. WebGPU ofrece dous obxectos: GPURenderPipeline e GPUComputePipeline, que permiten combinar diferentes estados predefinidos polo programador, o que fai posible que o navegador non desperdicie recursos en traballos adicionais, como recompilar sombreadores. Os estados admitidos inclúen: sombreadores, búfer de vértices e deseños de atributos, deseños de grupos adhesivos, mestura, profundidade e patróns, formatos de saída post-renderizado.
  • Un modelo de vinculación, parecido ás ferramentas de agrupación de recursos de Vulkan. Para agrupar os recursos en grupos, a WebGPU proporciona un obxecto GPUBindGroup que, no momento de escribir comandos, pode asociarse con outros obxectos similares para usar en shaders. A creación destes grupos permite que o controlador realice as accións preparatorias necesarias con antelación e permite que o navegador cambie as ligazóns de recursos entre chamadas de sorteo moito máis rápido. O deseño das ligazóns de recursos pódese predefinir mediante o obxecto GPUBindGroupLayout.

Fonte: opennet.ru

Engadir un comentario