Chrome ya contara con la compatibilidad de WebGPU y sera activado de manera pretederminada
Hace pocos días Google dio a conocer mediante uno anunció el soporte predeterminado para la API de gráficos WebGPU y el lenguaje de sombreado WebGPU (WGSL) en la rama Chrome 113, cuyo lanzamiento está programado para el 2 de mayo.
Para quienes desconocen de WebGPU, deben saber que proporciona una API similar a Vulkan, Metal y Direct3D 12 para realizar operaciones del lado de la GPU, como el procesamiento y el cálculo, y también le permite usar un lenguaje de sombreado para escribir programas del lado de la GPU.
Sobre WebGPU
Conceptualmente, WebGPU difiere de WebGL de la misma manera que la API de gráficos de Vulkan difiere de OpenGL, pero WebGPU no se basa en una API de gráficos específica, sino que es una capa de uso general que utiliza las mismas primitivas de bajo nivel que se encuentran en Vulkan. Metal y Direct3D. WebGPU proporciona a las aplicaciones de JavaScript un control de bajo nivel sobre la organización, el procesamiento y la transmisión de comandos a la GPU, la gestión de los recursos asociados, la memoria, los búferes, los objetos de textura y los sombreadores de gráficos compilados. Este enfoque le permite lograr aplicaciones gráficas de mayor rendimiento al reducir la sobrecarga y aumentar la eficiencia de la GPU.
WebGPU permite crear proyectos 3D complejos para la Web que funcionan tan bien como programas independientes que utilizan directamente Vulkan, Metal o Direct3D, pero que no están vinculados a plataformas específicas. La WebGPU también proporciona opciones adicionales para portar programas de gráficos nativos a un formulario habilitado para la web mediante la compilación en WebAssembly. Además de los gráficos 3D, WebGPU también cubre las posibilidades asociadas con la descarga de cálculos al lado de la GPU y la ejecución de sombreadores.
De las características clave de WebGPU, podemos destacar las siguientes:
- 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 búferes; GPUCommandEncoder para codificar comandos individuales, incluidas las etapas de procesamiento y cálculo; GPUCommandBuffer para pasar a la cola de ejecución de GPU.
El resultado puede representarse en un área asociada con uno o más elementos del lienzo, o procesarse sin salida (por ejemplo, al ejecutar tareas computacionales). La separación de etapas facilita la separación de las operaciones de creación y aprovisionamiento de recursos en diferentes controladores que pueden ejecutarse en diferentes subprocesos. - Un enfoque diferente para el manejo de estados. WebGPU proporciona dos objetos, GPURenderPipeline y GPUComputePipeline, que le permiten combinar diferentes estados predefinidos por el desarrollador, lo que hace posible que el navegador no desperdicie recursos en trabajo adicional, como volver a compilar sombreadores. Los estados admitidos incluyen: sombreadores, búfer de vértices y diseños de atributos, diseños de grupos fijos, mezcla, profundidad y patrones, formatos de salida posteriores al renderizado.
- Un modelo vinculante, muy parecido a las herramientas de agrupación de recursos de Vulkan. Para agrupar recursos en grupos, WebGPU proporciona un objeto GPUBindGroup que se puede vincular a otros objetos similares para usar en sombreadores durante la grabación de comandos.
La creación de dichos grupos permite que el controlador realice las acciones preparatorias necesarias con anticipación y permite que el navegador cambie los enlaces de recursos entre llamadas de dibujo mucho más rápido. El diseño de los enlaces de recursos se puede predefinir mediante el objeto GPUBindGroupLayout.
Además de Chrome, el soporte WebGPU experimental se ha probado desde abril de 2020 en Firefox y desde noviembre de 2021 en Safari. Para habilitar WebGPU en Firefox, se debe configurar los indicadores dom.webgpu.enabled y gfx.webgpu.force-enabled en about:config.
Aún no hay planes para habilitar WebGPU de forma predeterminada en Firefox y Safari. Las implementaciones de WebGPU desarrolladas para Firefox y Chrome están disponibles en forma de bibliotecas separadas: Dawn (C++) y wgpu (Rust) que puede usar para integrar la compatibilidad con WebGPU en sus aplicaciones.
También cabe destacar que se está trabajando para agregar compatibilidad con WebGPU a bibliotecas populares de JavaScript de forma nativa utilizando WebGL. Por ejemplo, el soporte completo de WebGPU ya está declarado en Babylon.js y parcial enThree.js , PlayCanvas y TensorFlow.js.
La implementación de WebGPU solo se habilitará inicialmente en compilaciones para ChromeOS, macOS y Windows, mientras que para Linux y Android, la compatibilidad con WebGPU se activará en una fecha posterior.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.