Опубликовано: 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 вводится новая функция "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 предлагает решение, предоставляя опциональную, слегка ограниченную версию 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
- Расширение WGSL subgroup_id
- Расширение WGSL uniform_buffer_standard_layout
- WebGPU на Linux
- Более быстрая запись буфера и текстуры
- Утренние обновления
Хром 143
- Компонент текстуры swizzle
- Удалить использование текстур в хранилище только для чтения bgra8unorm
- Утренние обновления
Хром 142
Хром 141
- Завершено тонирование ИК-излучения
- Анализ целочисленных диапазонов в компиляторе WGSL
- Обновление SPIR-V 1.4 для бэкенда Vulkan
- Утренние обновления
Хром 140
- Устройство запрашивает использование адаптера
- Сокращенная запись для использования текстуры там, где используется представление текстуры.
- WGSL textureSampleLevel поддерживает одномерные текстуры.
- Прекратить использование текстур в режиме только для чтения в bgra8unorm
- Удалите атрибут isFallbackAdapter из списка GPUAdapter.
- Утренние обновления
Хром 139
- Поддержка 3D-текстур для сжатых форматов BC и ASTC.
- Новая функция «Основные функции и ограничения»
- Пробная версия Origin для режима совместимости с WebGPU
- Утренние обновления
Хром 138
- Сокращенная запись для использования буфера в качестве ресурса привязки.
- Изменения требований к размеру буферов, отображаемых при создании.
- Архитектурный отчет для современных графических процессоров.
- Устаревший атрибут isFallbackAdapter для GPUAdapter
- Утренние обновления
Хром 137
- Используйте представление текстуры для привязки внешней текстуры.
- Копирование буферов выполняется без указания смещений и размера.
- Рабочая группа WGSL UniformLoad с использованием указателя на атомарную функцию
- Атрибут powerPreference GPUAdapterInfo
- Удалите атрибут compatibilityMode из GPURequestAdapterOptions.
- Утренние обновления
Хром 136
- Атрибут gPUAdapterInfo isFallbackAdapter
- Улучшения времени компиляции шейдеров в D3D12
- Сохраняйте и копируйте изображения холста.
- Ограничения режима совместимости лифта
- Утренние обновления
Хром 135
- Разрешить создание макета конвейера с макетом группы привязки пустого значения
- Разрешите области просмотра выходить за пределы границ целевых областей рендеринга.
- Упрощенный доступ к экспериментальному режиму совместимости на Android.
- Удалите ограничение maxInterStageShaderComponents.
- Утренние обновления
Хром 134
- Оптимизация рабочих нагрузок машинного обучения с помощью подгрупп
- Удалить поддержку типов текстур с возможностью фильтрации (float filterable texture types) как смешиваемых (blendable).
- Утренние обновления
Хром 133
- Дополнительные форматы unorm8x4-bgra и 1-компонентные вершинные форматы
- Разрешить запрос неизвестных лимитов с неопределенным значением.
- Изменения в правилах выравнивания WGSL
- Повышение производительности WGSL за счет отбрасывания
- Используйте параметр `videoFrame displaySize` для внешних текстур.
- Обработка изображений с нестандартной ориентацией осуществляется с помощью функции copyExternalImageToTexture.
- Улучшение опыта разработчиков
- Включите режим совместимости с помощью featureLevel
- Очистка характеристик экспериментальной подгруппы
- Устаревшее ограничение maxInterStageShaderComponents
- Утренние обновления
Хром 132
- Использование текстурного представления
- смешивание 32-битных текстур с плавающей запятой
- Атрибут GPUDevice adapterInfo
- Настройка контекста холста с недопустимым форматом вызывает ошибку JavaScript.
- Фильтрация ограничений сэмплера для текстур
- Эксперименты с расширенными подгруппами
- Улучшение опыта разработчиков
- Экспериментальная поддержка 16-битных нормализованных форматов текстур.
- Утренние обновления
Хром 131
- Расстояние между клипами в WGSL
- GPUCanvasContext getConfiguration()
- Примитивы точек и линий не должны иметь смещения по глубине.
- Встроенные функции сканирования для подгрупп.
- Экспериментальная поддержка непрямого режима с несколькими вариантами отсчета.
- Параметр компиляции модуля шейдера: строгая математика
- Удалить GPUAdapter requestAdapterInfo()
- Утренние обновления
Хром 130
- Смешивание из двух источников
- Улучшения времени компиляции шейдеров в Metal.
- Функция requestAdapterInfo() объявлена устаревшей.
- Утренние обновления
Хром 129
- Поддержка HDR с режимом тонального отображения холста.
- Расширенная поддержка подгрупп
- Утренние обновления
Хром 128
- Экспериментирование с подгруппами
- Устаревшая настройка смещения глубины для линий и точек.
- Скрыть предупреждение DevTools о незафиксированной ошибке, если используется preventDefault.
- WGSL сначала интерполирует выборку, а затем либо
- Утренние обновления
Хром 127
- Экспериментальная поддержка OpenGL ES на Android
- Информационный атрибут GPUAdapter
- Улучшения взаимодействия с WebAssembly
- Улучшена обработка ошибок кодировщика команд.
- Утренние обновления
Хром 126
- Увеличьте лимит maxTextureArrayLayers.
- Оптимизация загрузки буфера для бэкенда Vulkan.
- Улучшения времени компиляции шейдеров
- Буферы отправленных команд должны быть уникальными.
- Утренние обновления
Хром 125
Хром 124
- Текстуры для хранения данных только для чтения и для чтения и записи
- Поддержка работников сферы услуг и работников, работающих по совместительству
- Новые атрибуты информации об адаптере
- Исправлены ошибки
- Утренние обновления
Хром 123
- Поддержка встроенных функций DP4a в WGSL
- Неограниченные параметры указателей в WGSL
- Синтаксический сахар для разыменования составных элементов в WGSL
- Отдельное состояние только для чтения для параметров трафарета и глубины.
- Утренние обновления
Хром 122
- Расширьте охват аудитории с помощью режима совместимости (функция находится в разработке).
- Увеличьте лимит maxVertexAttributes.
- Утренние обновления
Хром 121
- Поддержка WebGPU на Android
- Для компиляции шейдеров в Windows используйте DXC вместо FXC.
- Запросы по временным меткам в вычислительных и рендеринговых проходах
- Точки входа по умолчанию для модулей шейдеров
- Поддержка display-p3 в качестве цветового пространства GPUExternalTexture
- информация о кучах памяти
- Утренние обновления
Хром 120
- Поддержка 16-битных значений с плавающей запятой в WGSL
- Расширяйте границы возможного
- Изменения в состоянии глубины-шаблона
- Обновления информации об адаптере
- Квантование запросов по временным меткам
- Особенности весенней уборки
Хром 119
- Фильтруемые 32-битные текстуры с плавающей запятой
- unorm10-10-10-2 формат вершин
- формат текстуры rgb10a2uint
- Утренние обновления
Хром 118
- Поддержка HTMLImageElement и ImageData в
copyExternalImageToTexture() - Экспериментальная поддержка текстур для чтения и записи, а также для чтения и только для чтения.
- Утренние обновления
Хром 117
- Неустановленный буфер вершин
- Отключить группу привязки
- Отключение ошибок при создании асинхронного конвейера в случае потери устройства
- Обновления по созданию шейдерных модулей SPIR-V
- Улучшение опыта разработчиков
- Конвейеры кэширования с автоматически генерируемой структурой.
- Утренние обновления
Хром 116
- Интеграция с WebCodecs
-
requestDevice()объекта GPUAdapter возвращает сообщение о потере устройства. - Обеспечьте плавное воспроизведение видео, если вызывается
importExternalTexture() - Соответствие спецификации
- Улучшение опыта разработчиков
- Утренние обновления
Хром 115
- Поддерживаемые языковые расширения WGSL
- Экспериментальная поддержка Direct3D 11
- При подключении к сети переменного тока по умолчанию используется дискретная видеокарта.
- Улучшение опыта разработчиков
- Утренние обновления
Хром 114
- Оптимизировать JavaScript
- Метод getCurrentTexture() на неконфигурированном холсте вызывает ошибку InvalidStateError.
- Обновления WGSL
- Утренние обновления