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

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

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

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

Функции WebGPU "texture-compression-bc-sliced-3d" и "texture-compression-astc-sliced-3d" добавляют поддержку 3D-текстур с использованием форматов блочного сжатия (BC) и адаптивного масштабируемого сжатия текстур (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-сканирования мозга, ознакомившись с примером Volume Rendering - Texture 3D WebGPU и проверив запись в chromestatus .

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

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

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

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

Подробное объяснение и описание использования в режиме совместимости с WebGPU см. в пояснении и следующем разделе. См. проблему 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, такие как вычисления на графическом процессоре.

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

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

Утренние обновления

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

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

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

Что нового в WebGPU?

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

Хром 144

Хром 143

Хром 142

Хром 141

Хром 140

Хром 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