Найти в Дзене
Another Art

Настройки проекта в Unity. Настройки качества.

Оглавление

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

 Картинка для привлечения внимания из открытых источников
Картинка для привлечения внимания из открытых источников

Unity позволяет вам установить уровень графического качества, которую он визуализирует. Важно понимать, что более качественная визуализация влечет за собой снижение частоты кадров. Поэтому для мобильных устройств я советую понизить качество графики, так как игрокам вряд ли понравится красивая, но жутко тормозящая игра. Чтобы попасть в настройки качества графики перейдите по пути Edit/Project Settings и выберите вкладку Quality. Данная вкладка разделена на 2 блока: в верху отображается матрица качества, а под ней настройки для выбранного уровня качества.

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

Настройки качества графики
Настройки качества графики

Чтобы удалить нежелательный уровень качества, используйте значок мусорной корзины (самый правый столбец).

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

Редактирование настроек качества графики
Редактирование настроек качества графики

Чтобы определить новый уровень качества, нажмите кнопку добавить уровень качества (Add Quality Level) и введите имя нового уровня в поле свойства Name.

Затем вы можете выбрать, какие из параметров качества, описанных в следующих разделах, необходимо обновить или установить:

  • Rendering
  • Shadows
  • Other

Rendering.

  • Pixel Light Count – установите максимальное количество Pixel Light для прямого рендеринга (Forward Rendering).
  • Texture Quality - выберите, следует ли отображать текстуры с максимальным разрешением или с малой долей этого разрешения (более низкое разрешение имеет меньшие затраты на обработку).
  • Anisotropic Textures - выберите, если и как Unity использует анизотропные текстуры.
  • AntiAliasing - выберите уровень сглаживания, который использует Unity.
  • Soft Particles - включите эту опцию, чтобы использовать мягкое смешивание для частиц.
  • Realtime Reflection Probes - включите этот параметр для обновления Reflection Probes во время игры.
  • Billboards Face Camera Position - включите эту опцию для принудительного использования Billboards чтобы повернуть их лицом к камере во время рендеринга. Это дает лучшее, более реалистичное изображение, но более дорогое для визуализации.
  • Resolution Scaling Fixed DPI Factor - уменьшает разрешение экрана устройства ниже его собственного разрешения.
  • Texture Streaming - включите эту опцию, чтобы использовать потоковую передачу текстур. Если вы не планируете использовать потоковую передачу текстур, отключите эту функцию, чтобы избежать каких-либо накладных расходов на процессор.
  1. Add All Cameras - включите этот флажок, чтобы сделать вычисление потоковых текстур в Unity (calculate Texture Streaming) для всех активных камер в проекте. Эта функция включена по умолчанию. Это самый быстрый способ перенести существующий проект в состояние потоковой передачи текстур. Если вы хотите исключить конкретную камеру, добавьте к ней компонент контроллера потоковой передачи (StreamingController), а затем отключите его. Если это свойство отключено, Unity вычисляет потоковую передачу текстур только для игровых объектов с помощью компонентов StreamingController. Используйте его для управления потоковой передачей текстур вручную.
  2. Memory Budget - установите общий объем памяти, который вы хотите назначить всем загруженным текстурам (в МБ). Когда емкость заполнена, Unity отбрасывает MIP-карты, которые он не использует,чтобы освободить место для тех, кто ему нужен. Бюджет памяти по умолчанию составляет 512 МБ. Потоковые текстуры выбирают самый маленький уровень MIP-Карты, чтобы попытаться достичь бюджета памяти. Unity всегда загружает не потоковые текстуры в полном разрешении, даже если это превышает бюджет. Бюджет памяти включает в себя не потоковые текстуры. Например, если ваш бюджет составляет 100 МБ и у вас есть 90 МБ непотоковых текстур, система потоковой передачи текстур пытается разместить все потоковые текстуры в оставшихся 10 МБ. Если это не удается, он загружает MIP-карты с более низким разрешением. Unity отдает приоритет максимальному снижению уровня по сравнению с бюджетом памяти. Система потоковой передачи текстур никогда не отбрасывает больше MIP-карт, чем максимальное уменьшение уровня, даже если отсутствие уменьшения приводит к тому, что объем памяти превышает бюджет потоковой передачи текстур.
  3. Renderers Per Frame - позволяет управлять накладными расходами на обработку ЦП для основного потока и связанных с ним заданий. Этот параметр равен 512 по умолчанию (то есть обработка 512 визуализаторов сетки на кадр). Более низкие значения сокращают время обработки, но увеличивают задержки при загрузке MIP-карт Unity.
  4. Max Level Reduction - установите максимальное количество MIP-карт, которые система потоковой передачи текстур может отбросить, если система потоковой передачи текстур достигнет бюджета памяти. Это значение по умолчанию равно 2 (что означает, что система отбрасывает не более двух MIP-карт). Система потоковой передачи текстур никогда не отбрасывает больше MIP-карт, чем это значение, даже если отсутствие сокращения приводит к тому, что объем памяти превышает бюджет потоковой передачи текстур. Это значение также является уровнем mipmap, который система потоковой передачи текстур изначально загружает при запуске. Например, когда это значение равно 2, Unity пропускает две самые высокие MIP-карты при первой загрузке.
  5. Max IO Requests - установите максимальное количество запросов ввода-вывода текстурных файлов из системы потоковой передачи текстур, которые активны в любой момент времени. По умолчанию это значение равно 1024. Это значение по умолчанию установлено достаточно высоко, чтобы предотвратить любую пробку в системе file IO за пределами того, что уже активно из-за конвейера асинхронной загрузки или самой файловой системы. Если содержание текстуры сцены изменяется значительно и быстро, система может попытаться загрузить больше текстурных MIP-карт, чем может поддерживать file IO. Снижение этого значения уменьшает пропускную способность ввода-вывода, генерируемую системой потоковой передачи текстур. Результатом является более быстрое реагирование на изменение требований mipmap.

Anti-aliasing.

Сглаживание улучшает внешний вид ребер полигонов, поэтому они не "зазубрены", а сглажены на экране. Однако он берет на себя затраты на производительность видеокарты и использует больше видеопамяти (хотя на ЦП это не влияет). Уровень сглаживания определяет, насколько гладкими являются ребра полигона (и сколько видеопамяти он потребляет).

Отключенные настройки сглаживания
Отключенные настройки сглаживания
Сглаживание, установленное на х4
Сглаживание, установленное на х4

Однако встроенное аппаратное сглаживание не работает с отложенным затенением или HDR. Для этих случаев вам нужно будет использовать эффект сглаживания изображения (Antialiasing Image Effect).

Soft Particles.

Мягкие частицы исчезают вблизи пересечений с другими сценами геометрия. Это выглядит намного приятнее, но это более дорого для вычисления (более сложные пиксельные шейдеры), и работает только на платформах, которые поддерживают текстуры глубины. Кроме того, вы должны использовать отложенное затенение (Deferred Shading) или устаревший путь рендеринга отложенного освещения (Legacy Deferred Lighting rendering path), или сделать рендеринг через скрипт используя текстуру глубины камеры (camera render depth textures).

Отключенные мягкие частицы
Отключенные мягкие частицы
Включенные мягкие частицы
Включенные мягкие частицы

Shadows.

  • Shadowmask Mode - выберите поведение теневой маски (shadowmask) при использовании режима смешанного освещения (Mixed lighting) теневой маски. Используйте окно освещения (меню: Window/Rendering/Lighting Settings), чтобы настроить это в вашей сцене.
  1. Distance Shadowmask - Unity использует тени в реальном времени вплоть до расстояния, указанного в параметре Shadow Distance и запеченные тени за его пределами.
  2. Shadowmask – статические игровые объекты, которые отбрасывают тени всегда будут отбрасывать запеченные тени.
  • Shadows – выберите какой тип теней использовать (или вообще отключите их).
  • Shadow Resolution - выберите, в каком разрешении будут отображаться тени. Чем выше разрешение, тем больше накладные расходы на обработку.
  • Shadow Projection - выберите, какой метод использовать для проецирования теней от направленного света.
  1. Close Fit - визуализирует тени с более высоким разрешением, но иногда они могут слегка колебаться, если камера движется.
  2. Stable Fit - визуализирует тени с более низким разрешением, но они не колеблются при движении камеры.
  • Shadow Distance - введите максимальное расстояние от камеры, на котором видны тени. Unity не создает теней, которые падают за пределами этого расстояния.
  • Shadow Near Plane Offset - введите смещение тени вблизи плоскости, чтобы учесть большие треугольники, искаженные теневым «блином».
  • Shadow Cascades - выберите количество используемых теневых каскадов. Большее количество каскадов дает лучшее качество, но за счет накладных расходов на обработку.
  • Cascade splits - отрегулируйте разделение каскада теней, перемещая вертикальную линию между каждым каскадом влево или вправо. В зависимости от того, какое значение вы выбрали для настройки теневых каскадов, вы можете видеть два или четыре разных цвета. Если для параметра Shadow Cascades задано значение No Cascades, то весь этот элемент управления скрыт.

Other.

  • Blend Weights - выберите количество костей, которые могут повлиять на данную вершину во время анимации.
  • V Sync Count – выберите между синхронизированием рендеринга с вертикальными пробелами или не синхронизировать его вообще. Unity может синхронизировать рендеринг с частотой обновления устройства отображения, чтобы избежать разрывов артефактов.
  • Lod Bias - установите смещение уровня детализации (LOD). Уровни LOD выбираются в зависимости от размера объекта на экране. Когда размер находится между двумя уровнями LOD, выбор может быть смещен в сторону менее детализированной или более детализированной из двух доступных моделей. Это задается как дробь от 0 до + бесконечности. Когда он установлен между 0 и 1, это способствует меньшей детализации. Установка более 1 способствует большей детализации. Например, установив смещение LOD на 2 и изменив его на расстоянии 50%, LOD фактически изменяется только на 25%.
  • Maximum LOD Level - установите самый высокий LOD, который используется в игре.
  • Particle Raycast Budget - установите максимальное количество raycasts для использования в приближенной системе частиц столкновения (те, что имеют среднее или низкое качество).
  • Async Upload Time Slice - установите количество процессорного времени в миллисекундах на кадр для загрузки буферизованных текстур на графический процессор.
  • Async Upload Buffer Size - установите размер буфера асинхронной загрузки в МБ.

Maximum LOD level.

Unity не использует модели которые имеют LOD который меньше максимального уровня LOD и убирает их из сборки (что экономит место для хранения в памяти). Например, если при любых параметрах качества используется LOD 0 уровня, тогда все уровни LOD включаются в билд и все ссылки на модели загружаются при запуске игры.

Tearing.

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

Визуальный артефакт «разрыва» кадра
Визуальный артефакт «разрыва» кадра

Заставить Unity переключать кадры можно только в тот период, когда устройство отображения не обновляется, так называемая "вертикальная заготовка" (vertical blank). Опция V Sync Count в настройках качества синхронизирует переключатели кадров с вертикальной заготовкой устройства или, опционально, с любой другой вертикальной заготовкой. Последнее может быть полезно, если игра требует более одного обновления устройства для завершения рендеринга кадра.

На сегодня это все. Следующая статья будет посвящена сразу трем вкладкам, а именно Time, Script Execution Order settings и Tag and Layer в окне настроек проекта в Unity. Спасибо всем, кто дочитал эту статью до конца, подписывайтесь на канал, ставьте лайки, а для тех, у кого появились вопросы - спрашивайте в комментариях! А если вы хотите помочь данному каналу в развитии – делитесь этой статьей с друзьями в социальных сетях!

МОЙ КАНАЛ НА YOUTUBE | ГРУППА МОЕЙ ИНДИ ИГРЫ В VK