Улучшение графики игры на движке Unity

В этом уроке я расскажу вам каким образом можно улучшить графику вашей игры, созданной на движке Unity, благодаря плагину Post Processing.
Відеоурок
![]()
Підписуйтесь на нашу групу в Телеграмі
Прочитать статью о плагине FPS Starter kit можно здесь .
Плагин Post Processing это замечательное дополнение от Unity , которое в скором времени будет интегрировано в сам движок. Плагин позволяет создавать очень красивые эффекты для камеры и делать общую картинку совершенно непохожей на первоначальную. В видео детально описывается моменты работы с этим плагином, здесь же, я приведу картинки до добавления эффектов и после:

(До применения эффектов)

(После применения эффектов)
Результат действительно потрясающий! Если немного дольше над всем этим посидеть, то ваша игра заиграет абсолютно новыми красками и будет выглядеть как профессиональный шедевр.
Настройки Качества
Unity позволяет вам установить уровень качества графики, на котором будет производится попытка рендеринга. В общем случае, высокое качество снижает частоту кадров, таким образом, иногда лучше не устанавливать наивысший уровень качества на мобильных устройствах или старом оборудовании, так как это будет отрицательно влиять на игровой процесс. Инспектор Quality Settings (в меню: Edit->Project Settings->Quality ) используется для установки уровня качества для выбранных устройств в редакторе. Он разделен на две основные области: в верхней расположена следующая матрица:

Для быстрой ориентации в настройках качества, Unity позволяет вам назначать своим комбинациям настроек уникальные имена. Строки матрицы позволяют вам настроить какой уровень качества будет применён для той или иной платформы. Самая нижняя строчка матрицы не является уровнем качества как таковым, но она позволяет задать стандартный уровень качества для всех платформ (зелёный чекбокс в колонке отвечает за уровень выбранного качества для выбранной платформы). По-умолчанию вместе с Unity идёт 6 предустановленных наборов уровня качества, но вы также можете настраивать и сохранять свои наборы, используя кнопку, расположенную под матрицей. Чтобы удалить ненужный набор, можно воспользоваться значком корзины (расположенном в самой правой колонке).
Для редактирования уровня детализации, можете нажать на его названии под панелью настроек матрицы:

Параметры качества, которые вы можете установить для определенного уровня качества, следующие:
| Свойство: | Функция: |
|---|---|
| Имя | Имя, которое будет присвоено этому уровню качества. |
| Визуализация | |
| Pixel Light Count | Максимальное значение пиксельных источников света используемых при упреждающем рендеринге (Forward Rendering). |
| Texture Quality | Позволяет вам выбрать, отображать ли текстуры в высоком разрешении или в среднем (низкое разрешение требует незначительного количества ресурсов). Варианты настроек следующие Full Res, Half Res, Quarter Res и Eighth Res. |
| Анизотропные текстуры не используются. | This enables if and how anisotropic textures will be used. The options are Disabled, Per Texture and Forced On (ie, always enabled). |
| ###Сглаживание | Устанавливает уровень применяемого сглаживания. Варианты настроек следующие 2x, 4x and 8x мульти-сэмплинг. |
| ###Мягкие Частицы | Должно ли для частиц использоваться мягкое смешивание? |
| Realtime Reflection Probes | Should reflection probes be updated during gameplay? |
| Shadows | |
| Shadows | This determines which type of shadows should be used. The available options are Hard and Soft Shadows, Hard Shadows Only and Disable Shadows. |
| Shadow resolution | Тени могут быть отрендерены в нескольких разрешениях: Low, Medium, High и Very High. Чем выше разрешение, тем больше будет выполнено вычислений. |
| Shadow Projection | Существует два метода для проецирования теней из направленных источников света. Плотное прилегание (Close Fit) рендерит тени высокого разрешения, но время от времени при движении камеры они могут слегка колебаться. Стабильное прилегание (Stable Fit) рендерит тени низкого разрешения, но они не колеблются при движении камеры. |
| Shadow Cascades | Количество потоков теней может быть равно нулю, двум или четырём. Большее количество потоков означает и лучшее качество создаваемых теней, но также это и большее количество вычислений (для получения дальнейшей информации, просмотрите страницу Направленные тени (Directional Shadows)). |
| Shadow Distance | Максимальное расстояние от камеры на котором тени будут видны. Тени расположенные дальше рендериться не будут. |
| Shadow Near Plane Offset | Offset shadow near plane to account for large triangles being distorted by shadow pancaking. |
| Other | |
| Blend Weights | Количество костей, которые могут влиять на отдельно взятую вершину в процессе анимации. Доступными значениями являются: одна, две или четыре кости. |
| VSync Count | Рендеринг может быть синхронизирован с частотой обновлений устройства вывода (монитора) с целью избежания артефактов “разрывов” (смотрите ниже). Вы можете выбрать синхронизацию с каждой вертикальной пустотой (VBlank), с каждой второй вертикальной пустотой или же вовсе отключить синхронизацию. |
| LOD Bias | Уровень LOD выбирается исходя из размера объекта, занимаемого им на экране. Когда размер находится между двумя уровнями LOD, выбор может быть сделан как в сторону более детализированной, менее детализированной модели, так и в сторону более детализированной из двух имеющихся моделей. Значение может изменяться от 0 до 1 — чем ближе значение к 0, тем более вероятно что будет использоваться менее детализированная модель. |
| ##Максимальный уровень LOD | Наибольший LOD, который будет использоваться в игре. Для получения дополнительной информации ознакомьтесь с примечанием ниже. |
| Particle Raycast Budget | Максимальное количество излучаемых лучей, используемых для аппроксимации столкновений систем частиц (те с качеством Medium или Low ). Просмотрите модуль столкновений системы частиц. |
| Async Upload Time Slice | The amount of CPU time in milliseconds per frame to spend uploading buffered textures to the GPU. See Async Texture Upload. |
| Async Upload Buffer Size | The size in MB for the Async Upload buffer. See Async Texture Upload. |
Максимальный уровень LOD
Модели, которые будут иметь уровень детализации ниже максимального уровня (MaximumLOD) не будут использоваться, а также будут опущены при сборке (что позволит сохранить место в памяти). Unity будет использовать для настроек целевой платформы усреднённое значение LOD объектов, взятое из всех максимальных LOD, которые присутствуют в сцене. Если LOD был включён в группу, тогда независимо от используемой настройки качества, модели из этой группы будут включены в сборку и будут всегда загружаться при исполнении для этой LOD группы. В качестве примера, если в любой настройке будет использоваться уровень LOD 0, тогда в сборку будут включены все уровни LOD и использующие их объекты.
Разрыв кадра
Изображение на дисплее устройства обновляется не постоянно, а через некоторый постоянный интервал времени, подобно тому как происходит обновление кадра в Unity. Тем не менее, обновления Unity не обязательно синхронизированы с таковыми дисплея, таким образом, может возникнуть ситуация, когда Unity отправил на дисплей новый кадр, пока предыдущий все еще рендерится. Это приводит к визуальному артефакту, называемому “разрывом кадра” в том месте экрана, где произошла смена кадра.

Unity можно настроить на переключение кадров лишь в том промежутке времени, когда устройство вывода изображения (монитор) не обновляется, в момент так называемой “вертикальной пустоты” (“vertical blank”). Опция VSync настроек качества (Quality Settings) синхронизирует переключение кадров с вертикальной пустотой устройства или опционально с любой другой вертикальной пустотой. Последнее будет полезно, если игре для рендеринга одного кадра может потребоваться более одного устройства.
Сглаживание
Сглаживание (анти алиасинг) улучшает отображение граней полигонов, путём сглаживания их “зазубренности”. Однако это выливается в нагрузке на видеокарту и использование большего количества её памяти (нагрузка на центральный процессор отсутствует). Уровень сглаживания подразумевает то, насколько сглажены грани полигонов (и сколько это требует памяти).

However, built-in hardware anti-aliasing does not work with Deferred Shading or HDR rendering; for these cases you’ll need to use Antialiasing Image Effect.
Мягкие Частицы
Мягкие частицы исчезают в местах пересечения с геометрией сцены. Выглядит это конечно весьма привлекательно, однако требует для себя больше вычислительных ресурсов (более комплексные пиксельные шейдеры), и работает только на платформах, поддерживающих (текстуры глубины (depth textures))(SL-DepthTextures). Более того, вам нужно использовать проход рендеринга под названиемотложенное освещение, или произвести из скрипта камерный рендеринг текстур глубины.
Улучшаем стандартную графику Unity за несколько минут
Принято считать, что графика в движке Unity не сравнится с картинкой Unreal Engine. Но так ли это? Попробуем сегодня понять, почему проекты на Unreal выглядят лучше.
Один из секретов Unreal Engine — сразу после создания нового проекта в нём уже включены эффекты пост-обработки. Пост-эффекты обрабатывают финальное изображение игры перед выводом на экран, улучшая внешний вид игры. Даже плохие модели и текстуры иногда можно немного вытянуть правильно настроенными пост-эффектами.
Spec Ops: The Line — довольно старая игра на Unreal Engine 3, которая, однако, на полную использует большую часть описанных ниже эффектов пост-обработки
В Unity тоже есть эффекты пост-обработки, но они не активируются при создании проекта, более того — их даже нет в самом движке и их нужно скачивать отдельно. Ну, на текущий момент.
Это можно сделать через Package Manager, набрав в поиск Post Processing. Устанавливаем найденный плагин и теперь мы можем пользоваться пост-эффектами в юнити. У меня он уже установлен, поэтому я перейду к настройке.
Открываем через Верхнее меню -> Window -> Package Manager
К слову, я добавил в проект ассеты скал и неба для демонстрации, все их можно загрузить на Unity AssetStore для вашей игры бесплатно. Сейчас можно видеть, как выглядит сцена без настройки:
Модели неплохие, однако сцена выглядит довольно резко и контрастно, наша задача — исправить это.
Для того, чтобы настроить плагин, добавляем на объект с основной камерой компонент Post-Processing Layer, в нём задаём Layer на Everything (и заодно сглаживание, которое уберёт лесенки с краёв моделей).
Unity просит не ставить слой Default или Everything, но за год работы с пост-процессингом я не увидел никакой проблемы с производительностью из-за этого параметра.
Затем создаём новый пустой объект с компонентом Post-Process Volume, в котором включаем галочку Is Global, что будет означать, что он влияет на всю вашу сцену. Нажатием кнопки New создаём новый профиль с эффектами.
Новый объект создаётся исключительно для удобства работы.
А, и да, для игр на ПК стоит в Project Settings сменить Color Space с Gamma на Linear, это значительно улучшит общий вид игры, рекомендую почитать об этом в справке Unity, а может я даже сделаю отдельный материал по этой теме.
Открыть окно Player Settings можно через верхнее меню -> Edit -> Player Settings. Применять данный параметр для мобильных платформ не рекомендую без необходимости — он повышает затраты ресурсов устройства.
Возвращаемся к нашему объекту с Post Process Volume и сразу добавляем 4 новых эффекта:
- Bloom
- Ambient Occlusion
- Color Grading
- Vignette
Всё эффекты добавляются через кнопку Add Effect
Bloom
Ключевые настройки Bloom
Теперь настраиваем их по порядку. Начнём с Bloom. Для включения эффекта ставим галочку возле Intensity, а затем прибавляем значение для того, чтобы усилить действие эффекта.
Слева — до применения Bloom, справа — после
Сразу можно заметить, что мой эффект огня на сцене, если его можно так назвать, преобразился и стал гораздо сочнее. Так же это повлияло на небо на заднем плане, создав небольшую «дымку» от него. Этот эффект очень хорошо подходит для визуальных эффектов вроде пуль, огня, неона и прочих источников освещения, он добавляет кинематографичности сцене. Играясь с его параметрами можно получить голливудскую картинку на бликах и не хуже, чем в Unreal Engine.
Ambient Occlusion
Ambient Occlusion даёт дополнительное затенение, имитируя скопление теней в выемках в реальном мире, только немного сильнее для художественного эффекта. После применения эффекта окружение приобретает глубину.
Слева — до, справа — после. Появилось дополнительное затенение, которое частично скрывает резкий переход от скал к земле.
Color Grading
Всевозможные параметры для цветокоррекции
Color Grading позволяет применить к изображению игры дополнительную цветокоррекцию и набор параметров тут очень обширный. Подобным эффектом пользуются при пост-обработке фильмов и видеоклипов, что намекает на его немалый функционал. Например, можно добавить художественности сцене, добавив какой-то цветовой оттенок.
До и после применения цветокоррекции. Конечно, так сильно менять картинку не всегда стоит, скриншот для наглядности.
Vignette
Vignette имитирует виньетку от объектива камеры. Этот эффект может добавить кинематографичности, хотя в кино он наоборот является нежелательным.
Разницу сложно заметить, но она есть. По краям изображения. Но на ощущения от игры может влиять довольно сильно.
Теперь можно сравнить картинку с исходной, отключив компонент Post-Process Layer на камере.
Слева — до, справа — после пост-обработки
Сразу видно, что пост-эффекты, настроенные за несколько минут, неплохо меняют итоговый вид игры. А я показал всего лишь минимальный набор, параметров у них гораздо больше. При должной сноровке, можно добиться впечатляющих результатов, а применять их можно, как в трёхмерных, так и 2D-играх.
Для большего эффекта, покажу так же сравнение со сценой без Linear Color Space, настроенного в начале.
С какой стороны Unity в представлении обычного игрока — догадаться не трудно.
И да, рекомендую пользоваться эффектами пост-обработки в меру, иначе ваша игра будет выглядеть будто на фоне происходит ядерный взрыв — тот же Spec Ops иногда это очень наглядно показывает. 🙂
Напоследок хочу отметить, что существует ещё множество способов улучшить картинку и придать ей художественный вид, ведь не только технологии делают игры на Unreal Engine красивыми, но и люди, что стоят за созданием графики. Для создания красивых уровней можно настроить красивое освещение, использовать туман для объёма, добавить мелкие частицы пыли в воздух с помощью системы частиц и многое, многое другое.
Заголовок немного кликбейтный, а сама тема — избитая, и всё же о таких вещах многие начинающие разработчики попросту не знают, из-за чего дефолтные настройки графики просто не дают получить хорошую картинку, а у Unity с очередным инди-релизом увеличивается репутация движка с плохой графикой. Однако, меня радует, что с каждым годом общий визуальный уровень проектов на различных движках от независимых разработчиков только растёт, и я бы хотел тоже сделать небольшой вклад в это.
Создание игр / Уроки по Unity 3D / #3 — улучшение, настройка графики, post processing
![]()
В этом видеоуроке будет показано как можно улучшить графику, создать красивую графику в Unity 3d. Мы будем использовать как стандартные средства настроек, так и сторонний ассет для постобработки (Post Processing Stack), с помощью которого мы добавим такие эффекты как antialiasing, ambient occlusion, screen space reflections, depth of field, motion blur, eye adaptation, bloom, color grading, user lut, chromatic aberration, grain, vignette, dithering. Ссылка на GitHub https://github.com/Unity-Technologies/PostProcessing/ помощь каналу https://www.patreon.com/MarxEngelsLeninInstitute https://www.donationalerts.com/r/institute
Показать больше
Войдите , чтобы оставлять комментарии