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

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

Возможно, на этот раз количество функций WebGPU покажется немного скромным, но серьёзные улучшения уже не за горами! В следующих выпусках будут представлены такие функции, как DP4a, хранение текстур только для чтения и для чтения и записи, раздельное управление трафаретами и глубиной, рендеринг в 3D-текстурные фрагменты и улучшения компиляции шейдеров.

В то же время узнайте, как улучшить тестирование моделей веб-ИИ с помощью поддержки WebGPU и WebGL в Headless Chrome, а также почему WebGPU может быть отключен или не работать в Chrome .

Расширение охвата с помощью режима совместимости (функция в разработке)

WebGPU хорошо совместим с современными графическими API (Vulkan, Metal и D3D12), но некоторые устройства их не поддерживают. Это ограничивает доступность WebGPU, особенно на таких платформах, как Windows (31% пользователей Chrome не поддерживают D3D11.1+), Android (23% не поддерживают Vulkan 1.1+) и ChromeOS (распространение Vulkan растёт).

Команда Chrome работает над режимом совместимости в WebGPU, чтобы решить эту проблему, предлагая слегка ограниченную версию WebGPU, работающую со старыми API, такими как D3D11 и OpenGL ES. Это расширит потенциальную базу пользователей WebGPU.

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

Диаграмма режима совместимости WebGPU.
Расширен диапазон режима совместимости с WebGPU.

Ознакомьтесь с предложением и оставьте комментарий , если у вас есть вопросы.

Увеличить лимит maxVertexAttributes

Максимальное количество атрибутов в буферах при создании GPURenderPipeline по умолчанию составляет 16. Теперь можно запросить до 30 атрибутов, используя ограничение maxVertexAttributes (если поддерживается). См. следующий пример и выполните команду dawn:2223 .

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

if (adapter.limits.maxVertexAttributes < 30) {
  // When the desired limit isn't supported, take action to either fall back to
  // a code path that does not require the higher limit or notify the user that
  // their device does not meet minimum requirements.
}

// Request highest limit of max vertex attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxVertexAttributes: 30 },
});

Обновления Dawn

Добавлен новый переключатель экземпляра «expose_wgsl_experimental_features», позволяющий экземпляру предоставлять доступ только к экспериментальным функциям WGSL, но не к небезопасным. Таким образом, безопасные экспериментальные функции WGSL можно использовать без необходимости включения переключателя «allow_unsafe_apis». См. issue dawn:2260 .

Недавние улучшения привязок Dawn для Node.js включают следующее:

  • Добавлен GPUSupportedFeatures::getSize() .
  • Реализована функция устаревания GPUAdapter .
  • GPUInternalError теперь корректно отображается для устройств.
  • Атрибуты теперь перечисляемы.

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

Что нового в WebGPU

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

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