На этот раз количество функций 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, обеспечивая широкие возможности использования.
Ознакомьтесь с предложением и прокомментируйте, если у вас есть вопросы.
Увеличьте лимит 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» .
Хром 130
- Смешение двух источников
- Улучшение времени компиляции шейдеров в Metal
- Устаревшая функция запроса GPUAdapterInfo().
- Обновления рассвета
Хром 129
Хром 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
- Используйте DXC вместо FXC для компиляции шейдеров в Windows.
- Запросы меток времени в проходах вычислений и рендеринга
- Точки входа по умолчанию в шейдерные модули
- Поддержка display-p3 как цветового пространства GPUExternalTexture.
- Информация о кучах памяти
- Обновления рассвета
Хром 120
- Поддержка 16-битных значений с плавающей запятой в WGSL.
- Расширьте границы
- Изменения состояния трафарета глубины
- Обновления информации об адаптере
- Квантование запросов временных меток
- Особенности генеральной уборки
Хром 119
- Фильтруемые 32-битные текстуры с плавающей запятой.
- формат вершин unorm10-10-10-2
- формат текстур rgb10a2uint
- Обновления рассвета
Хром 118
- Поддержка HTMLImageElement и ImageData в
copyExternalImageToTexture()
- Экспериментальная поддержка текстур для чтения-записи и хранения только для чтения.
- Обновления рассвета
Хром 117
- Сбросить буфер вершин
- Сбросить группу привязки
- Ошибки молчания при создании асинхронного конвейера при потере устройства
- Обновления создания шейдерного модуля SPIR-V
- Улучшение опыта разработчиков
- Кэширование конвейеров с автоматически создаваемым макетом
- Обновления рассвета
Хром 116
- Интеграция веб-кодеков
- Потерянное устройство, возвращенное
requestDevice()
- Обеспечьте плавное воспроизведение видео, если вызывается
importExternalTexture()
- Соответствие спецификациям
- Улучшение опыта разработчиков
- Обновления рассвета
Хром 115
- Поддерживаемые языковые расширения WGSL
- Экспериментальная поддержка Direct3D 11
- Получите дискретный графический процессор по умолчанию от сети переменного тока
- Улучшение опыта разработчиков
- Обновления рассвета
Хром 114
- Оптимизировать JavaScript
- getCurrentTexture() на ненастроенном холсте выдает InvalidStateError
- Обновления WGSL
- Обновления рассвета