Изучаем WebGPU

Для нативной графики в C++.

Эта документация проведёт вас через использование графического API WebGPU для создания нативных 3D-приложений на C++ с нуля, для Windows, Linux и macOS.

Быстрый старт! (Кликни)

Хотите понимать каждый бит GPU-кода, который пишете?

Да, писать WebGPU-код с нуля!

Отлично! Просто переходите к введению и читайте все главы последовательно.

Нет, я бы хотел пропустить начальный этап.

Это вполне логично, вы всегда можете вернуться к базовым шагам позже.

Возможно, вам стоит сразу посмотреть ссылку на готовый код, которая находится в начале и конце каждой страницы, например:

../_images/resulting-code-light.png ../_images/resulting-code-dark.png

Вы бы хотели использовать упрощенную версию?

Да я предпочту стиль C++.

Используйте вкладку “With webgpu.hpp”.

Нет, покажи мне чистый C WebGPU API!

Используйте вкладку “Vanilla webgpu.h”. Готовый код для чистого WebGPU обновляется реже, но эта вкладка также переключает все блоки кода внутри руководства, они актуальны.

Чтобы собрать этот базовый код, обратитесь к разделу Сборка главы о настройке проекта. Вы можете добавить -DWEBGPU_BACKEND=WGPU (по умолчанию) или -DWEBGPU_BACKEND=DAWN к строке cmake -B build, чтобы выбрать соответственно wgpu-native или Dawn в качестве бэкенда.

Как далеко вы хотите продвинуться с базовым кодом?

Простой треугольник

Обратитесь к главе Привет, Треугольник.

3D Mesh Viewer с базовым управлением

Рекомендую начать с конца главы Контроль освещения.

Я хочу, чтобы код работал и в вебе.

Основная часть руководства не включает несколько дополнительных строк кода. Обратитесь к приложению Сборка для веба, чтобы адаптировать примеры для запуска в вебе!

🚧 Work in progress

Этот гайд всё ещё находится в разработке, а стандарт WebGPU продолжает эволюционировать. Чтобы помочь читателю отслеживать его актуальность, мы используем следующие значки в заголовках глав:

🟢 Актуально! Использует последнюю версию WebGPU-distribution.
🟡 Готово к чтению, но использует устаревшую версию WebGPU.
🟠 В процессе работы: читаемо, но не завершено.
🔴 TODO: поверхностно рассмотренная тема.

NB: При использовании кода, сопровождающего главу, убедитесь, что используете именно ту версию webgpu/, которая предоставляется в ней, чтобы избежать несовместимостей.

Содержание