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

François Beaufort
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". Подробнее о статусе этой функции…

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

Новая функция "core-features-and-limits"

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

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

Подробную информацию и инструкции по использованию в режиме совместимости WebGPU можно найти в объяснении и следующем разделе. Подробнее об этой проблеме…

Эксперимент с источником для режима совместимости WebGPU

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

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

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

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

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

Для большинства простых приложений достаточно передать значение featureLevel: "compatibility" при вызове функции requestAdapter(), чтобы включить режим совместимости. Более сложные приложения могут потребовать небольших изменений, чтобы соответствовать ограничениям режима. Хорошим примером является образец 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, явно включив эту функцию. Вы можете активировать ее локально, включив экспериментальный параметр "Experimental Web Platform Features" по адресу chrome://flags/#enable-experimental-web-platform-features.

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

Обновления на рассвете

В функцию WGPUQueueWorkDoneCallback добавлен аргумент message, чтобы она была более похожа на другие функции обратного вызова, которые также принимают статус. Подробнее о запросе на добавление заголовков WebGPU…

Когда emdawnwebgpu связан с -sSHARED_MEMORY, его файл webgpu.cpp также компилируется с этим флагом. Подробнее о версии Dawn CL 244075…

Это лишь некоторые из основных изменений. Ознакомьтесь с полным списком коммитов.

Что нового в WebGPU

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

Chrome 155–156

Chrome 153–154

Chrome 151–152

Chrome 149–150

Chrome 147–148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

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