A compatibilidade con WebGPU estará habilitada en Chrome

Google anunciou o soporte predeterminado para a API de gráficos WebGPU e a linguaxe de sombreado WebGPU (WGSL) en Chrome 113, que está programado para o lanzamento do 2 de maio. WebGPU ofrece unha API similar a Vulkan, Metal e Direct3D 12 para realizar operacións do lado da GPU, como renderizado e cálculo, e tamén che permite usar unha linguaxe de sombreado para escribir programas do lado da GPU. A implementación WebGPU só se activará inicialmente nas compilacións para ChromeOS, macOS e Windows. Para Linux e Android, a compatibilidade con WebGPU activarase nunha data posterior.

Ademais de Chrome, a compatibilidade experimental con WebGPU probouse desde abril de 2020 en Firefox e desde novembro de 2021 en Safari. Para activar WebGPU en Firefox, configure as marcas dom.webgpu.enabled e gfx.webgpu.force-enabled en about:config. Aínda non hai plans para activar WebGPU por defecto en Firefox e Safari. As implementacións de WebGPU desenvolvidas para Firefox e Chrome están dispoñibles en forma de bibliotecas separadas: Dawn (C++) e wgpu (Rust), que pode usar para integrar a compatibilidade de WebGPU nas súas aplicacións. Tamén se está a traballar para engadir compatibilidade con WebGPU ás bibliotecas JavaScript populares de forma nativa usando WebGL. Por exemplo, xa se anunciou soporte completo para WebGPU en Babylon.js e soporte parcial en Three.js, PlayCanvas e TensorFlow.js.

Conceptualmente, WebGPU difire de WebGL da mesma forma que a API de gráficos Vulkan difiere de OpenGL, pero WebGPU non se basea nunha API de gráficos específica, senón que é unha capa de propósito xeral 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 conseguir aplicacións gráficas de maior rendemento reducindo a sobrecarga e aumentando a eficiencia da GPU.

WebGPU permite crear proxectos 3D complexos para a Web que funcionan así como programas autónomos que utilizan directamente Vulkan, Metal ou Direct3D, pero non están vinculados a plataformas específicas. A WebGPU tamén ofrece opcións 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 abrangue as posibilidades asociadas á descarga de cálculos ao lado da GPU e á 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