Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Шейдеры и эффекты в Unity. Книга рецептов

Покупка
Артикул: 817022.01.99
Доступ онлайн
439 ₽
В корзину
В книге раскрываются секреты разработки шейдеров в Unity — самом популярном в мире мультиплатформенном инструменте для разработки двух- и трёхмерных игр и приложений. Описываются базовые модели освещения, создание эффектов с помощью текстур, анимация моделей в реальном времени, настройка шейдеров для мобильных устройств, а также использование постэффектов в гейм-плее. Издание предназначено для Unity-разработчиков, стремящихся использовать максимум возможностей платформы для создания своих собственных шедевров!
Ламмерс, К. Шейдеры и эффекты в Unity. Книга рецептов : практическое руководство / К. Ламмерс ; пер. с англ. Е. А. Шапочкина. — 2-е изд. - Москва : ДМК Пресс, 2023. - 275 с. - ISBN 978-5-89818-572-5. - Текст : электронный. - URL: https://znanium.com/catalog/product/2107933 (дата обращения: 12.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Кенни Ламмерс

Шейдеры и эффекты 
в Unity

Книга рецептов

Как с помощью шейдеров и постэффектов  
добиться потрясающей картинки в проектах на Unity
Unity Shaders and          
Effects Cookbook

Discover how to make your Unity  
projects look stunning with Shaders 
and screen effects

Kenny Lammers

BIRMINGHAM - MUMBAI
Шейдеры и эффекты в Unity 
Книга рецептов

Как с помощью шейдеров и постэффектов 
добиться потрясающей картинки  
в проектах на Unity

Кенни Ламмерс

Москва, 2023

2-е издание, электронное
УДК 004.4’2Unity3D
ББК 32.972
Л21

Книга выпущена при поддержке Mail.Ru Group

Л21
Ламмерс, Кенни.
Шейдеры и эффекты в Unity. Книга рецептов / К. Ламмерс ; пер. с англ. 
Е. А. Шапочкина. — 2-е изд., эл. — 1 файл pdf : 275 с. — Москва : ДМК Пресс, 
2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 
4.5 ; экран 10". — Текст : электронный.
ISBN 978-5-89818-572-5

В книге раскрываются секреты разработки шейдеров в Unity — самом популярном 
в мире мультиплатформенном инструменте для разработки двух- и трёхмерных 
игр и приложений. Описываются базовые модели освещения, создание эффектов с 
помощью текстур, анимация моделей в реальном времени, настройка шейдеров для 
мобильных устройств, а также использование постэффектов в гейм-плее.
Издание предназначено для Unity-разработчиков, стремящихся использовать 
максимум возможностей платформы для создания своих собственных шедевров!.

УДК 004.4’2Unity3D 
ББК 32.972

Электронное издание на основе печатного издания: Шейдеры и эффекты в Unity. Книга рецептов / 
К. Ламмерс ; пер. с англ. Е. А. Шапочкина. — Москва : ДМК Пресс, 2016. — 274 с. — 
ISBN 978-5-97060-213-3. — Текст : непосредственный.

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

В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами 
защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации.


ISBN 978-5-89818-572-5
© 2013 Packt Publishing
©  Оформление, перевод на русский язык 
ДМК Пресс
ОГЛАВЛЕНИЕ

Об авторе ..........................................................8
О рецензентах....................................................9
Предисловие к русскому изданию ....................... 10
Предисловие ................................................... 11

Что рассматривается в этой книге ................................................. 11
Что потребуется при чтении этой книги ......................................... 13
Для кого эта книга ......................................................................... 14
Условные соглашения ................................................................... 14
Обратная связь с читателями ........................................................ 15
Поддержка клиентов ..................................................................... 15

Глава 1. Диффузный шейдинг ............................. 17

Введение ...................................................................................... 17
Создаём простой поверхностный шейдер  .................................... 18
Добавление свойств поверхностному шейдеру ............................. 22
Использование свойств в поверхностном шейдере ....................... 25
Делаем собственную модель диффузного освещения .................. 29
Модель освещения Half Lambert .................................................... 32
Использование текстуры для контроля над диффузным  
шейдингом .................................................................................... 34
Имитация эффекта BRDF с помощью 2D-текстуры ........................ 36

Глава 2. Создание эффектов с помощью текстур ... 41

Введение ...................................................................................... 41
Прокрутка текстур с помощью изменения UV-координат ............... 42
Анимирование спрайт-листов ....................................................... 45
Упаковка и блендинг текстур ......................................................... 51
Использование карты нормалей .................................................... 56
Создание процедурных текстур в редакторе Unity ......................... 60
Эффект уровней Photoshop ........................................................... 66

Глава 3. Пусть ваши игры засияют отражённым 
светом ............................................................ 71

Введение ...................................................................................... 71
Использование встроенной в Unity Specular модели ...................... 72
Создаём модель освещения Phong ............................................... 74
Оглавление

Создание модели освещения BlinnPhong ...................................... 79
Маскирование глянцевых бликов с помощью текстур .................... 81
Металлические и мягкие блики ..................................................... 87
Создание анизотропных бликов .................................................... 93

Глава 4. Добавим отражения в ваш мир .............. 100

Создание кубических текстур в Unity ........................................... 100
Простое отражение с использованием кубической текстуры ....... 107
Маскирование отражений ........................................................... 110
Карты нормалей и отражения ...................................................... 114
Отражения по Френелю .............................................................. 119
Создание простой динамической системы кубических текстур ... 123

Глава 5. Модели освещения ............................. 128

Введение .................................................................................... 128
Модель освещения Lit Sphere ...................................................... 128
Модель освещения Diffuse Convolution ........................................ 135
Создание модели освещения автомобильной краски .................. 141
Шейдер кожи .............................................................................. 145
Шейдер ткани ............................................................................. 154

Глава 6. Прозрачность ..................................... 160

Введение .................................................................................... 160
Создание прозрачности с помощью параметра alpha .................. 160
Прозрачный cutoff-шейдер .......................................................... 163
Сортировка объектов с помощью очередей рендеринга.............. 165
GUI и прозрачность ..................................................................... 169

Глава 7. Волшебные возможности вершин .......... 177

Введение .................................................................................... 177
Получение цвета вершины в поверхностном шейдере ................. 178
Анимация вершин в поверхностном шейдере .............................. 182
Использование цветов вершин для ландшафта ........................... 185

Глава 8. Настройка шейдеров для мобильных 
приложений ................................................... 190

Введение .................................................................................... 190
Что значит дешевый шейдер? ..................................................... 191
Профайлинг шейдеров ................................................................ 198
Изменение шейдеров для мобильных ......................................... 204

Глава 9. Делаем наш шейдерный мир 
модульным с помощью CgInclude ...................... 209

Введение .................................................................................... 209
Оглавление

Встроенные в Unity CgInclude-файлы .......................................... 210
Создание CgInclude-файла для хранения моделей освещения .... 213
Использование #define в шейдерах ............................................. 217

Глава 10. Создание экранных эффектов в Unity 
с помощью рендер-текстур .............................. 221

Введение .................................................................................... 221
Создание скриптов для полноэкранных эффектов ...................... 222
Корректировка яркости, насыщенности и контраста 
с помощью полноэкранных эффектов  ......................................... 232
Создание основных режимов блендинга с использованием 
полноэкранных эффектов ........................................................... 238
Реализация режима блендинга Overlay с использованием 
полноэкранных эффектов .....................................................................245

Глава 11. Гейм-плей и экранные эффекты ............ 249

Введение .................................................................................... 249
Создание эффекта старого фильма ............................................ 249
Создание эффекта ночного видения ........................................... 260

Предметный указатель .................................... 271
ОБ АВТОРЕ

Кенни Ламмерс работает в индустрии игр уже 13 лет. Он работал на 
такие компании, как Microsoft, Activision и Surreal Software. В данный 
момент он работает с двумя компаниями. В первой – Creative 
TD – он занимается консультированием по Unity3D и созданием материалов 
для таких компаний, как IGT, Microsoft, Janus Research и 
Allegorithmic. Второй компанией – Ozone Interactive – он руководит 
совместно со своим бизнес-партнёром Ноа Каарбо (Noah Kaarbo). 
Ozone Interactive специализируется на создании интерактивных приложений 
и высококачественных дизайнов с использованием Unity3D 
для таких компаний как Amazon, E-line Media, Microsoft и Sucker 
Punch games. Во время его работы в индустрии игр он создавал персонажей 
в Zbrush и Maya, писал шейдеры и постэффекты, а так же 
разрабатывал игры полностью в Unity3D, используя C#. В данный 
момент он работает над несколькими играми и разрабатывает набор 
инструментов для облегчения процесса создания игр.

Я бы хотел высказать благодарность всем её заслуживающим, но 
тогда на это ушла бы целая глава. Перво-наперво я определённо 
хочу поблагодарить мою маму за то, что она всегда говорила мне, 
что моя работа должна вести к моей мечте, и за то, что она всегда 
была мне поддержкой. Я бы хотел поблагодарить моего партнёра 
по бизнесу Ноа Каарбо за то, что был мне другом и поддержкой на 
протяжении написания этой книги. Я хочу поблагодарить всех, с кем 
мне довелось работать, но, что более важно, – я хочу поблагодарить 
тех, кто побуждал меня всегда совершенствовать мои навыки и тем 
самым открыл для меня мир этой индустрии. Эти люди – Бэн Кам-
мерано (Ben Cammerano) из MGS, Пол Амер (Paul Amer) из MGS, 
Филлипо Костанцо (Fillipo Costanzo) из 5D Institute, Алессандро Тен-
то (Alessandro Tento) из Lakshya, Джеймс Роджерс (James Rogers) 
из MGS и Тони Гарсия (Tony Garcia) из Unity Technologies. Я бы не 
добился того, чего добился, без кого-либо из этих людей, и они заслуживают 
моего самого сильного почтения!
О РЕЦЕНЗЕНТАХ

Винсент Лим (Vincent Lim) закончил The One Academy по специальности 
цифровая анимация и разработка игр. Сразу же после завершения 
учёбы он присоединился к Big Ant Studio, где он преобрёл 
массу бесценного опыта в игровой индустрии. Проведя несколько 
лет в компании, Винсент многому научился, начиная от низкопо-
логонального моделирования и заканчивая укладкой текстур для 
создания ландшафта, а также – немного программированию и написанию 
MEL-скриптов. Работая над разнообразными задачами в Big 
Ant Studio, Винсент накопил знания об игровых движках, о тонкостях 
работы разных шейдеров и о пайплайне разработки игр. В компании 
он занимался оптимизацией пайплайна разработки, создавая 
с помощью MEL-скриптов инструменты для художников, которые 
упрощали те или иные задачи на пути 3D-модели, – от заготовки в 
3D-редакторе до модели в игре. Получив достаточный базис знаний 
в Big Ant Studio, Винсент продолжил изучение игровых механик и 
движков. Это привело его к Unity, навыки работы с которым он продолжает 
совершенствовать и по сей день.
Кристиан 'XeviaN' Мененгхини (Christian 'XeviaN' Meneghini) в 
молодости был обладателем и поклонником Sinclair ZX Spectrum. 
Он начал своё знакомство с миром игровой индустрии со спрайтов, 
жёстко закодированных с помощью Бейсика и Ассемблера. По 
прошест вии времени ему довелось работать с такими замечательными 
технологиями, как C64, культовым Amiga и всей линейкой процессоров 
PC, при этом работая с видеокартами от Hercules и CGA 
от первых 3D-ускорителей до современных. При его специализации 
на программировании графики и оптимизации производительности, 
ему очень нравилось заниматься рендерингом и принимать участие в 
демосцене. Кристиан в своё свободное время сочиняет музыку.
После нескольких лет работы по ночам вместе с друзьями и коллегами, 
изучения технической документации, написания движков и работы 
на другие компании Кристиан в 2011 году совместно со своими 
друзьями Марко Ди Тимотео (Marco Di Timoteo) и Лукой Марчетти 
(Luca Marchetti) основал небольшую студию, которую они назвали 
STUDIO EVIL. Их первым продуктом стала игра Syder Arcade – ретро-
шутер с 3D-графикой, рассчитанный на PC и MAC, а позднее – 
портированный под iOS, Android и OUYA. 
ПРЕДИСЛОВИЕ К 
РУССКОМУ ИЗДАНИЮ

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

Искренне ваши,
Unity Technologies в России
russia@unity3d.com
Роман Менякин,
Наталья Свиридова,
Йоана Кодите,
Олег Придюк
ПРЕДИСЛОВИЕ

Мы приветствуем вас на страницах книги «Шейдеры и эффекты в 
Unity». Эта книга поможет вам освоиться с созданием шейдеров и 
постэффектов в Unity3D. Вы начнёте ваше путешествие по страницам 
этой книги с самого начала, с создания наиболее базовых шей-
деров и получения представления о структуре шейдерного кода. Эти 
базовые знания пригодятся вам в последующих главах, в которых вы 
будете создавать шейдеры, имитирующие людскую кожу, шейдеры, 
обрабатывающие динамические отражения, а также, создавать пост-
эффекты, такие как эффект ночного видения.
К концу каждой главы, у вас сформируется новый набор навыков, 
с помощью которых, вы сможете повысить качество ваших шейдеров, 
а также, сделать более эффективным процесс их написания. Эти главы 
были сформированные таким образом, что вы можете перейти к 
любой секции и сразу овладеть любым требуемым навыком, развив 
его от уровня новичка до эксперта. А, если процесс написания шей-
деров для вас в новинку, вы можете читать главы последовательно, 
одну за другой, постепенно приобретая необходимые знания. В любом 
случае, вы познакомитесь с приёмами, которые используются в 
большинстве современных игр. 
После того, как вы закончите работу с этой книгой, у вас будет 
набор шейдеров, который вы сможете использовать в ваших играх, 
сделанных с помощью Unity3D, а также, у вас появится понимание 
того, как и что нужно будет добавлять к ним, чтобы получать новые 
эффекты и удовлетворять запросам производительности. Так что, давайте, 
перейдём к делу.

Что рассматривается в этой 
книге

Глава 1 «Диффузный шейдинг» содержит азы написания шейдеров, в 
этой главе объясняется структура шейдеров в Unity3D. Далее в этой 
главе данные знания применяются для создания диффузной модели 
Предисловие

освещения по умолчанию, а также приводятся тонкости и приёмы, 
используемые в игровой индустрии для создания собственных моделей 
освещения.
Глава 2 «Создание эффектов с помощью текстур» описывает использование 
текстур для создания различных эффектов. В этой главе 
вы узнаете, как можно анимировать спрайт-листы с помощью шейде-
ра, а также, как использовать различные каналы текстуры для повышения 
эффективности шейдеров. К концу этой главы, ваши навыки 
использования текстур будут достаточны для создания ваших собственных 
эффектов.
Глава 3 «Пусть ваши игры засияют отражённым светом» рассказывает 
всё, что вам может потребоваться, о создании наиболее распространённых 
типов бликового отражения – Blinn и Phong. Вы узнаете, 
как можно применить эти шейдерные эффекты для создания маскированного 
отражённого освещения, металлического отражения, а 
так же, узнаете о создании анизотропного отражённого освещения. 
К концу этой главы, вы будете иметь достаточно знаний, для того, 
чтобы реализовывать свои собственные specular-эффекты.
Глава 4 «Добавим отражения в ваш мир» рассказывает о применении 
одного из наиболее распространённых эффектов в современных 
играх, с помощью которого вы сможете учитывать в ваших шейдерах 
приёмы создания отражений. Эта глава научит вас всему – начиная 
с азов организации отражения в шейдерах Unity3D и заканчивая созданием 
вашей собственной системы динамического отражения с помощью 
C#.
Глава 5 «Модели освещения» рассказывает о более сложных шей-
дерах. Вы узнаете, как создавать свои собственные модели освещения, 
использование которых позволит вам сымитировать произвольный 
тип поверхности. Каждый рецепт демонстрирует применение различных 
техник для достижения различных задач, каждая из которых приведёт 
к развитию ваших навыков написания шейдеров. К концу этой 
главы, вы создадите ваш собственный шейдер кожи, узнаете об освещении 
Lit Sphere, и напишете свой шейдер автомобильной краски.
Глава 6 «Прозрачность» продемонстрирует то, что на некотором 
этапе производства игр вам неизбежно потребуется использовать 
прозрачность. Практически любая игра, так или иначе, задействует 
прозрачность для таких объектов, как элементы пользовательского 
интерфейса, опавшая листва, объекты-трафареты, и т. д. В этой главе 
вы узнаете, как работать с прозрачностью в Unity3D, и как можно 
уладить трудные моменты, возникающие при этом.
Предисловие

Глава 7 «Волшебные возможности вершин» рассказывает о том, 

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

Глава 8 «Настройка шейдеров для мобильных приложений» по-

священа способам оптимизации шейдеров в Unity, с помощью встроенных 
типов и макросов. Так как, эта задача становится особенно важной 
при работе шейдеров для мобильных платформ.

Глава 9 «Делаем наш шейдерный мир модульным с помощью 

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

Глава 10 «Создание экранных эффектов в Unity с помощью рен-

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

Глава 11 «Гейм-плей и экранные эффекты» углубляет ваши знания 

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

Что потребуется при чтении 
этой книги

Для того чтобы вы смогли выполнить рецепты, приводимые в этой 
книге, вам понадобится следующее необходимое и опциональное 
программное обеспечение:

Unity3D (для глав 10 и 11 вам потребуется Unity3D Pro);
3D-приложение, такое как Maya, Max или Blender (опцио-

нально);

приложение для работы с 2D-графикой, такое как Photoshop 

или Gimp (опционально).
Доступ онлайн
439 ₽
В корзину