EnglishРусский Map

Learn WebGPU (для нативной графики на C++)

title
Learn WebGPU (для нативной графики на C++)
type
entity
summary
Руководство Эли Мишеля по нативной 3D-графике на C++ с WebGPU под Windows, Linux и macOS
aliases
LearnWebGPU
tags
graphics, webgpu, c++, learning-resource
created
2026-07-29
updated
2026-07-29
lang
ru
translation_of
learn-webgpu-cpp
source_updated
2026-07-29
translated
2026-09-01
translator
lllm/antigravity/gemini-3.7-flash-medium

LearnWebGPU - это подробное, объёмом в целую книгу руководство по созданию нативных 3D-приложений на C++ с использованием API WebGPU под Windows, Linux и macOS. Вопреки названию, запуск в браузере здесь лишь побочный сценарий: основная часть руководства посвящена сборке десктопных бинарников, а запуск тех же примеров в вебе требует лишь нескольких дополнительных строк, вынесенных в приложение. Автор руководства - Эли Мишель (Élie Michel), который также поддерживает дистрибутив WebGPU-distribution, используемый в примерах.

Что рассматривается

Основа книги - последовательное движение с нуля. Раздел Getting Started открывает окно и заливает его цветом, разбирая настройку проекта, получение адаптера и устройства (adapter и device), очередь команд и обёртку для C++. Раздел Basic 3D Rendering ведёт от Hello Triangle через работу с геометрией (вершинные буферы, несколько атрибутов, индексные буферы, загрузка из файла), uniform-переменные шейдеров (включая динамические), трёхмерные сетки с буфером глубины и матрицами трансформации и проекции, текстурирование со сэмплерами, интерактивность (изменение размера окна, управление камерой, GUI, управление освещением) к освещению и материалам - блики и normal mapping уже готовы, а image-based lighting, кубические карты и физически корректные материалы (PBR) ещё в работе.

Раздел Basic Compute меньше и охватывает вычислительный конвейер (compute pipeline), обработку изображений (генерация мипмапов и свёрточные фильтры написаны; конвертация кубических карт и префильтрация - нет), процедурную геометрию и главу о нейросетях, пока существующую только в виде заглушки. Advanced Techniques состоит в основном из заглушек - написаны главы про RAII, headless-контексты и замеры времени, тогда как deferred shading, render bundles, сглаживание (multi-sampling), графы сцены, карты теней, тесселяция, instanced drawing и трассировка лучей помечены как TODO. В приложения вынесены темы, не укладывающиеся в основной маршрут: сборка под веб, использование SDL вместо стандартного управления окнами, расширения для обоих бэкендов, отладка, глава о модели памяти и два эссе - Teaching native graphics in 2023 и Keep in mind lower-end devices.

Как устроено руководство

В основе структуры лежат три решения.

На каждой странице в начале и в конце есть ссылка Resulting code, так что подключиться к чтению можно с любой главы, не набирая код предыдущих. В вводной части руководства так и советуют поступить тем, кто хочет пропустить шаблонный код: для готового просмотрщика 3D-сеток с базовым управлением рекомендуется сразу переходить к концу главы Lighting control.

Блоки кода снабжены двумя вкладками: "With webgpu.hpp" и "Vanilla webgpu.h". Первая показывает тонкую обёртку для C++, вторая - чистое API на C; переключение вкладки меняет код сразу во всём руководстве. Репозиторий Resulting code для чистого C несколько отстаёт, но сами примеры кода в тексте поддерживаются в актуальном состоянии, поэтому путь на чистом C вполне рабочий, если нет желания использовать C++-обёртку.

У названий глав стоят индикаторы готовности - полезная деталь с учётом того, что руководство не закончено, а сам стандарт WebGPU продолжает меняться. 🟢 означает, что глава соответствует свежему стабильному релизу WebGPU-distribution (v0.2.0); 🟡 - материал читаем, но написан под более старую версию WebGPU; 🟠 - глава не завершена; 🔴 - пока только заголовок без текста. Большая часть Getting Started и ранних глав по рендерингу помечены зелёным, большинство глав по 3D и текстурированию - жёлтым, а продвинутый раздел почти целиком красный. Автор также предупреждает, что нужно использовать ровно ту версию webgpu/, которая идёт в комплекте с кодом главы, и не смешивать версии; кроме того, спрятан раздел Next с черновиком будущего переписанного варианта, явно нестабильным.

Выбор бэкенда задаётся на этапе сборки, а не отдельной главой: флаг -DWEBGPU_BACKEND=WGPU выбирает wgpu-native (вариант по умолчанию), а -DWEBGPU_BACKEND=DAWN переключает на Dawn. Оба бэкенда подробно рассматриваются в приложении по расширениям.

Место среди других ресурсов

WebGPU как нативный графический API представляет собой современную половину выбора, который описывает lisyarus для авторов собственных движков: 3D-движку нужны полигональные сетки, аффинные преобразования, освещение и скелетная анимация, что на практике означает использование OpenGL, Vulkan, Direct3D или WebGPU на нижнем уровне. Его собственный движок psemek работает поверх OpenGL 3.3, а теперь и WebGPU. В сравнении с learn-opengl, который обучает core-profile OpenGL и остаётся более старым и полным ресурсом, LearnWebGPU даёт возможность бесплатно получить сборку под браузер (см. приложение Building for the Web и webassembly), но ценой необходимости следить за меняющимся стандартом и читать руководство, прямо предупреждающее о незавершённости в каждом заголовке.