As versións nocturnas de Firefox agora inclúen compatibilidade con WebGPU

В noite Firefox compila apareceu soporte de especificación WebGPU, que proporciona unha interface de programación para o procesamento de gráficos 3D e a computación do lado da GPU, conceptualmente similar á API Vulkan, Metal и Direct3D 12. A especificación está a ser desenvolvida por Mozilla, Google, Apple, Microsoft e membros da comunidade grupo de traballo, creado pola organización W3C.

O obxectivo principal de WebGPU é proporcionar unha interface de programación segura, fácil de usar, portátil e de alto rendemento para a plataforma web para aproveitar as tecnoloxías e as capacidades de gráficos 3D que proporcionan as API de gráficos do sistema moderno, como Direct3D 12 en Windows, Metal. en macOS e Vulkan en Linux. Conceptualmente, WebGPU difire de WebGL da mesma forma que Vulkan difiere de OpenGL e, ao mesmo tempo, non se basea nunha API gráfica específica, senón que é unha capa universal que xeralmente usa as mesmas primitivas de baixo nivel que se atopan en Vulkan. Metal e Direct3D.

WebGPU ofrece ás aplicacións JavaScript un control de nivel inferior 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 completos 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 ao portar programas de gráficos nativos nun formulario habilitado para a web mediante o uso da tecnoloxía WebAssembly. Ademais dos gráficos 3D, WebGPU tamén cobre capacidades relacionadas coa descarga de cálculos na GPU e co apoio ao desenvolvemento de sombreadores. Sombreadores lata crearase na linguaxe de sombreado WebGPU ou especificarse no formato SPIR-V intermedio e, a continuación, traducirase a linguaxes de sombreado compatibles cos controladores actuais.

WebGPU usa 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 buffers; GPUCommandEncoder para codificar ordes individuais, incluídas as fases de renderización e cálculo; GPUCommandBuffer que se poñerá en cola para a súa execución na GPU. O resultado pódese renderizar nunha área asociada a un ou máis elementos do lenzo ou procesarse sen saída (por exemplo, cando se executan tarefas de cálculo). Separar as fases facilita a separación das operacións de creación e preparación de recursos en diferentes controladores que poden executarse en diferentes fíos.

A segunda diferenza entre WebGPU e WebGL é un enfoque diferente para manexar os estados. WebGPU ofrece dous obxectos: GPURenderPipeline e GPUComputePipeline, que permiten combinar varios estados predefinidos polo programador, o que permite 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 e formatos de saída post-renderizado.

A terceira característica da WebGPU chámase, en gran medida, o modelo de vinculación
lembra as ferramentas de agrupación de recursos presentes en Vulkan.
Para agrupar recursos, WebGPU proporciona un obxecto GPUBindGroup, que se pode asociar con outros obxectos similares para usar en sombreadores mentres se escriben comandos. 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.

As versións nocturnas de Firefox agora inclúen compatibilidade con WebGPU

En Firefox, para habilitar WebGPU en about:config, hai unha configuración "dom.webgpu.enabled". A representación de CanvasContext tamén require que se active a composición WebRender ("gfx.webrender.all" en about:config), escrito en Rust e externalizando as operacións de renderización do contido da páxina á GPU. A implementación da WebGPU baséase no código do proxecto
wgpu, escrito en Rust e capaz de executarse sobre as API DX12, Vulkan e Metal en Linux, Android, Windows e macOS (tamén está en desenvolvemento o soporte para DX11 e OpenGL ES 3.0). Paralelamente, Google está a desenvolver outra implementación, que está dispoñible en Rama canaria Chromium e está habilitado mediante a marca "chrome://flags/#enable-unsafe-webgpu", pero ata agora só funciona en macOS e Windows.

Fonte: opennet.ru

Engadir un comentario