Las compilaciones nocturnas de Firefox ahora incluyen soporte WebGPU

В nocturno Firefox construye apareció soporte de especificaciones WebGPU, que proporciona una interfaz de programación para procesamiento de gráficos 3D y computación del lado de GPU, conceptualmente similar a la API Volcán, Metal и Direct3D 12. La especificación está siendo desarrollada por Mozilla, Google, Apple, Microsoft y miembros de la comunidad en grupo de trabajocreado por el W3C.

El objetivo clave de WebGPU es proporcionar una interfaz de programación segura, fácil de usar, portátil y de alto rendimiento para que la plataforma web aproveche las tecnologías y capacidades de gráficos 3D proporcionadas por las API de gráficos de sistemas modernos, como Direct3D 12 en Windows, Metal. en macOS y Vulkan en Linux. Conceptualmente, WebGPU se diferencia de WebGL de la misma manera que Vulkan se diferencia de OpenGL y, al mismo tiempo, no se basa en una API de gráficos específica, sino que es una capa universal que generalmente utiliza las mismas primitivas de bajo nivel que se encuentran en Vulkan. Metal y Direct3D.

WebGPU proporciona aplicaciones JavaScript con control de nivel inferior sobre la organización, procesamiento y transmisión de comandos a la GPU, administrando recursos asociados, memoria, buffers, objetos de textura y sombreadores de gráficos compilados. Este enfoque le permite lograr un mayor rendimiento para las aplicaciones gráficas al reducir los costos generales y aumentar la eficiencia del trabajo con la GPU.

WebGPU permite crear proyectos 3D complejos y completos para la Web que no funcionan peor que los programas independientes que acceden directamente a Vulkan, Metal o Direct3D, pero que no están vinculados a plataformas específicas. WebGPU también proporciona capacidades adicionales al migrar programas de gráficos nativos a un formato habilitado para la web mediante el uso de la tecnología WebAssembly. Además de los gráficos 3D, WebGPU también cubre capacidades relacionadas con la descarga de cálculos a la GPU y el soporte al desarrollo de sombreadores. Sombreadores lata crearse en WebGPU Shading Language o especificarse en el formato SPIR-V intermedio y luego traducirse a lenguajes de sombreado compatibles con los controladores actuales.

WebGPU utiliza gestión separada de recursos, trabajo preparatorio y transmisión de comandos a la GPU (en WebGL, un objeto era responsable de todo a la vez). Se proporcionan tres contextos separados:
GPUDevice para crear recursos como texturas y buffers; GPUCommandEncoder para codificar comandos individuales, incluidas las etapas de procesamiento y cálculo; GPUCommandBuffer se pondrá en cola para su ejecución en la GPU. El resultado se puede representar en un área asociada con uno o más elementos del lienzo o procesarse sin salida (por ejemplo, cuando se ejecutan tareas informáticas). Separar las etapas hace que sea más fácil separar las operaciones de creación y preparación de recursos en diferentes controladores que pueden ejecutarse en diferentes subprocesos.

La segunda diferencia entre WebGPU y WebGL es un enfoque diferente para manejar estados. WebGPU ofrece dos objetos: GPURenderPipeline y GPUComputePipeline, que le permiten combinar varios estados predefinidos por el desarrollador, lo que permite que el navegador no desperdicie recursos en trabajo adicional, como recompilar sombreadores. Los estados admitidos incluyen: sombreadores, búfer de vértices y diseños de atributos, diseños de grupos fijos, fusión, profundidad y patrones, y formatos de salida posteriores al renderizado.

La tercera característica de WebGPU se llama modelo vinculante, en gran parte
que recuerda a las herramientas de agrupación de recursos presentes en Vulkan.
Para agrupar recursos, WebGPU proporciona un objeto GPUBindGroup, que se puede asociar con otros objetos similares para usarlo en sombreadores mientras se escriben comandos. La creación de dichos grupos permite al controlador realizar las acciones preparatorias necesarias por adelantado y permite al navegador cambiar los enlaces de recursos entre llamadas de extracción mucho más rápido. El diseño de los enlaces de recursos se puede predefinir utilizando el objeto GPUBindGroupLayout.

Las compilaciones nocturnas de Firefox ahora incluyen soporte WebGPU

En Firefox, para habilitar WebGPU en about:config, existe una configuración "dom.webgpu.enabled". La representación de CanvasContext también requiere que la composición esté habilitada renderizado web (“gfx.webrender.all” en about:config), escrito en Rust y subcontratando las operaciones de representación del contenido de la página a la GPU. La implementación de WebGPU se basa en el código del proyecto.
wgpu, escrito en Rust y capaz de ejecutarse sobre las API DX12, Vulkan y Metal en Linux, Android, Windows y macOS (la compatibilidad con DX11 y OpenGL ES 3.0 también está en desarrollo). Paralelamente, Google está desarrollando otra implementación, que está disponible en sucursal canaria Chromium y se habilita usando el indicador “chrome://flags/#enable-unsafe-webgpu”, pero hasta ahora solo funciona en macOS y Windows.

Fuente: opennet.ru

Añadir un comentario