Улучшаем стандартную графику Unity за несколько минут

Привет. Недавно решил начать делиться накопленным опытом по разработке, и записал своё первое видео. Статья прилагается. :)

Собственно, видео. Статью можно прочитать в самом посте.

Принято считать, что графика в движке Unity не сравнится с картинкой Unreal Engine. Но так ли это? Попробуем сегодня понять, почему проекты на Unreal выглядят лучше.

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

Spec Ops: The Line - довольно старая игра на Unreal Engine 3, которая, однако, на полную использует большую часть описанных ниже эффектов пост-обработки
Spec Ops: The Line - довольно старая игра на Unreal Engine 3, которая, однако, на полную использует большую часть описанных ниже эффектов пост-обработки

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

Это можно сделать через Package Manager, набрав в поиск Post Processing. Устанавливаем найденный плагин и теперь мы можем пользоваться пост-эффектами в юнити. У меня он уже установлен, поэтому я перейду к настройке.

Открываем через Верхнее меню -> Window -> Package Manager
Открываем через Верхнее меню -> Window -> Package Manager

К слову, я добавил в проект ассеты скал и неба для демонстрации, все их можно загрузить на Unity AssetStore для вашей игры бесплатно. Сейчас можно видеть, как выглядит сцена без настройки:

Модели неплохие, однако сцена выглядит довольно резко и контрастно, наша задача - исправить это.
Модели неплохие, однако сцена выглядит довольно резко и контрастно, наша задача - исправить это.

Для того, чтобы настроить плагин, добавляем на объект с основной камерой компонент Post-Processing Layer, в нём задаём Layer на Everything (и заодно сглаживание, которое уберёт лесенки с краёв моделей).

Unity просит не ставить слой Default или Everything, но за год работы с пост-процессингом я не увидел никакой проблемы с производительностью из-за этого параметра.
Unity просит не ставить слой Default или Everything, но за год работы с пост-процессингом я не увидел никакой проблемы с производительностью из-за этого параметра.

Затем создаём новый пустой объект с компонентом Post-Process Volume, в котором включаем галочку Is Global, что будет означать, что он влияет на всю вашу сцену. Нажатием кнопки New создаём новый профиль с эффектами.

Новый объект создаётся исключительно для удобства работы.
Новый объект создаётся исключительно для удобства работы.

А, и да, для игр на ПК стоит в Project Settings сменить Color Space с Gamma на Linear, это значительно улучшит общий вид игры, рекомендую почитать об этом в справке Unity, а может я даже сделаю отдельный материал по этой теме.

Открыть окно Player Settings можно через верхнее меню -> Edit -> Player Settings. Применять данный параметр для мобильных платформ не рекомендую без необходимости - он повышает затраты ресурсов устройства.
Открыть окно Player Settings можно через верхнее меню -> Edit -> Player Settings. Применять данный параметр для мобильных платформ не рекомендую без необходимости - он повышает затраты ресурсов устройства.

Возвращаемся к нашему объекту с Post Process Volume и сразу добавляем 4 новых эффекта:

  • Bloom
  • Ambient Occlusion
  • Color Grading
  • Vignette
Всё эффекты добавляются через кнопку Add Effect
Всё эффекты добавляются через кнопку Add Effect

Bloom

Ключевые настройки Bloom
Ключевые настройки Bloom

Теперь настраиваем их по порядку. Начнём с Bloom. Для включения эффекта ставим галочку возле Intensity, а затем прибавляем значение для того, чтобы усилить действие эффекта.

Слева - до применения Bloom, справа - после
Слева - до применения Bloom, справа - после

Сразу можно заметить, что мой эффект огня на сцене, если его можно так назвать, преобразился и стал гораздо сочнее. Так же это повлияло на небо на заднем плане, создав небольшую «дымку» от него. Этот эффект очень хорошо подходит для визуальных эффектов вроде пуль, огня, неона и прочих источников освещения, он добавляет кинематографичности сцене. Играясь с его параметрами можно получить голливудскую картинку на бликах и не хуже, чем в Unreal Engine.

Ambient Occlusion

Ambient Occlusion даёт дополнительное затенение, имитируя скопление теней в выемках в реальном мире, только немного сильнее для художественного эффекта. После применения эффекта окружение приобретает глубину.

Слева - до, справа - после. Появилось дополнительное затенение, которое частично скрывает резкий переход от скал к земле.
Слева - до, справа - после. Появилось дополнительное затенение, которое частично скрывает резкий переход от скал к земле.

Color Grading

Всевозможные параметры для цветокоррекции
Всевозможные параметры для цветокоррекции

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

До и после применения цветокоррекции. Конечно, так сильно менять картинку не всегда стоит, скриншот для наглядности.
До и после применения цветокоррекции. Конечно, так сильно менять картинку не всегда стоит, скриншот для наглядности.

Vignette

Vignette имитирует виньетку от объектива камеры. Этот эффект может добавить кинематографичности, хотя в кино он наоборот является нежелательным.

Разницу сложно заметить, но она есть. По краям изображения. Но на ощущения от игры может влиять довольно сильно.
Разницу сложно заметить, но она есть. По краям изображения. Но на ощущения от игры может влиять довольно сильно.

Теперь можно сравнить картинку с исходной, отключив компонент Post-Process Layer на камере.

Слева - до, справа - после пост-обработки
Слева - до, справа - после пост-обработки

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

Для большего эффекта, покажу так же сравнение со сценой без Linear Color Space, настроенного в начале.

С какой стороны Unity в представлении обычного игрока - догадаться не трудно.
С какой стороны Unity в представлении обычного игрока - догадаться не трудно.

И да, рекомендую пользоваться эффектами пост-обработки в меру, иначе ваша игра будет выглядеть будто на фоне происходит ядерный взрыв — тот же Spec Ops иногда это очень наглядно показывает. :)

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

Заключение

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

41
27 комментариев