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

François Beaufort
François Beaufort

Дата публикации: 25 февраля 2026 г.

Поддержка режима совместимости WebGPU в OpenGL ES 3.1

Хотя WebGPU разработан с учетом современных графических API, таких как Vulkan, Metal и D3D12, многие пользователи работают на устаревшем оборудовании, которое не поддерживает эти стандарты. Чтобы устранить эту проблему и обеспечить широкую доступность, в Chrome добавлена новая функция, которую можно включить, – режим совместимости.

Этот режим позволяет запускать WebGPU на более старых графических API, таких как OpenGL ES 3.1. Ограничив спецификацию WebGPU, вы сделаете свое веб-приложение доступным для всех пользователей, независимо от того, какие устройства они используют: современные игровые компьютеры, старые ноутбуки или мобильные устройства. Команда начала с Android, но планирует добавить поддержку других устройств, например ChromeOS с OpenGL ES 3.1 и Windows с Direct3D 11.

Для многих веб-приложений можно включить режим совместимости, передав featureLevel: "compatibility" при вызове requestAdapter(). Если устройство поддерживает Core WebGPU, Chrome вернет адаптер с поддержкой Core, но веб-приложение будет знать, что нужно соблюдать ограничения совместимости, если только оно не включит функцию "core-features-and-limits" (или все доступные функции). Более сложные приложения могут потребовать незначительных изменений, чтобы соответствовать ограничениям режима.

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

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

Временные прикрепленные файлы

Вы можете использовать новый флаг TRANSIENT_ATTACHMENT GPUTextureUsage, чтобы создавать эффективные с точки зрения использования памяти прикрепленные файлы. Это позволяет операциям прохода отрисовки оставаться в памяти тайлов, что позволяет избежать трафика VRAM и выделения VRAM для текстур.

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

В следующем примере показано, как создать временную текстуру.

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

if ('TRANSIENT_ATTACHMENT' in GPUTextureUsage) {

  const transientTexture = device.createTexture({
    size: [42, 42],
    // The TRANSIENT_ATTACHMENT flag indicates the texture content is temporary,
    // potentially keeping it in fast on-chip memory.
    usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT,
    format: 'rgba8unorm',
  });
}

Ознакомьтесь с примером MSAA Hello Triangle для WebGPU и намерением реализовать эту функцию.

Расширение WGSL texture_and_sampler_let

Расширение языка WGSL texture_and_sampler_let позволяет назначать переменные текстуры или сэмплера для let в шейдере WGSL. Эта функция предоставляет альтернативный механизм присвоения имен и готовит к поддержке без привязки, при которой методы, возвращающие текстуры или выборки, можно сохранять непосредственно в локальных переменных.

Ознакомьтесь с примером ниже и намерением отправить.

@group(0) @binding(0) var tex: texture_2d<f32>;
@group(1) @binding(0) var store : texture_storage_2d<r32float, read_write>;

@fragment fn main() {
    let a = tex;
    var res: vec4f = textureLoad(a, vec2i(1i), 0);

    textureStore(store, vec2i(0i), res);
}

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

Доступны следующие новые уровни ограничений:

Проверка SPIR-V по умолчанию включена на устройствах Android, чтобы обеспечить дополнительный уровень безопасности и предотвратить нестабильную работу драйвера из-за неправильно сформированных входных данных. Подробнее о проблеме 473526182…

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

Что нового в 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