Это третья статья из серии, в которой рассказывается о том, как разработчики и технические художники могут настроить и использовать конвейер рендеринга высокого разрешения (HDRP) в Unity для достижения высокого уровня графической реалистичности. HDRP представляет собой технологический скачок в рендеринге Unity в реальном времени, поэтому вы можете работать со светом так, как он ведет себя в реальном мире.
Обязательно прочитайте другие статьи из нашей серии "Как сделать освещение высокого класса":
HDRP включает в себя несколько различных типов и форм света, чтобы помочь вам управлять освещением в сцене.
Типы света
Это доступные типы света, аналогичные другим конвейерам рендеринга в Unity:
- Направленный: Он ведет себя как свет от бесконечно удаленного источника, с идеально параллельными лучами, интенсивность которых не уменьшается. Направленное освещение часто заменяет солнечный свет. В экстерьерных сценах это часто будет ключевой свет.
- Пятно: Это похоже на реальный прожектор, который может иметь форму конуса, пирамиды или коробки. Пятно спадает вдоль передней оси z, а также к краям конуса/пирамиды.
- Точка: Это всенаправленный свет, который освещает все направления из одной точки пространства. Это полезно для лучистых источников света, таких как лампа или свеча.
- Область: Он проецирует свет с поверхности определенной формы (прямоугольника, трубки или диска). Зональный светильник работает как широкий источник света с равномерной интенсивностью в центре, как окно или флуоресцентная лампа.
Измените, как точечные, точечные и площадные источники света будут падать в зависимости от диапазона. Многие HDRP-светильники уменьшаются по закону обратного квадрата, как и источники света в реальном мире.
Точечные и площадные светильники имеют дополнительные формы для управления падающим светом, о чем говорится в следующих разделах.
Точечные светильники HDRP могут иметь три формы:
- Конус: Проецирует свет из одной точки на круглое основание. Настройте Внешний угол (в градусах) и Внутренний угол (в процентах), чтобы придать форму конусу и изменить его угловое затухание.
- Пирамида: Проецирует свет из одной точки на квадратное основание. Настройте форму пирамиды с помощью параметров Spot Angle и Aspect Ratio.
- Коробка: Равномерно распределяет свет по прямоугольному объему. Размеры X и Y определяют базовый прямоугольник, а Range управляет размером Y. Этот свет не имеет затухания, если не установлен флажок Range Attenuation, что можно использовать для имитации солнечного света в границах бокса.
Огни зоны HDRP могут иметь три формы:
- Прямоугольник: Проецирует свет от фигуры прямоугольника в локальном положительном направлении Z в определенном диапазоне.
- Трубка: Проецирует свет от одной линии во всех направлениях на определенное расстояние. Этот светильник работает только в режиме реального времени.
- Диск: Проецирует свет от формы диска в локальном положительном направлении Z в определенном диапазоне. Этот свет работает только в режиме "Выпечка".
Все типы HDRP Light имеют свойстваEmission, которые определяют внешний вид света.
Вы можете переключить параметр Light Appearance на Color и указать цвет RGB. В противном случае измените значение на "Фильтр и температура ", чтобы получить более точные физические данные.
Цветовая температура устанавливает цвет в градусах Кельвина. Для справки смотрите шпаргалку "Освещение и экспозиция" далее на этой странице.
Вы также можете добавить цвет, который действует как фильтр, подкрашивая свет в другой оттенок. Это похоже на добавление цветного геля в фотографии.
HDRP включает в себя некоторые дополнительные элементы управления в меню More Items (⋮) в правом верхнем углу Инспектора. Выберите Показать дополнительные свойства, чтобы увидеть дополнительные параметры.
К ним относятся переключатели Affect Diffuse и Affect Specular. Например, при освещении сцен или кинематографических постановок вы можете разделить лампы, управляющие яркими блестящими бликами, и лампы, создающие более мягкий рассеянный свет.
Вы также можете использовать множитель интенсивности для настройки общей интенсивности света без изменения исходного значения интенсивности. Это полезно для осветления или затемнения нескольких ламп одновременно.
HDRP позволяет использовать Световые слои чтобы свет воздействовал только на определенные сетки в сцене. Это маски слоев, которые вы можете связать с компонентом Light и MeshRenderer.
В свойствах света нажмите кнопку More Options , чтобы просмотреть выпадающий список Light Layer в разделе General. Выберите маски слоев, которые вы хотите связать со светом. Вы также можете выбрать пункт Показать дополнительные свойства в меню Другие элементы (☰). Аналогичным образом отображается выпадающий список Light Layer в разделе General. Выберите маски слоев, которые вы хотите связать со светом.
Затем настройте MeshRenderers с помощью маски слоя рендеринга. На сетку будет влиять только освещение на соответствующем LayerMask. Эта функция незаменима для устранения утечек света и гарантирует, что свет будет попадать только в намеченные цели. Это также может быть частью рабочего процесса по настройке освещения для сцен, чтобы только персонажи получали специальное кинематографическое освещение.
Например, если вы хотите предотвратить случайное проникновение света изнутри здания на стены снаружи, вы можете установить специальные световые слои для интерьера и экстерьера. Это обеспечивает тонкий контроль над настройками Light.
Чтобы настроить слои света, перейдите к настройкам HDRP по умолчанию. Раздел "Имена слоев " позволяет задать строковое имя для световых слоев с 0 по 7.
Дополнительную информацию, включая полный список свойств Light, можно найти в документации по компоненту Light.
Unity 2021 LTS и выше включает в себя систему Light Anchor, которая поможет вам быстро установить свет, контролируя угол и расстояние между камерой и объектом съемки. Кроме того, с помощью девяти предустановок можно выбрать оптимальные углы освещения.
Если вам нужно осветить кинематографическую сцену, продукт или кадр, используя несколько светильников вокруг персонажей или реквизита, компонент Light Anchor предлагает быструю и эффективную работу со светом в пространстве экрана вокруг якорной цели.
Сначала убедитесь, что ваша камера помечена как MainCamera, а затем добавьте компонент Light Anchor к точечному светильнику, которым вы хотите управлять. Выровняйте свет и объект съемки; это положение теперь является точкой привязки точечного света. Увеличьте расстояние между точкой привязки и точечным светом или даже отрегулируйте положение света вокруг точки привязки, настроив орбиту, высоту и угол наклона света в режиме просмотра игры, а не вручную регулируя трансформацию света в режиме просмотра сцены.
Для получения дополнительной информации ознакомьтесь с этой вводной презентацией о световых якорях.
Для измерения силы света в HDRP используются физические единицы освещенности (PLU). Они соответствуют реальным измерениям освещенности в СИ, включая канделы, люмены, люксы и ниты. Обратите внимание, что для точности PLU ожидает, что одна единица в Unity будет равна одному метру.
Единицы измерения
Физические единицы освещенности могут включать в себя единицы как светового потока, так и освещенности. Световой поток представляет собой общее количество света, излучаемого источником, в то время как освещенность означает общее количество света, получаемого объектом (часто в световом потоке на единицу площади).
Поскольку коммерческое освещение и фотографии могут выражать единицы по-разному в зависимости от применения, Unity поддерживает несколько физических единиц света для совместимости:
- Кандела: Одна единица эквивалентна световому потоку восковой свечи. Этот показатель также принято называть свечной мощностью.
- Люмен: Это единица СИ светового потока, определяемая как одна кандела в телесном угле(стерадиан). Обычно в характеристиках коммерческих ламп указывается люмен. Используйте его с точечными, точечными или площадными светильниками Unity.
- Люкс: Источник света, излучающий один люмен на площадь в один квадратный метр, имеет освещенность в один люкс. Реальные измерители освещенности обычно показывают люкс. Вы часто будете использовать этот блок с направленным светом в Unity.
- Гниды: Это единица измерения яркости, которая эквивалентна одной канделе на квадратный метр. Устройства отображения и светодиодные панели (например, телевизоры или мониторы) часто измеряют свою яркость в нитах.
- EV100: Интенсивность, соответствующая EV100, имеет значение экспозиции для пленки 100 ISO (см. раздел "Формула значения экспозиции" на этой странице). Увеличение экспозиции приводит к удвоению освещения, что обусловлено логарифмической зависимостью.
Для воссоздания реального источника освещения переключитесь на устройство, указанное в технических характеристиках, и подключите нужный световой поток или яркость. HDRP будет соответствовать физическим единицам освещения, что избавит вас от необходимости гадать при установке интенсивности.
Нажмите на значок, чтобы выбрать предварительные настройки для наружного, внутреннего, декоративного освещения и свечей. Эти параметры являются хорошей отправной точкой, если вы не хотите явно подбирать конкретное значение.
Общие значения освещения и экспозиции
В представленной здесь шпаргалке указаны цветовая температура и интенсивность освещения распространенных в реальном мире источников света. В нем также содержатся значения экспозиции для различных сценариев освещения.
Полную таблицу значений освещенности можно найти в документации Physical Light Units.
С помощью профиля IES сделайте точечные, точечные и площадные светильники, точно имитирующие падение реальных светильников. Это работает как Light cookie для применения определенных спецификаций производителя к рисунку света. Профили IES придают освещению дополнительную реалистичность.
Импортируйте профиль IES из меню Assets > Import New Asset. Импортер автоматически создаст Light Prefab с правильной интенсивностью. Затем просто перетащите префаб в вид Сцена или Иерархия и настройте его цветовую температуру.
В реальном мире свет отражается и рассеивается вокруг нас. Небо и земля вносят свой вклад в освещение окружающей среды, поскольку случайные фотоны отражаются от атмосферы и земли и в конечном итоге попадают к наблюдателю.
В HDRP можно использовать переопределение визуальной среды для определения неба и общей атмосферы сцены.
Например, используйте Ambient Mode: Dynamic, чтобы установить освещение неба в соответствии с текущим переопределением, которое отображается в разделе " Небо > Тип" визуальной среды.
В противном случае - Ambient Mode: Статический по умолчанию использует настройки неба на вкладке "Окружение" окна "Освещение".
Даже если другие источники света отключены, визуальная среда обеспечивает образцу сцены общее окружающее освещение.
Добавление ключевого света солнца завершает общее освещение сцены. Окружающий свет помогает заполнить теневые области, чтобы они не казались неестественно темными.
HDRP включает в себя три различных метода генерации неба. Установите для параметра Sky Type значение HDRI Sky, Gradient Sky или Physically Based Sky. Затем добавьте соответствующее переопределение из меню Sky.
Применение Visual Environment Sky похоже на обертывание всего виртуального мира гигантской подсвеченной сферой. Цветные полигоны сферы обеспечивают общий свет от неба, горизонта и земли.
HDRI Sky позволяет изобразить небо с помощью кубической карты, созданной из фотографий с высоким динамическим диапазоном (HDRI). В интернете можно найти множество бесплатных и недорогих источников HDRI. Хорошей отправной точкой является пакет Unity HDRI Pack в магазине Asset Store. Если вы чувствуете себя авантюристом, у нас также есть руководство по съемке собственных HDRI.
После импорта HDRI-активов добавьте HDRI Sky Override , чтобы загрузить HDRI Sky Asset. Здесь также можно настроить параметры искажения, вращения и режима обновления.
Поскольку небо является источником освещения, укажите Режим интенсивности, а затем выберите соответствующее значение Экспозиция/Мультипликатор/Люкс, чтобы управлять силой освещения окружающей среды. Примеры значений интенсивности и экспозиции см. в шпаргалке "Освещение и экспозиция" выше.
Анимация облачных слоев
Вы можете анимировать HDRI Sky и исказить HDRI Map процедурно или с помощью flowmap. Это позволит вам сымитировать эффект ветра на статичном HDRI или создать другие специфические VFX.
Выберите Градиентное небо в визуальной среде, чтобы аппроксимировать фоновое небо с помощью цветовой рампы. Затем добавьте Gradient Sky Override. Используйте верхнюю, среднюю и нижнюю границы, чтобы определить цвета для градиента.
Смешайте цветовую рампу с помощью Gradient Diffusion (Градиентная диффузия) и установите интенсивность для силы освещения.
Чтобы получить нечто значительно более реалистичное, чем градиент, используйте Physically Based Sky Override.
Это процедурно генерирует небо, которое включает в себя такие явления, как рассеяние Ми и рассеяние Рэлея, которые имитируют рассеивание света в атмосфере, воссоздавая цвет естественного неба. Для точного моделирования физически обоснованного неба требуется направленный свет.
Дым, туман и дымка - традиционные инструменты кинематографа. Они помогут придать глубину и размеренность сценическому освещению или создать атмосферное настроение.
Используйте Fog для получения аналогичного преимущества в HDRP. Его непрозрачность зависит от расстояния объекта до камеры. Туман также может скрыть дальнюю плоскость обрезки камеры, что позволит смикшировать удаленную геометрию обратно в сцену.
HDRP реализует глобальный туман как переопределение тумана. Здесь туман исчезает экспоненциально из-за расстояния до камеры и высоты в мировом пространстве.
Настройте наложение тумана на громкость в сцене. Высота основания определяет границу, за которой постоянный, более густой туман начинает истончаться, поднимаясь вверх. Плотность тумана продолжает уменьшаться по экспоненте, пока не достигнет максимальной высоты.
Аналогичным образом, параметры " Расстояние затухания тумана " и " Максимальное расстояние тумана " определяют, как туман исчезает с увеличением расстояния до камеры. Переключите режим цвета между постоянным цветом и существующим цветом неба.
Включите функцию Volumetric Fog для симуляции атмосферного рассеивания. Убедитесь, что в разделе Освещение > Настройки кадра (либо в разделе Камера, либо в разделе Настройки HDRP по умолчанию) установлены флажки Туман и Объемность. Также включите объемный туман в HDRP Pipeline Asset.
Расстояние объемного тумана задает расстояние (в метрах) от ближней плоскости обрезки камеры до задней части буфера объемного освещения. Это заполняет атмосферу воздушным материалом, частично закрывая игровые объекты в радиусе действия.
Объемное освещение может имитировать передачу эффектных солнечных лучей, таких как полумрак за облаками на закате или проходящие сквозь листву.
У каждого компонента Light (кроме Area lights) есть группа Volumetrics. Установите флажок Enable, затем задайте Multiplier и Shadow Dimmer. Свет в режиме реального времени или смешанном режиме будет создавать "лучи бога" в объемном тумане. Мультипликатор регулирует интенсивность, а диммер Shadow Dimmer управляет тем, как отбрасывающие тень поверхности рассекают свет.
Комната 2 в сцене-образце оснащена световым люком и объемным туманом. Рама стеклянной витрины вырезает объемные тени из солнечных лучей, падающих с потолка. Прибавьте яркость теней и увеличьте множитель, чтобы усилить эффект.
Если вам нужны более детальные эффекты тумана, чем те, которые можно получить с помощью Fog Override, HDRP также предлагает Локальный объемный туман (до HDRP 12 он назывался компонентом Density Volum).
Это отдельный компонент, не относящийся к системе Volume. Создайте игровой объект Local Volumetric Fog из меню(GameObject > Rendering > Local Volumetric Fog) или щелкните правой кнопкой мыши на иерархии(Rendering > Local Volumetric Fog).
При этом создается заполненное туманом ограничительное поле. Настройте размер, управление осями и параметры смешивания/затухания. По умолчанию туман однородный, но вы можете применить 3D-текстуру к полю "Текстура" в подразделе " Текстура маски плотности ". Это дает пользователю больше возможностей для выбора внешнего вида тумана.
Загрузите примеры из пакета Package Manager > Local Volumetric 3D Texture Samples или следуйте инструкциям в документации, чтобы создать собственные маски плотности.
Добавьте немного скорости прокрутки для анимации и настройте тайлинг. После этого ваш объемный туман может мягко распространяться по сцене.
HDRP вокселизирует локальный объемный туман для повышения производительности, хотя вокселизация может показаться грубой. Чтобы уменьшить блики, используйте текстуру Density Mask и увеличьте расстояние наложения, чтобы смягчить края тумана.
В HDRP версий 12 и выше можно включить локальные объемные разрешения до 256x256x256 в ассете HDRP Pipeline Asset. Это позволяет добиться более точных и масштабных эффектов.
Небо выглядит неполным без облаков. В HDRP 12 и выше используйте Слои облаков для создания естественных облаков, которые дополняют переопределения неба и визуального окружения.
Объемные облака Создайте реалистичные облака с реальной толщиной, которые реагируют на освещение и ветер.
Слой облаков - это 2D-текстура, которую можно анимировать с помощью карты потока с красным и зеленым каналами для управления смещением вектора. Он располагается перед небом и дает возможность отбрасывать тени на землю.
В режиме "Игра" используйте слой "Облака", чтобы придать небу легкое движение, сделав фон более динамичным.
В локальном или глобальном томе включите Фоновые облака в Визуальной среде. Затем добавьте переопределение облачного слоя.
Сама карта облаков представляет собой текстуру в цилиндрической проекции, где каналы RGBA содержат различные текстуры облаков (кучевые, страусовые, цирковые и висячие облака соответственно). Затем вы можете использовать элементы управления слоем облаков для смешивания каждого канала и создания желаемого облачного образования.. Два слоя с четырьмя каналами позволяют имитировать и смешивать до восьми облачных пейзажей. Измените анимацию облака, освещение, цвет и тени по своему вкусу.
Если облака должны взаимодействовать со светом, используйте объемные облака. Они могут отрисовывать тени, получать туман и создавать объемные световые потоки. Объедините их с облаками Cloud Layer или добавьте их отдельно.
Чтобы включить объемные облака в вашем:
- HDRP Asset: Перейдите в меню Освещение > Объемные облака > Объемные облака.
- Локальный или глобальный объем: Добавьте переопределение" Объемные облака ".
Опции Advanced и Manual Cloud Control позволяют определить карты для каждого типа облаков.
Подробнее об облачном слое и объемных облачных переопределениях см. в документации "Облака в HDRP ". Подробно об объемных облаках читайте в статье Новые возможности освещения в Unity 2021.2.
Мы не можем воспринимать свет без тьмы. Удачно расположенные тени могут придать вашим сценам дополнительную глубину и размеренность, добавляя им столько же характера, сколько и само освещение. HDRP включает в себя ряд функций для тонкой настройки теней и предотвращения плоского вида рендеров.
Карты теней
Для рендеринга теней используется техника, называемая shadow mapping, когда текстура хранит информацию о глубине с точки зрения света.
Найдите подраздел "Тени" компонента " Свет" , чтобы изменить режим обновления и разрешение карты теней. Более высокие разрешения и настройки частоты обновления стоят дороже.
Для направленного света карта теней покрывает большую часть сцены, что может привести к проблеме, называемой алиасингом перспективы. Пиксели карты теней, расположенные близко к камере, выглядят неровными и блочными по сравнению с пикселями, расположенными дальше.
Unity решает эту проблему с помощью каскадных карт теней, о чем рассказывается в следующем разделе.
Каскадная карта теней разделяет окружность камеры на зоны, каждая из которых имеет свою карту теней. Это уменьшает эффект расплывания перспективы.
HDRP предоставляет вам дополнительный контроль над каскадами теней с помощью Переопределение теней. Используйте настройки каскада для каждого тома, чтобы указать, где начинаются и заканчиваются соответствующие каскады.
Отключите кнопку "Показать каскады ", чтобы лучше представить каскадные сплиты. С помощью некоторых настроек можно свести к минимуму алиасинг перспективы.
Карты теней часто не могут передать мелкие детали, особенно на заметных краях, где соединяются две поверхности сетки. HDRP может генерировать эти контактные тени с помощью функции Contact Shadows Override.
Контактные тени - это эффект экранного пространства, для расчетов которого используется информация в кадре. Объекты вне кадра не создают контактных теней. В первую очередь они эффективны для теневых деталей с небольшим отпечатком на экране.
Убедитесь, что в настройках кадра включена функция Contact Shadows. Вы также можете настроить количество образцов в Pipeline Asset в разделе Contact Shadows Override в настройках качества освещения.
В 2021 LTS и более новых версиях эта функция была улучшена, чтобы хорошо работать с Terrain и SpeedTree. Подробнее читайте в блоге.
HDRP может расширить даже незначительные детали теней в ваших Материалах. Микротени используют карты нормалей и Ambient Occlusion Maps для создания очень тонких теней на поверхности без использования самой геометрии сетки.
Добавьте переопределение "Микротени" к объему в сцене и настройте непрозрачность. Однако обратите внимание, что микротени работают только с направленным светом.