О руководстве
Кроссплатформенная нативная графика нового поколения на Rust
Здесь вы сможете изучить работу с графическими API, начиная с нуля и заканчивая продвинутыми концепциями вроде вычислений на видеокарте и физически корректной отрисовки сцен.
Руководство сосредотачивается на применении нового стандарта WebGPU за пределами браузеров, с помощью реализующей его библиотеки wgpu и языка программирования Rust.
Почему выбраны именно WebGPU, wgpu и Rust — читайте в приложении.
Для кого это руководство
Данное руководство написано для уверенных Rust-разработчиков, не имеющих опыта в работе с 2D и 3D графикой. Предполагается, что читатель умеет читать и писать код на Rust, но не имеет никаких познаний в компьютерной графике.
Компьютерная графика тесно связана с математикой, но это руководство не требует значительных познаний в линейной алгебре или тригонометрии. Достаточно понимания, что такое векторы, матрицы, синусы и косинусы — знаний уровня школы, возможно, 1-го курса технического вуза.
Что мы построим
Мы начнём с создания окна и рендера первого треугольника, пройдём через вершинные и индексные буферы, текстуры, камеры, освещение, и дойдём до продвинутых техник: постпроцессинг, вычисления на GPU, физически корректный рендер (PBR).
Как устроены примеры
Первые два главы показывают полный код — создание окна и инициализацию wgpu. Начиная с главы про первый треугольник, весь бойлерплейт вынесен в учебный каркас (framework), чтобы каждая следующая глава фокусировалась только на своей теме.
Другие ресурсы
Официальные примеры wgpu - набор примеров использования в репозитории wgpu, покрывающий много типовых задач, от освещения до сглаживания.
Документация wgpu - отличная официальная документация библиотеки wgpu, содержащая, кроме всего, рекомендации по использованию и описание потенциальных проблем и их решений.
wgpu wiki - официальная вики от авторов библиотеки. Там не так много информации, но можно найти очень специфичные и полезные вещи, например как отлаживать программы на устройствах Apple через XCode или описание известных багов графических драйверов и как с ними бороться.
WebGPU Fundamentals - руководство по использованию WebGPU в браузере на языке JavaScript. Поскольку wgpu реализует стандарт WebGPU, информация оттуда является корректной и для него, а примеры кода часто переносятся на Rust с минимальными изменениями.
WebGPU Samples - набор мелких демо возможностей WebGPU на JavaScript в браузере. Можно найти реализации популярных алгоритмов, например генерацию ландшафта марширующими кубами на GPU.
WebGPU C++ Guide - руководство по использованию WebGPU за пределами браузера, использующее язык C++. Немного освещает wgpu в режиме совместимости с C, но в целом сфокусировано больше на Dawn и самодельной обертке над API от автора руководства, что усложняет переносимость кода. Тем не менее можно почерпнуть полезную информацию, даже если примеры кода переусложнены из-за недостатков используемого языка.
Learn Wgpu - руководство по использованию wgpu на языке Rust. Однако в нем используются неоптимальные зависимости, и само руководство больше ориентировано на разработчиков с опытом компьютерной графики, поскольку множество концепций упущены или объяснены очень бегло. Тем не менее отличается наличием совместимости с браузерной средой и интерактивными примерами прямо на сайте.
Learn OpenGL - классическое, очень популярное руководство. Несмотря на то, что сам OpenGL сильно устарел и не рекомендуется для новых разработок, данный ресурс остается самым подробным руководством для новичков в графике и объясняет на примерах типовые проблемы и решения. Стоит внимания для понимания общих концепций CG вне зависимости от используемого API. Послужило источником вдохновения для создания данного руководства.
Стандарт WebGPU - источник самой актуальной информации по API. Следует помнить, что реализации, такие как Dawn и wgpu, не всегда поддерживают всё, что имеется в стандарте.
Стандарт WGSL - источник самой актуальной информации по языку шейдеров WebGPU. Следует помнить, что компиляторы шейдеров, такие как Tint и Naga, не всегда поддерживают всё, что имеется в стандарте.
Tour of WGSL - Интерактивный курс по языку шейдеров WebGPU от Google.
WebGPU Unleashed - практическое руководство по WebGPU в браузерной среде на JavaScript.
Learn WebGL - руководство по WebGL в браузерной среде на JavaScript.
WebGPU with C# 2024 - отличный плейлист на YouTube, где автор учит созданию игры на wgpu, с нуля и до полноценного FPS, с игровой физикой и прочим. Написано на C#, однако используются привязки к wgpu через Silk.Net. Благодаря этому также легко переносится и на Rust.