Novedades de WebGPU (Chrome 139)

François Beaufort
François Beaufort

Publicado: 30 de julio de 2025

Compatibilidad con texturas 3D para formatos comprimidos BC y ASTC

Las funciones "texture-compression-bc-sliced-3d" y "texture-compression-astc-sliced-3d" de WebGPU agregan compatibilidad con texturas 3D que usan formatos de compresión de bloques (BC) y compresión de textura escalable y adaptable (ASTC). Esto te permite aprovechar las eficientes capacidades de compresión de los formatos BC y ASTC para los datos de texturas volumétricas, lo que ofrece reducciones significativas en la huella de memoria y los requisitos de ancho de banda sin una pérdida sustancial en la calidad visual. Esto es particularmente valioso en campos como la visualización científica, las imágenes médicas y las técnicas de renderización avanzadas.

El siguiente fragmento de código verifica si el adaptador admite texturas 3D con formatos comprimidos BC y ASTC, y solicita un dispositivo con estas funciones si están disponibles.

const adapter = await navigator.gpu.requestAdapter();

const requiredFeatures = [];
if (adapter?.features.has("texture-compression-bc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-bc",
    "texture-compression-bc-sliced-3d",
  );
}
if (adapter?.features.has("texture-compression-astc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-astc",
    "texture-compression-astc-sliced-3d",
  );
}
const device = await adapter?.requestDevice({ requiredFeatures });

// Later on...
if (device.features.has("texture-compression-astc-sliced-3d")) {
  // Create a 3D texture using ASTC compression
} else if (device.features.has("texture-compression-bc-sliced-3d")) {
  // Create a 3D texture using BC compression
} else {
  // Fallback: Create an uncompressed 3D texture
}

Explora las exploraciones cerebrales en 3D con el ejemplo de renderización de volumen con texturas en 3D de WebGPU y consulta la entrada de chromestatus.

Exploraciones cerebrales en 3D renderizadas con WebGPU.
Imagen de una exploración cerebral a partir de una textura en 3D con formato comprimido ASTC.

Nueva función "core-features-and-limits"

Se introducirá una nueva función de "core-features-and-limits" para el próximo modo de compatibilidad con WebGPU. Esta función indica que el adaptador o el dispositivo admiten las funciones y los límites principales de la especificación de WebGPU. WebGPU "principal" es la única versión disponible por el momento, por lo que todas las implementaciones de WebGPU deben incluir "core-features-and-limits" en sus funciones compatibles.

En el futuro, cuando se lance el modo de compatibilidad de WebGPU, es posible que un adaptador o un dispositivo no tengan esta función para indicar que son un adaptador o un dispositivo en modo de compatibilidad y no uno principal. Cuando se habilita en un dispositivo, se quitan todas las restricciones del modo de compatibilidad (funciones y límites).

Para obtener una explicación detallada y conocer el uso en el modo de compatibilidad de WebGPU, consulta el explicador y la siguiente sección. Consulta el problema 418025721.

Prueba de origen del modo de compatibilidad con WebGPU

WebGPU es una API potente diseñada para gráficos modernos que se alinea con tecnologías como Vulkan, Metal y Direct3D 12. Sin embargo, una cantidad significativa de dispositivos aún no admite estas APIs más recientes. Por ejemplo, en Windows, el 31% de los usuarios de Chrome no tienen Direct3D 11.1 o una versión posterior. En Android, el 15% de los usuarios no tienen Vulkan 1.1, y el 10% no tienen Vulkan.

Esto crea un desafío para los desarrolladores que desean maximizar el alcance de su aplicación. A menudo, se ven obligados a desarrollar varias implementaciones (por ejemplo, WebGPU y WebGL), aceptar un público más limitado con WebGPU principal o seguir usando WebGL, perdiendo las funciones avanzadas de WebGPU, como el procesamiento de GPU.

Representación visual del modo de compatibilidad de WebGPU.
Se amplió el alcance del modo de compatibilidad de WebGPU.

El modo de compatibilidad de WebGPU ofrece una solución, ya que proporciona una versión de la API de WebGPU con habilitación opcional y algunas restricciones. Este modo está diseñado para ejecutar APIs de gráficos más antiguas, como OpenGL ES 3.1 y Direct3D11, lo que expande significativamente el alcance de tu aplicación a dispositivos que no admiten las APIs de gráficos explícitas y modernas que requiere WebGPU principal.

Dado que el modo de compatibilidad es un subconjunto de WebGPU, las aplicaciones creadas con él también son aplicaciones "principales" válidas de WebGPU. Esto significa que se ejecutarán sin problemas incluso en navegadores que no admitan específicamente el modo de compatibilidad.

En muchas aplicaciones básicas, habilitar el modo de compatibilidad es tan sencillo como pasar featureLevel: "compatibility" cuando llamas a requestAdapter(). Las aplicaciones más complejas pueden requerir ajustes menores para adaptarse a las restricciones del modo. El ejemplo de WebGPU para generar mapas de MIP es un buen ejemplo.

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({
  featureLevel: "compatibility",
});

const hasCore = adapter?.features.has("core-features-and-limits");
const device = await adapter?.requestDevice({
  requiredFeatures: (hasCore ? ["core-features-and-limits"] : []),
});

if (device?.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions will apply
}

Habilita la función

De forma predeterminada, el modo de compatibilidad de WebGPU no está habilitado en Chrome, pero se puede experimentar con él en Chrome 139 habilitando explícitamente la funcionalidad. Puedes activarlo de forma local habilitando la marca "Experimental Web Platform Features" en chrome://flags/#enable-experimental-web-platform-features.

Para habilitarlo para todos los visitantes de tu app, se está llevando a cabo una prueba de origen que finalizará en Chrome 145 (21 de abril de 2026). Para participar en la prueba, consulta la publicación Cómo comenzar con las pruebas de origen.

Actualizaciones de Dawn

Se agregó un argumento message a la función WGPUQueueWorkDoneCallback para que sea más coherente con otras funciones de devolución de llamada que también toman un estado. Consulta la PR de webgpu-headers.

Cuando emdawnwebgpu se vincula con -sSHARED_MEMORY, su archivo webgpu.cpp también se compila con esta marca. Consulta Dawn CL 244075.

Esto solo abarca algunos de los aspectos destacados clave. Consulta la lista exhaustiva de confirmaciones.

Novedades de WebGPU

Una lista de todo lo que se abordó en la serie Novedades de WebGPU

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113