Русский
Русский
English
Статистика
Реклама

Перевод vulkan-tutorial. Урок 1.1 Вступление


В связи с тем, что у меня не так много времени для ресерча каких-то новых штук и написания статей о них, я решил перевести серию уроков по Vulkan. Надеюсь, что мои переводы будут кому-то полезны и не очень плохого качества. Для начала обучения прошу под кат.


Автор оригинала дал свое согласие на перевод. Так же, когда я доперевожу все статьи и у меня будет время отформатировать их для github, он добавит русский перевод на свой сайт.


В этой части не будет ничего технического, так как я решил сохранить структуру оригинала. Будет рассказано немного о Vulkan, структуре уроков, ссылки на книги и тд.


Содержание

Часть 1. Вступление


  1. Общее вступление
  2. Краткий обзор
  3. Настройка среды разработки

Часть 2. Первый треугольник


  1. Базовая структура
  2. Hello window
  3. Базовый графический пайплайн
  4. Отрисовка
  5. Создание своего Swap Chain

Часть 3. Vertex buffer


  1. Введение
  2. Создание Vertex Buffer
  3. Staging Buffer (промежуточный буфер)
  4. Index Buffer

Часть 4. Uniform Buffer


  1. Layout и Buffer
  2. Pool и Set

Часть 5. Текстуры


  1. Загрузка изображений
  2. Image View и Image Sampler
  3. Комбенированние Image Sampler

Часть 6. Буфер глубины
Часть 7. 3D Модели
Часть 8. Mipmaps
Часть 9. Multisampling


Описание


В этих уроках вы научитесь основам Vulkan графичекого и вычеслительного API. Vulkan это новый API созданный компанией Khronos group (создатели OpenGL), он предоставляет улучшенную абстракцию для программирования графики на современных видеокартах. Новый интерфейс поможет лучше описать как ваше приложение будет работать с графическим процессором, что потенциально может увеличить производительность и уменьшить неожиданные ситуации связанные с поведением драйвера по сравнению с существующими API, такими как OpenGL и Direct3D. Идеи, лежащие в основе Vulkan, аналогичны идеям Direct3D 12 и Metal, но Vulkan имеет одно неоспаримое преимущество полную кросс-платформенность, что позволяет разрабоатывать приложение одновременно под Linux, Windows и Android.


В замен, вам прийдеться работать с менее абстрактным и более сложным API. Каждая мелочь связаная с API, будет настраиваться вами с нуля, включая создание начального буффера кадров и управление памятью для обьектов (буфферы, текстуры и тд.). Драйвер будет меньше вас ограничивать, а это означает, что вам придется проделать больше работы, чтобы обеспечить правильное поведение вашего приложения.


Вывод Vulkan не для всех. Он создан для программистов, которым нужно больше производительности, не смотря на более сложный и кропотливый процесс написания приложения. Если вы заинтерисованы разработкой игр больше, чем программированием компьютерной графики, то вы можете и дальше использовать OpenGL или DirectX, в любом случае они по-прежнему поддерживаются и не будут вытесненны Vulkan(ом) в ближайшее время. Как альтернативу, можно использовать какой-то игровой движок (Unreal Engine, Unity и тд.), который будет использовать Vulkan, но предоставит вам свою высокоуровневую абстракцию над базовым API.


Теперь, давайте рассмотрим что вам надо для изучения Vulkan:


  • Видеокарта и драйвера совместимые с Vulkan (NVIDIA, AMD, Intel)
  • Знание C++ (понимание RAII, основы языка)
  • Компилятор с поддержкой C++ 17 (Visual Studio 2017+, GCC 7+, Or Clang 5+)
  • Опыт работы с 3D графикой

Рекомендую обновить драйвера на видеокарту.

В этой серии уроков от вас не требуется знания OpenGL или DirectX, но предполагается, что вы знакомы с основами 3D графики. Например, тут не будет обьясняться математика лежащая в основе перспективной проекции. Для понимания основ компьютерной графики рекомендую прочесть эту книгу. Другие хорошие ресурсы по графике:



Мы будем ипользовать С++, но вы так же можете писать и на чистом С. Если будете использовать С, вам придется использовать другую библиотеку для линейной алгебры, так же самостоятельно структурировать код, так как мы будем использовать классы для структурирования кода и RAII для управления времинем жизни ресуров. Так же существует альтернативная версия руководства для разработчиков на Rust.


Для того, что бы рзработчикам на других языках было проще понять, как работать с базовым API, мы будем использовать С версию Vulkan API. Однако, вы можете использовать C++ API, который немного упростит жизнь и поможет избежать некоторых ошибок.



Посмотри на котика и расслабься :)

E-Book


Так же вы можете скачать это руководство в формате електронной книги (нет ру]есского):



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


Для начала мы разберемся с тем как работает Vulkan и по шагам разберем, что нам нужно для отрисовки нашего первого треугольника на экране. Мы будем продвигаться маленькими шажечками, смысл которых поначалу вбудет вам не очень понятен, но потом вы поймете их роль когда увидите картину в целом. Следующим шагом будет настройка среды разработки Vulkan SDK, GLM для линейно алгебры и GLFW для создания окна. В уроках будет показано, как настроить все под Windows + Visual Studio и Ubuntu Linux + GCC.


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


  • Введение. Описание концепции и ее цели.
  • Разберём все нужные нам функций API для использование в нашей программе.
  • Абстрагируем вызовы API внутри наших функций.

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


Как упоминалось ранее, Vulkan API достаточно низкоуровневый с множеством настроек, что даёт ваммаксимальный контроль работы графического конвеера. Это вынуждает нас повторно выполнять большое количество шагов по многу раз. Что бы этого избежать, мы будем стараться выносить такой функционал в отдельные вспомогательные функции.


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


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


На сайте с оригиналом статьи, есть раздел коментариев под основным блоком.

Vulkan это все еще новый API и best practices еще не внедрены. В случае, если у вас появились какие-то советы, отзывы об учебнике или самом сайте, не стесняйтесь и оставляйте ваши запросы или исправления (можно пулл-реквесы на GitHub). Так же можно следить за обновлениями руководства в репозитории.


После выполнения ритуала с рисованием треугольника, мы начнем расширять нашу программу. Будем добавлять текстуры, модели и тд. Если у вас уже был опыт графического программирования, то вы знаете, что пред тем как на экране что-то появится нужно выполнить много шагов инициализации, создания буферов и тд. В Vulkan этих шагов напорядок больше, но не волнуйтесь, каждый шаг легко понять и вы поймете, что не один из них не является лишним. Могу обрадосвать, переход от скучного треугольника до отрисовки полноценной 3D модели с текстурами, не потребует такого большого количества шагов и усилий от нас.


Как правило, рисование треугольника в программировании графики, это как написание Hello world! при изучении языка.

Если вы столкнетесь с какими-либо проблемами, следуя руководству, сначала проверьте FAQ, чтобы увидеть, есть ли там ваша проблема и ее решение. Если решение так и не было найдено, не стесняйтесь обращаться за помощью в разделе комментариев в главе.


От переводчика:
Ребят, кому интересен данный цикл статей, поставте лайк или отпишите в комменты, что бы я знал нужно оно или нет. Если вы заинтерисованы, то постараюсь быстро перевести следющую статью.
Так же буду очень рад, если вы будете сообщать мне о всех ошибках, опечатках и предложениях по улучшению переводов. Перевод и написание статьи заняло у меня около дня и никто кроме меня ее не проверял так что могут встречаться ошибки и опечатки.

Источник: habr.com
К списку статей
Опубликовано: 14.10.2020 20:13:37
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

C++

Cgi (графика)

Программирование

Работа с 3d-графикой

Разработка игр

Glfw

Vulkan

3d graphics

Gamedev

Tutorial

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru