Skip to content

О руководстве

Кроссплатформенная нативная графика нового поколения на Rust

Здесь вы сможете изучить работу с графическими API, начиная с нуля и заканчивая продвинутыми концепциями вроде вычислений на видеокарте и физически корректной отрисовки сцен.

Руководство сосредотачивается на применении нового стандарта WebGPU за пределами браузеров, с помощью реализующей его библиотеки wgpu и языка программирования Rust.

Почему выбраны именно WebGPU, wgpu и Rust — читайте в приложении.

Для кого это руководство

Данное руководство написано для уверенных Rust-разработчиков, не имеющих опыта в работе с 2D и 3D графикой. Предполагается, что читатель умеет читать и писать код на Rust, но не имеет никаких познаний в компьютерной графике.

Компьютерная графика тесно связана с математикой, но это руководство не требует значительных познаний в линейной алгебре или тригонометрии. Достаточно понимания, что такое векторы, матрицы, синусы и косинусы — знаний уровня школы, возможно, 1-го курса технического вуза.

Что мы построим

Мы начнём с создания окна и первого треугольника, пройдём через вершинные и индексные буферы, текстуры, камеры, освещение, и дойдём до продвинутых техник: постпроцессинг, вычисления на GPU, физически корректный рендер (PBR).

Начать обучение →

Как устроены примеры

Первые три главы показывают полный код — создание окна, инициализацию wgpu и отрисовку треугольника вручную. Начиная с главы про первый треугольник, весь winit/wgpu boilerplate вынесен в учебный каркас (framework), чтобы каждая следующая глава фокусировалась только на своей теме. Каркас не скрывает типы wgpu — все поля публичны.

Версия

Примеры кода используют wgpu 29.0 и Rust 2024 edition.

Структура руководства

Руководство разбито на секции, дополняющие друг друга. Мы начинаем от базовых вещей и наращиваем функциональность в соответствии с различными решениями, принятыми в компьютерной графике. Руководство будет содержать как подробные описания, так и блоки кода, диаграммы и математические формулы, чтобы объяснить графические концепции даже полным новичкам в мире CG.

Другие ресурсы

  • Официальные примеры wgpu - набор примеров использования в репозитории wgpu, покрывающий много типовых задач, от освещения до сглаживания.

  • Документация wgpu - отличная официальная документация библиотеки wgpu, содержащая, кроме всего, рекомендации по использованию и описание потенциальных проблем и их решений.

  • WebGPU Fundamentals - руководство по использованию WebGPU в браузере на языке JavaScript. Поскольку wgpu реализует стандарт WebGPU, информация оттуда является корректной и для него, а примеры кода часто переносятся на Rust с минимальными изменениями.

  • WebGPU C++ Guide - руководство по использованию WebGPU за пределами браузера, использующее язык C++. Немного освещает wgpu в режиме совместимости с C, но в целом сфокусировано больше на Dawn и самодельной обертке от автора руководства, что усложняет переносимость кода. Тем не менее можно почерпнуть полезную информацию, даже если примеры кода переусложнены из-за недостатков используемого языка.

  • 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.

Последнее обновление:

Опубликовано под лицензией CC-BY-4.0