Что нового в WebGPU (Chrome 139)

Франсуа Бофор
François Beaufort

Опубликовано: 30 июля 2025 г.

Поддержка 3D-текстур для сжатых форматов BC и ASTC

Функции WebGPU "texture-compression-bc-sliced-3d" и "texture-compression-astc-sliced-3d" добавляют поддержку 3D-текстур с использованием форматов Block Compression (BC) и Adaptive Scalable Texture Compression (ASTC). Это позволяет использовать преимущества эффективного сжатия форматов BC и ASTC для объёмных текстурных данных, обеспечивая значительное сокращение объёма памяти и требований к пропускной способности без существенной потери качества изображения. Это особенно ценно в таких областях, как научная визуализация, медицинская визуализация и передовые методы рендеринга.

Следующий фрагмент кода проверяет, поддерживает ли адаптер 3D-текстуры со сжатыми форматами BC и ASTC, и запрашивает устройство с этими функциями, если они доступны.

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
}

Изучите 3D-сканирование мозга, просмотрев пример Объемная визуализация - Текстура 3D WebGPU и просмотрите запись chromestatus .

3D-сканирование мозга, визуализированное с помощью WebGPU.
Изображение сканирования мозга из 3D-текстуры в сжатом формате ASTC.

Новая функция «основные функции и ограничения»

Для режима совместимости WebGPU вводится новая функция "core-features-and-limits" . Эта функция указывает, что адаптер или устройство поддерживает основные функции и ограничения спецификации WebGPU. В настоящее время доступна только версия «core» WebGPU, поэтому все реализации WebGPU должны включать "core-features-and-limits" в список поддерживаемых функций.

В будущем, когда режим совместимости с WebGPU будет доступен, адаптер или устройство может не иметь этой функции, что будет означать, что это адаптер или устройство с режимом совместимости, а не основной. Включение этой функции на устройстве снимает все ограничения режима совместимости (функции и ограничения).

Подробное описание и использование режима совместимости с WebGPU см. в описании и в следующем разделе. См. issue 418025721 .

Пробная версия Origin для режима совместимости с WebGPU

WebGPU — это мощный API, разработанный для современной графики и совместимый с такими технологиями, как Vulkan, Metal и Direct3D 12. Однако значительное число устройств по-прежнему не поддерживают эти новые API. Например, в Windows у 31% пользователей Chrome отсутствует Direct3D 11.1 или более поздней версии. На Android у 15% пользователей Android отсутствует Vulkan 1.1, включая 10%, у которых Vulkan отсутствует вообще.

Это создаёт трудности для разработчиков, стремящихся максимально расширить охват своих приложений. Им часто приходится разрабатывать несколько реализаций (например, WebGPU и WebGL), соглашаться на более ограниченную аудиторию, используя только WebGPU, или использовать только WebGL, упуская из виду расширенные функции WebGPU, такие как вычисления на GPU.

Визуальное представление режима совместимости с WebGPU.
Расширен диапазон режима совместимости с WebGPU.

Режим совместимости с WebGPU предлагает решение, предоставляя опциональную, слегка ограниченную версию API WebGPU. Этот режим предназначен для работы со старыми графическими API, такими как OpenGL ES 3.1 и Direct3D11, что значительно расширяет возможности вашего приложения на устройствах, не поддерживающих современные явные графические API, требуемые ядром WebGPU.

Поскольку режим совместимости — это подмножество WebGPU, приложения, созданные с его помощью, также являются полноценными приложениями «ядра» WebGPU. Это означает, что они будут без проблем работать даже в браузерах, которые не поддерживают режим совместимости.

Для многих базовых приложений включение режима совместимости так же просто, как передача featureLevel: "compatibility" при вызове requestAdapter() . Более сложным приложениям могут потребоваться незначительные изменения , чтобы соответствовать ограничениям режима. Пример Generate Mipmap WebGPU — хороший пример.

// 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
}

Включить функцию

По умолчанию режим совместимости с WebGPU отключен в Chrome, но с ним можно поэкспериментировать в Chrome 139, явно включив эту функцию. Вы можете активировать его локально, установив флажок «Экспериментальные функции веб-платформы» на странице chrome://flags/#enable-experimental-web-platform-features .

Чтобы включить эту функцию для всех посетителей вашего приложения, в настоящее время проводится пробный период Origin , который завершится в Chrome 145 (21 апреля 2026 г.). Чтобы принять участие в пробном периоде, ознакомьтесь с публикацией «Начало работы с пробными периодами Origin» .

Обновления Dawn

В функцию WGPUQueueWorkDoneCallback добавлен аргумент message для большей согласованности с другими функциями обратного вызова, которые также принимают статус. См. webgpu-headers PR .

Если emdawnwebgpu скомпонован с -sSHARED_MEMORY , его файл webgpu.cpp также компилируется с этим флагом. См. Dawn CL 244075 .

Здесь рассматриваются лишь некоторые из ключевых моментов. Ознакомьтесь с полным списком коммитов .

Что нового в WebGPU

Список всего, что было рассмотрено в серии « Что нового в WebGPU» .

Хром 139

Хром 138

Хром 137

Хром 136

Хром 135

Хром 134

Хром 133

Хром 132

Хром 131

Хром 130

Хром 129

Хром 128

Хром 127

Хром 126

Хром 125

Хром 124

Хром 123

Хром 122

Хром 121

Хром 120

Хром 119

Хром 118

Хром 117

Хром 116

Хром 115

Хром 114

Хром 113