pixel light count unity нет такой настройки

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

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

pixel light count unity нет такой настройки

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

Для редактирования уровня детализации, можете нажать на его названии под панелью настроек матрицы:

pixel light count unity нет такой настройки

Параметры качества, которые вы можете установить для определенного уровня качества, следующие:

Максимальный уровень LOD

Модели, которые будут иметь уровень детализации ниже максимального уровня (MaximumLOD) не будут использоваться, а также будут опущены при сборке (что позволит сохранить место в памяти). Unity будет использовать для настроек целевой платформы усреднённое значение LOD объектов, взятое из всех максимальных LOD, которые присутствуют в сцене. Если LOD был включён в группу, тогда независимо от используемой настройки качества, модели из этой группы будут включены в сборку и будут всегда загружаться при исполнении для этой LOD группы. В качестве примера, если в любой настройке будет использоваться уровень LOD 0, тогда в сборку будут включены все уровни LOD и использующие их объекты.

Разрыв кадра

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

pixel light count unity нет такой настройкиСимуляция примера разрыва кадра. Смещение картинки отчетливо заметно на увеличенном фрагменте.

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

Сглаживание

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

pixel light count unity нет такой настройкиБез сглаживания, ребра полигона выглядят “зубчатыми”. pixel light count unity нет такой настройкис 6-ти кратным сглаживанием, рёбра полигона будут сглажены.

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). Более того, вам нужно использовать проход рендеринга под названиемотложенное освещение, или произвести из скрипта камерный рендеринг текстур глубины.

Источник

Как настроить Quality – качество графики в Unity?

pixel light count unity нет такой настройки

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

Как Вы знаете, качество графики в игре влияет на FPS и на на качество картинки! FPS – с англ. frames per second, – частота кадров в секунду, то есть величина, и показывающая количество кадров, сменяющихся за 1 секунду. Чем больше кадров в секунду будет в Вашей игре, тем плавнее и четче будет итоговая картинка, но тем больше ресурсов потребуется для такой прорисовки. И чтобы учесть возможности разных игроков с разной мощностью устройств, в игре с ледует делать несколько уровней настроек графики. Тогда каждый пользователь вашего приложения сможет выбрать для себя оптимальный уровень графики, то есть такой, при котором Ваша игра у него не будет лагать и подвисать.

Например, игра Witcher 3 имеет довольно высокие требования к ПК и если игрок со слабым компьютером попытается поиграть на высоком уровне графики, то у него могут возникнуть проблемы с картинкой. Ниже приведён пример отображения сцены с низким и высоким количеством FPS.

Как Вы смогли убедится – ч ем больше FPS тем плавнее будет картинка и меньше “фризов”. Стоит отметить, что н астройки графики актуальнее настраивать именно для 3D игр. В них часто используются высокополигональные модели, требующие четкой прорисовки. А в 2D играх, в большинстве случаев, используются спрайты, которые мало нагружают устройство и эти параметры там будут не столь критичны. Но в конечном итоге всё зависит от вашей игры, чем она требовательнее, тем нужнее настройка качества графики в ней!

pixel light count unity нет такой настройки

Для создания нового уровня графики жмём Add Quality Level и вводим ему имя в поле Name.

pixel light count unity нет такой настройки

Для выбора дефолтного уровня графики (уровня по умочанию), жмём на значок вниз и выбираем имя нужного уровня графики.

pixel light count unity нет такой настройки

Ниже будут описаны настройки уровня графики.

pixel light count unity нет такой настройки

Rendering

pixel light count unity нет такой настройки

Pixel Light CountКоличество пиксельных источников.
Texture QualityНизкое или высокое качество отображения текстур
AntiAliasingУровень сглаживания
Soft ParticlesИспользование частицами мягкого смешивания

Shadows

pixel light count unity нет такой настройки

Shadow resolutionРазрешение теней, влияющее на их качество
Shadow ProjectionПроецирования теней. Close Fit тень рендерится в высоком разрешении. Stable Fit тень рендерится в низком разрешении.
Shadow CascadesМногопоточность теней. Чем больше потоков теней, тем больше качество самих теней
Shadow DistanceРасстояние, больше которого тени не будут обрабатываться

Other

pixel light count unity нет такой настройки

Blend WeightsКоличество костей, которые влияют на отдельно взятую вершину анимации
VSync CountСинхронизация с частотой обновления монитора, которое может избавить пользователя от артефактов и разрывов изображения
LOD BiasДетализация моделей. Чем больше число, тем модели становятся более детализированные
Maximum LOD LevelНаибольший уровень LOD, который может быть в игре
Particle Raycast BudgetИспользование метода столкновения частиц

Различие настроек графики

Как видно в приведенном примере, с увеличением уровня графики растёт качество текстур, теней, освещения, моделей и уровня сглаживания. Если на самом маленьком уровне настройки графики качество теней и дальность их прорисовки низкая, текстуры мыльные и модели не имеют сглаживания, то на высоком уровне графики тень отрисовывается максимально далеко и чётко. Модели имеют сглаживание и свет, выглядит реалистичнее.

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

Выбор качества графики во время игры

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

pixel light count unity нет такой настройки

Создаём dropdown, нажимаем на + и вводим названия уровня графики.

pixel light count unity нет такой настройки

pixel light count unity нет такой настройки

Далее создадим скрипт, который будет менять уровень графики в зависимости от нашего выбора. Для получения значения dropdown будем использовать UnityEngine.UI. Создаем переменную с типом Dropdown. Далее прикрепляем скрипт к объекту в редакторе и привязываем к скрипту Dropdown.

pixel light count unity нет такой настройки

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//Обязательно импортируем для работы с UI

public class qualty : MonoBehaviour
<
public Dropdown dropdown;
>

Для того, чтобы наш скрипт смог определить изменения dropdown, в dropdown жмём на + в поле On value changed и добавляем туда объект с нашим скриптом, где создадим функцию, которая меняет уровень графики с помощью функции QualitySettings. SetQualityLevel, где первый аргумент – это номер уровня графики, а второй аргумент это его активация, если true – активация уровня графики, а false – деактивация этого уровня графики.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//Обязательно импортируем для работы с UI

public class qualty : MonoBehaviour
<
public Dropdown dropdown;
public void checkdropdown()
<
QualitySettings.SetQualityLevel(dropdown.value, true);//Изменяем уровен графики
>
>

pixel light count unity нет такой настройки

Теперь игрок может выбрать уровень графики. Вот как это выглядит:

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

Источник

Работа с освещением в Unity — теория и практика

pixel light count unity нет такой настройки

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

Теория освещения

Отражённый свет

Давайте определимся с терминологией. Освещение в компьютерной графике делится, условно говоря, на две категории:

Global Illumination (GI) представляет из себя наиболее “честный” способ симуляции отражённого света. Из источника света вылетают фотоны — частички, несущие информацию о цвете и яркости света. Ударяясь о какую-либо поверхность, они освещают её, но теряют часть энергии, вследствие чего их цвет и яркость изменяются. Затем фотоны отскакивают и ударяются о следующую поверхность, повторно теряя часть энергии. Так происходит несколько раз в зависимости от настроек рендерера.

Final Gather (FG) раскидывает по сцене точки, — final gather points, — из которых в разные стороны вылетают лучи. После столкновения с какой-либо поверхностью, лучи возвращают в родительскую точку информацию о цвете и его яркости. Представьте себе такую картину: вечер, солнце почти зашло за горизонт; становится темно, но небольшая часть комнаты ещё залита оранжевым закатным светом. Находящаяся на полу final gather point отправляет в разные стороны несколько лучей, некоторые из них дотягиваются до освещённой части комнаты и с этой информацией возвращаются в исходную точку, тем самым слегка освещая пол «отражённым» оранжевым светом. Это не такой “честный” способ, как GI, но он производит хороший результат, и им часто пользуются, чтобы заполнять сцены красивым мягким освещением.

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

pixel light count unity нет такой настройки

Ambient Occlusion

Кроме отражённого света, нам интересен так называемый Ambient Occlusion (AO). Это эффект затенения в углах, трещинах, узких проёмах. Представьте, что луч света залетает в угол комнаты, он несколько раз отражается от обеих стен, постепенно затухая. Чем дальше в угол, тем меньше света туда доходит.

Как правило, Ambient Occlusion используется, чтобы художественно подчеркнуть эффект затенения, — в реальности лучи света не теряют энергию столь быстро, чтобы в углах комнаты сгущалась такая же тьма, как показывают нам в играх. Если вы рендерите физически корректное освещение, ваш движок сам высчитывает скорость потери энергии лучом света, и вам не нужно отдельно рендерить карту (текстуру) Ambient Occlusion. Но вы можете это сделать, если потребуется для реализации художественного замысла.

pixel light count unity нет такой настройки

pixel light count unity нет такой настройки

Текстурные атласы

Следующим термином, который вам следует следует знать, является текстурный атлас. Грубо говоря, это одна большая текстура, в которой содержатся несколько маленьких текстурок. Чаще всего текстурные атласы создаются для экономии вычислительных ресурсов. Приведу крайне упрощённый пример, — спецы, спрячьте факелы и вилы! Пусть у вас в игре есть таверна, в которой 20 деревянных предметов (столы, стулья, ложки. ), у каждого своя текстура. В итоге CPU будет 20 раз обращаться к GPU, требуя отрендерить каждый объект по отдельности. Если мы назначим всем деревянным объектам один материал, обращающийся к одному текстурному атласу, в который зашиты все 20 текстур, то GPU сможет отрендерить 20 объектов за один вызов (он же — draw call, в конце статьи предоставлю интересные ссылки по этой теме).

В случае с “лайтмаппингом”, для каждого объекта создаётся дополнительная маленькая текстурка, в которой “запекается” информация об освещении. Затем много-много маленьких текстурок разных объектов размещаются в крупных текстурных атласах. Как и в случае с деревянной мебелью, мы также получаем прирост производительности.

Работа с Unity

Общая информация

Но вернёмся к “лайтмаппингу” в самом Unity. Прежде всего запаситесь терпением и, по возможности, мощным компьютером. Процесс рендера имеет свойство полностью занимать процессор и оперативную память, поэтому я включаю его перед тем, как ухожу на работу или иду спать. Таким образом, я возвращаюсь к компьютеру как раз в тот момент, когда рендер уже завершён.
Забегая вперёд, предупрежу, что Unity кэширует промежуточные результаты вычислений освещения. Если вы увидите, что на системном диске у вас пропало 10 гигабайт места — это оно. Чтобы настроить кэш надо зайти в: Edit — Preferences — GI Cache. Здесь вы можете указать, куда он сохраняется и его максимальный размер. Можно убрать компрессию, “весить” будет больше, но работать пошустрее. Тут же вы можете почистить кэш, но имейте ввиду, что если у вас открыта сцена с готовым “лайтмапом”, то он тоже будет удалён, будьте внимательны.

В Unity доступно 5 типов источников света:

Параметры источников света

Хочу обратить внимание на насколько ключевых настроек источников света (доступные настройки различаются в зависимости от типа источника света):

pixel light count unity нет такой настройки

Настройка освещения сцены

Окно настроек освещения сцены вызывается через Window — Lighting, и состоит из трёх вкладок: Object, Scene, Lightmaps. Для запуска рендера освещения используется кнопка Build в самом низу окна. Там же есть галочка Auto, которая автоматически запускает рендер каждый раз, когда вы вносите изменения в сцену; используйте её, если у вас мощный компьютер. Ещё ниже находится информация о количестве и размере “лайтмапов”, появится по завершению процесса “лайтмаппинга”.

Раздел — Object

В Object отображаются настройки конкретного объекта. Если вы выделите элемент окружения на вашей сцене, то здесь увидите ряд настроек и параметров. При условии, что объект является статичным, будет стоять галочка на чекбоксе Lightmap Static. Чаще всего вы будете использовать здесь поле Scale in Lightmap. Как я говорил ранее, для каждого объекта освещение “запекается” в отдельную маленькую текстурку, которая потом размещается в крупном “лайтмап”-атласе. Параметром Scale in Lightmap вы можете регулировать, сколько места будет занимать эта текстурка. Разумеется, чем меньше места ей выделяется, тем хуже будет качество “запечённого” в неё освещения. По умолчанию здесь стоит “1”, но если вы знаете, что объект будет редко попадать в поле зрения или он расположен далеко на фоне, вы можете смело уменьшить этот параметр вплоть до 0.1 или даже меньше.

Раздел — Scene

В Scene расположены ключевые настройки рендера освещения. Я рассказываю основы работы со светом, а также делюсь опытом “лайтмаппинга” конкретно под мобильные платформы, поэтому умышленно пропускаю такие вещи, как realtime GI или использование HDR-текстуры в качестве источника света.

В Ambient Source вы настраиваете заполняющий источник света Ambient Light, который я уже упоминал. Вам предлагается выбрать между небом-текстурой, небом из единственного цвета, а также созданным на основе цветового градиента небом. Я предпочитаю выбирать Gradient. Он позволяет настроить три цвета — купол неба, экватор и землю, что создаст для вашей сцены достаточно сложный и интересный заполняющий свет. Ambient Intensity указывает яркость этого света. В зависимости от художественного замысла, вы можете иметь даже очень светлую сцену, освещённую посредством одного Ambient Light.

Во вкладке Baked GI находятся основные настройки качества освещения, как прямого, так и отражённого, включая и GI, и FG.
Прежде чем углубимся в эти настройки, хочу дать один совет. Всегда имейте ввиду, что размещая на сцене источники света, настраивая тени и Ambient Light, после рендера “лайтмапа” вы получите совершенно иную картинку, только отдалённо напоминающую то, что вы делали. Поэтому я рекомендую работать итерациями: вы выставляете минимальное качество освещения, чтобы рендер происходил быстро, смотрите на результат рендера, после чего вносите правки и запускаете повторный рендер. Когда вы более-менее довольны результатом, можно повысить качество рендера и включить Final Gather. Это займёт длительное время, поэтому есть смысл включать такой рендер перед тем, как вы отходите от компьютера на сравнительно долгий отрезок времени.

Настройки во вкладке Baked GI оперируют такой единицей, как texel. Если говорить упрощённо, тексель — это пиксель, но не на экране, а в текстурном пространстве трёхмерной модели. Но не забивайте голову, — трудно сказать, как Unity оперирует текселями и как они зависят от масштаба объектов, поэтому просто-напросто двигайтесь эксперементальным путём. Например, для своей мобильной RPG я делаю финальный рандер с Baked Resolution выставленным в 25.

Тексель (сокращение от англ. Texture element) — минимальная единица текстуры трёхмерного объекта. Пиксель текстуры.
Проще всего объяснить значение термина «тексель» на примере трёхмерных игр. Если подойти вплотную к стене в какой-нибудь старой 3D-игре — (Wolfenstein или Duke Nukem), то можно наблюдать, как текстура стены распадается на однотонные квадраты, которые увеличиваются при приближении и собираются обратно в осмысленный рисунок при отдалении. Эти квадраты и называются текселями, и чем крупнее исходный рисунок текстуры, тем меньше становятся тексели. Для идеального отображения текстуры количество текселей должно совпадать с количеством пикселей на мониторе, но практически все движки разрешают зрителю приблизиться к стене ближе чем того разрешает детальность.

Ниже я расскажу про каждый параметр отдельно, но перед этим вам нужно знать ещё кое-что. Если вы запустите в Unity рендер освещения, то справа снизу будет написано, чем именно движок занят в текущий момент. В самом конце процесса рендера там будет написано Compositing.

Дело в том, что “лайтмап” генерируется послойно. Во время рендера создаются несколько отдельных текстур. Мне неизвестно, какие именно карты делает Unity, но среди них есть либо все, либо часть из списка: Diffuse (прямой свет), GI (Global Illumination), FG (Final Gather), AO (Ambient Occlusion) и другие. После этого движок берёт эти карты и сливает друг с другом. Например, в основе может лежать слой Diffuse, над ним кладётся слой FG в режиме смешивания Lighten (прямо как в Photoshop’е), а повыше кладётся слой AO в режиме Multiply… В итоге эти слои сливаются в одну картинку и на выходе получается финальный “лайтмап”.

Вкладка — Baked GI

Вкладка — General GI

Давайте пройдёмся по интересующим нас настройкам во вкладке General GI:

Вкладка — Fog

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

Кроме того, туман может использоваться как инструмент повышения производительности. Например, вы хотите вдалеке выключить у всех объектов текстуры и скрыть их за туманом. В более старых версиях World of Warcraft, если вы играли, вы не могли не заметить, какой густой там был туман.

Раздел — Lightmaps

Третьим разделом является Lightmaps, где будут расположены отрендеренные “лайтмапы”. Причем если атласов много, в верхней части вкладки вы не сможете увидеть все атласы, скролл в том окошке неактивен. Поэтому смотрим в нижнее и прокручиваем колесиком мышки.

Здесь нам важно увидеть насколько заполнен последний, самый нижний “лайтмап”-атлас. Если он почти пуст, то либо увеличиваем качество “лайтмапа”, чтобы заполнить весь атлас, либо уменьшаем, чтобы атлас оказался пустым и был удален. На картинке ниже изображены два хорошо заполненных атласа, а один — постольку-поскольку.

“Лайтмапы” хранятся в файлах EXR с глубиной в 32 бита.

pixel light count unity нет такой настройки

Light Probes

Ещё я обещал рассказать про Light Probes. Они представляют из себя небольшие сферы, вбирающие в себя информацию об освещении окружающего пространства. Когда таких сфер много, они создают своебразную карту освещённости вашего уровня или локации. Затем они используются для освещения динамических объектов, в которые не “запекается” свет.

Чтобы лучше понять их смысл, дам пример. На вашей сцене находится один Point Light, у которого стоят настройки Baked, то есть он используется для “запечения” света. Вы не делаете его Real-time, потому что это дорого в плане производительности, причём многие мобильные устройства вообще не поддерживают такой источник света. Далее вы “лайтмапите” сцену и видите, что ваш Point Light освещает окружение. Но если вы возьмёте монстра и поставите рядом с источником света, он останется тёмным, потому что принадлежит к классу динамических объектов, а ваш Point Light влияет только на статические.

Теперь вы расставляете вокруг источника света сетку из Light Probes, снова запекаете освещение. И теперь ваш монстр может ходить вокруг Point Light’а и освещаться им! Это крайне эффективный и недорогой способ имитации освещения. Чтобы добавить “пробы” на сцену, заходите в Game Object — Light — Light Probe Group. На сцене появится кубик из четырёх сфер. Для выбора отдельных сфер, используйте ctrl + click. В Inspector появятся несколько кнопок, позволяющие добавлять или удалять сферы. Вы также можете использовать комбинацию ctrl + D для дублирования сфер.

Расставляйте Light Probes аккуратно, размещайте их там, где вы хотите, чтобы они вбирали в себя информацию об освещении, чтобы потом передавать её динамическим объектам. Во избежание графических артефактов и мерцающего света, следите за тем, чтобы Light Probes образовывали ровную, красивую сетку.

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

pixel light count unity нет такой настройки

Заключение

Напоследок хочу дать совет по созданию моделей окружения под “лайтмаппинг”. Создавая контент для игры, я знал, с какой стороны будет смотреть игровая камера, поэтому ради сомнительной оптимизации удалял задние стенки некоторых объектов. В то время у меня был опыт рендера “лайтмапов”, но только в Maya, а не в Unity. Выяснилось, что при рендере освещения в Unity возле объектов, имеющих дыры, то есть удалённые полигоны, появляются жесткие, хорошо заметные артефакты. Имейте ввиду.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *