В августе этого года, после полутора лет напряженной работы, наконец-то вышла наша третья книга (про первую и вторую уже были посты на Хабре) ориентированная на разработку игр: 3D Graphics Rendering Cookbook: A comprehensive guide to exploring rendering algorithms in modern OpenGL and Vulkan.
Книга рассказывает как начать писать свой 3D движок «с нуля» на C++ используя OpenGL 4.6 и Vulkan 1.2, и во многом продолжает стиль первых двух книг. Книга построена в виде рецептов, которые последовательно добавляют новые фичи к коду и показывают как перейти от цветного треугольника к вот такой картинке:
Затрагиваются темы храниения геометрии и материалов сцены, PBR, glTF2, SSAO, HDR, OIT, shadow mapping, GPU frustum culling, ленивая загрузка текстур, интеграция физического движка с графикой. Большинство примеров имеют параллельные реализации на OpenGL 4.6 и Vulkan 1.2. Используются только open-source сторонние библиотеки, при этом показано как своими руками сделать многие вещи: сжатие текстур в ETC2, вычисление irradiance maps и LUTов для BRDF, конвертация сцены и текстур из 3D форматов передачи данных в форматы пригодные для быстрой загрузки движком и много чего другого.
Как всегда, никаких сторонних готовых движков не используется — только С++ и open-source библиотеки, только хардкор. Основной фокус на практическую реализацию, а не на теорию (но по тексту даны ссылки на соответствующие статьи и презентации, чтобы прокачать матчасть).
Книга ориентирована на начинающих и intermediate разработчиков OpenGL, которые хотят перейти на OpenGL 4.6 или сразу на Vulkan.
P.S. Не стоит покупать эту книгу как вашу самую первую книгу по Vulkan. Пусть она будет как минимум вторая :)
К книге прилагаются исходники всех проектов по главам. Последняя версия доступна на GitHub.
Комментарии (8)
holydel
10.09.2021 18:02+1@CorporateShark, подскажи по книге. Правильно ли я понимаю, что она скорее про в целом трехмерную графику в движке, чем про какие-то рецепты конкретного ГАПИ? Есть ли там что-то про фреймграфы, многопоточное заполнение командных буферов, про менеджмент пайплайнов (пайплайн-кеш, наследование) - те вещи, без которых не обходится движок, при использовании современных, нихкоуровневых ГАПИ типа вулкана, дх12, метала ?
CorporateShark Автор
10.09.2021 18:11+1Книга все-таки ориентирована на более начинающую аудиторию. К концу книги получается небольшой фреймворк, на основе которого уже можно было бы сделать фреймграфы и многопоточные штуки... как раз следующий логичный шаг после 10й главы был бы механизм автоматической расстановки барьеров... но это тема для следующей книги.
Книга не является справочником по ГАПИ, а показывает как можно решать некоторые практические задачи используя подмножетсва ГЛ46 и Вулкана. Есть материал по построению конвейера для контента, который очень редко можно найти в подобных книгах. Но опять же, ориентировано больше на разработчиков, которые еще только осваивают 3Д графику.
Например, для простоты реализации во всех Вулкан-демках мы довольно агрессивно использовали vkDeviceWaitIdle() для синхронизации и не использовали никаких аллокаторов.alexraag
15.09.2021 01:52Подскажите, пожалуйста, что можно почитать про то, что говорит @holydel
CorporateShark Автор
16.09.2021 15:34+1Собирать по крупицам из презентаций вендоров и материалов GDC, SIGGRAPH итп. Ну или ждать нашу следующую книгу.
sputnic
Посоветуйте первую книжку по вулкану пожалуйста :)
CorporateShark Автор
https://vulkan-tutorial.com/ или уж хотя бы Vulkan Cookbook.
holydel
Классика: https://www.amazon.com/Vulkan-Programming-Guide-Official-Learning/dp/0134464540&ved=2ahUKEwjX5fmc0_TyAhVMiYsKHV6fBZMQFnoECBgQAQ&usg=AOvVaw1DON4g_ZywHUf8kGZaDYDB
Есть перевод на русский, но его ругали. Сам перевод не читал.
sputnic
как то там отзывы на амазоне не очень, говорят что по факту просто сборник АПИ функций