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

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

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

А пока узнайте, как значительно улучшить тестирование моделей веб-ИИ с помощью поддержки WebGPU и WebGL в безголовом 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 },
});

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

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

В числе последних улучшений в привязках Dawn для Node.js можно отметить следующие:

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

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

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