Перенос Проекта На Unity 5. Шейдеры И Освещение



Фон Совсем недавно вышел Unity 5, в котором много нового и непонятного, а документацию создать мы еще не успели.

Из-за моей работы техническим художником и мастером на все руки мне пришлось все бросить и срочно делать UP проекта на Unity 5. Не так давно Apple обязала разработчиков создавать 64-битные приложения.

Когда вы откроете проект в новой версии, вы не увидите… ничего, или почти ничего.

Unity 5 не понимает старые шейдеры с альфой и просто заливает их черным или белым, в зависимости от того, что вы написали.

Старый Зверь ушел в историю, и свет придется перепечь.

Ниже вся собранная информация по вопросу: перевод мануала и туториала с офсайта Unity3D, и некоторые примечания (по настройкам) от меня.

Посвящается всем, кто перешел на Unity 5.



Стандартный шейдер

Полезные ссылки: Почему ваши старые и самописные шейдеры не работают ; Официальный учебник по шейдерам .

Описание Новый стандартный шейдер Unity для каждой платформы компилируется отдельно, то есть неиспользуемые поля не попадают в финальный шейдер.

Оптимизация шейдеров выполняется на основе целевой платформы; при построении стандартного шейдера происходят две важные вещи:

  • Все свойства, которые не используются, вырезаются из дальнейшей сборки (а может и используются пресеты);
  • Собранный шейдер проверяется и оптимизируется под тип устройства (см.

    Настройки сборки), поэтому о производительности можно не беспокоиться;

Стандартные параметры шейдера разделены на три раздела:

Перенос проекта на Unity 5. Шейдеры и освещение

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

  • Непрозрачный — непрозрачный, рендеринг будет производиться без альфы; Цвет — это оттенок текстуры.

  • Вырезать — это Альфа-тестирование, параметр Alpha Cutoff определяет границу между двумя состояниями: «полностью прозрачно» и «непрозрачно».

  • Тускнеть - по сути то же самое, что и Прозрачный , но позволяет сделать объект полностью прозрачным.

  • Прозрачный - полупрозрачный, например используется для стекла, альфа в альбедо используется для регулирования прозрачности.

Основные карты — группа свойств, описывающая основную текстуру и ее свойства.

  • Альбедо — основная текстура и/или цвет, альфа (RGB+A) влияет на отражение и прозрачность в разных режимах рендеринга.

  • Металлик (по Стандарту) – определяет степень, в которой материал отражает окружающую среду; при нуле он выглядит как матовый пластик, а при 1 — как зеркало или металлический материал.

    Используя белый цвет или текстуру, получаем материал, похожий на металл.

    Оптимально использовать оттенки серого.

    Канал R в текстуре отвечает за свойство Металличность , в канале А (альфа) - Гладкость .

  • Зеркальный (с Specular Setup) — определяет цвет отражения и его яркость по альфе.

  • Карта Нормалей — волшебная текстура для объёма: она берёт вектор (x,y,z) из пикселя (r,g,b) и добавляет дополнительную детализацию при освещении (и других эффектах, SSR, например).

    В результате получается трехмерный эффект.

  • Карта высот - вторая магическая текстура, также известная как карта высот, похожая на Карта Нормалей , он нужен для Displacement-mapping (с тесселяцией) или Parallax Occlusion.
  • Окклюзия — свойство, которое работает с текстурой (ч/б) и затеняет «края» текстуры, то есть Ambeint-Occlusion. Например, затемнение швов кирпичной стены.

  • Эмиссия - излучение, цвет отражения объекта.

  • Детальная маска - можно использовать для нанесения маски на Вторичные карты .

Для недвижимости Альбедо , Металлик И Эмиссия текстура является опцией и НЕ требуется.

Для недвижимости Альбедо И Эмиссия вы можете установить цвет, но для Эмиссия цвет невозможно установить, если масштаб равен нулю.

Вторичные карты — группа свойств, описывающая вторую текстуру, наложенную на основную.

Пример использования показан на ткани с рисунком, где Основные карты имеет цвет и текстуру, а также Вторичные карты накладывает узор, например вышивку, и его текстуру.



Осветительные приборы

Я нашел некоторую документацию по GI, но рабочих настроек там не было.

Поэтому я перевел то, что смог найти, и попробовал разные настройки выпечки.

Все настройки получены путем экспериментов и чтения.

руководства из офф.

сайт, блог и Форум .

Мне было полезно скачать проект деревня викингов .

На данный момент я работаю над полноценным 3D проектом, но для планшетов.

У меня есть статические тени, световые тесты и источник света.

Тип света Направленный и настройки выпечки Смешанный .

Первый сюрприз : у тебя есть Локальные настройки есть кэш 10гб.

Посмотреть на это безобразие можно в меню Редактировать -> Предпочтение

Перенос проекта на Unity 5. Шейдеры и освещение

Его невозможно удалить самостоятельно; его необходимо чистить вручную.

О первой выпечке: У меня SSD-система на 256 ГБ, поэтому я перенес кэш на обычный жесткий диск.

Если честно, разницы в скорости запекания я не заметил, а текстур там генерируется довольно много.

Первый бэкап сцены на 100к полисов, с полностью дефолтными настройками, сгенерировал 200 карточек (light+dir) общим весом 1Гб (процесс проводился на i7-4770, 32 гига ОЗУ и круглосуточно).

Естественно, все это на ветер.



Описание новых возможностей

В настоящее время Unity использует технологию глобального освещения (GI) Enlighten в реальном времени.

Использует динамический GI для прямого освещения и теней.

Они рассчитываются в реальном времени с использованием графического процессора устройства.

в реальном времени необходимо рассчитать заранее.

Однако вы не получите Lightmap, как в Beast, скорее всего вы получите Световая картаСнимок .

Эта штука много весит, потому что содержит слепок ваших Lightmaps. В этой сборке Световая картаСнимок придет в другом размере.

Я не знаю, что там происходит.

Описание осветительных панелей

В качестве примера я использую проект с деревней викингов, далее Окно -> Осветительные приборы , вкладка Сцена .

Сразу скажу, что эта сцена запекается буквально полчаса, и это действительно круто.



Перенос проекта на Unity 5. Шейдеры и освещение

Выпекание происходит в 2 этапа, в первом 11 этапов, во втором 15. Для запекания GI клинья на 5/11 Кластеризация, 7/11 LightTransport, 4/15 Запекание AO, 6/15 Запекание видимости и 12/15 ЗапеканиеInderect.

Вкладка «Сцена».

Освещение окружающей среды

Свет должен быть запеченным или смешанным, что позволит вам плавно переключаться между запеченным и рассчитанным в реальном времени режимами GI. Характеристики Скайбокс И Солнце являются необязательными и могут быть оставлены пустыми.

Скайбокс — свойство для имитации неба или фона.

Солнце - с использованием Скайбокс , здесь вы можете указать направления света или «солнца» (или любого большого удаленного источника света, освещающего сцену).

Если этот параметр не используется (None), то Направленный свет станет бесконечно далеким источником света, подобным солнцу.

Окружающий источник - источник рассеянного света Окружающий свет , который освещает все в сцене (правильное определение несколько сложнее).

Он может быть 3-х видов:

  • Скайбокс - в поле Скайбокс вам необходимо указать материал с Кубическая карта ( что-то вроде этого ).

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

  • Градиент — позволяет назначать цвета для цвета неба, цвета экватора и цвета земли, выглядит так как это .

    Это свойство последовательно плавно смешивает перечисленные цвета.

  • Цвет — цвет окружающего света.

Окружающая интенсивность — яркость Окружающий свет , регулируется от 0 до 1. Эмбиент — свойство доступно при включенном режиме Предварительно вычисленный GI в реальном времени И Запеченный Г.

И.

.

Позволяет выбрать метод ( Предварительное вычисление в реальном времени или запеченный/ Запеченный Г.

И.

), который будет использоваться для рассеянного света.

Источник отражения - источник отражений.

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

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

Интенсивность отражения — степень воздействия Кубическая карта или Скайбокс отражения на сцене.

Отражение Отскок - сколько раз отразится отражение предмета.

Уместно вспомнить зеркальный коридор.



Предварительно вычисленный GI в реальном времени

Разрешение в реальном времени - Устанавливает количество текселей, используемых на единицу длины для объектов, освещенных в GI в реальном времени.

Обычно это значение примерно в десять раз ниже запеченного разрешения.

Может быть не целым числом, например 0,5. Использование процессора — определяет, насколько процессор может быть загружен в редакторе при запекании текстур в реальном времени.



Запеченный Г.

И.

Запеченное разрешение - устанавливает количество текселей (например, «текстурных пикселей»), которые будут использоваться на единицу длины для освещенных объектов.

ЗапеченныйGI .

Для быстрого набора лучше использовать значения в диапазоне 1-4. Запеченная подкладка — расстояние на текстуре между запеченными объектами в текселях.

Сжатый — будет ли текстура сжиматься.

Места это займет меньше, но могут быть артефакты.

Окружающая окклюзия — относительная яркость поверхностей в Окружающая окклюзия те.

затемнение во внутренних углах.

Более высокие значения показали более высокий контраст между затененными и освещенными областями.

Это относится только к Косвенный (косвенное) освещение, рассчитанное по системе GI. Финальный сбор - Когда эта опция включена, окончательный свет, полученный при расчете GI, будет иметь то же разрешение, что и запеченные карты освещения.



Генерал Г.

И.

Следующие настройки влияют на отраженный свет в режимах В реальном времени И Запеченный Г.

И.

режим: рассеянный Окружающий , отраженный свет Свет отражается и радиация излучающий материалы, но не отражение.

Косвенная интенсивность - масштабирует интенсивность Непрямой свет .

В меню Окно сцены -> Освещенность ты можешь видеть Непрямой свет .

Усиление отскока — насколько сильно свет отражается от одной поверхности к другой.

Отраженный свет умножается на это значение, которое стандартно равно 1. Направленный режим — по существу указывает, нужно ли сохранять информацию Направленный И Зеркальный в световых картах, когда Режим запеченного GI .

Размер атласа — размер карты освещения при запекании Режим запеченного GI .

Обычно я устанавливаю значение 1024px. В Средство рендеринга скинированной сетки теперь добавлено новое свойство - Параметры карты освещения , это свойство отвечает за группировку объектов, например, в помещении и на улице, по уровням или сценам, как вы укажете, так и автоматически.



Перенос проекта на Unity 5. Шейдеры и освещение

Мои настройки низкие для быстрого резервного копирования.



Предварительно вычисленный GI в реальном времени

  • Разрешение — разрешение окончательной карты освещения в тикселях в мировых единицах.

  • Разрешение кластера — Отношение разрешения кластера к разрешению итоговой карты освещения, т.е.

    разрешение, с которым рассчитывается отраженный свет.

  • Бюджет освещенности — значение определяет точность, с которой данные о падающем (входящем) свете используются для расчета освещенности каждого тексела на карте освещения, т.е.

    записывается закономерность падающего света.

    Более низкие значения приводят к размытию контуров освещенной части, более высокие значения — к более резким контурам.

    Увлекаться этим параметром нельзя, так как он напрямую нагружает оперативную память и процессор при резервном копировании.

  • Качество излучения — качество передачи отраженного света на карте освещения.

    Значение не влияет на конечный результат на устройстве, но увеличивается предварительное вычисление времени в редакторе .

    Насколько я понимаю, это свойство эквивалентно свойству Последний сбор лучей В Зверь , но для отраженных лучей.

    Больше лучей означает более высокое качество, но более длительное время выпекания.

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

    Помогает избежать артефактов.

  • Моделирование толерантности — максимальный размер отверстий в геометрии сетки, которым можно пренебречь при расчете GI.
  • Краевая строчка — если опция включена, то УФ-диаграммы будет запечено с картами освещения, чтобы избежать визуальных артефактов.

  • Прозрачный — если опция включена, то объекты с прозрачностью остаются прозрачными во время расчета GI. В этом случае обратные грани не учитываются и свет проходит сквозь объект. Может использоваться для сияющих невидимых поверхностей.

  • Системный тег — группа объектов с картами освещения в одном атласе.

    Это также степень детализации, от которой зависят расчеты.

    Несколько систем создаются автоматически, если в сцене достаточно объектов.

    Другой Системный тег может использоваться для разных уровней в локации или частях уровня.



Запеченный Г.

И.

  • Радиус размытия — радиус в тикселях из фильтра размытия, который используется для прямого освещения во время постобработки.

    Этот радиус соответствует расстоянию, по которому будут усредняться соседние тикселы.

    Более высокие уровни уменьшают вероятность появления артефактов и делают края теней более гладкими или мягкими.

  • Образцы сглаживания — степень сглаживания для подавления артефактов.

  • Качество прямого света — количество лучей используется для оценки прямой освещенности (полный аналог Последний сбор лучей В Зверь ).

    Большее количество лучей создает более точные мягкие тени.



Запеченный АО

  • Качество — количество лучей для расчета окружающая окклюзия (АО)
  • Образцы сглаживания — степень сглаживания для подавления артефактов.

  • Запеченная бирка - как описано выше Системный тег , позволяет группировать объекты в определенные наборы для выпечки.

    Может использоваться для оптимизации загрузки динамического уровня.

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



Генерал Г.

И.

Направленное освещение

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

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

Вы можете выбрать один из 3 режимов: Ненаправленный, направленный и направленный с зеркальным отражением .

Все три поддерживают карты освещения в реальном времени и запеченные.

Ненаправленный: плоский диффузный.

Самый простой режим, использующий одну карту освещения.

Хранит информацию о том, сколько света излучает поверхность, предполагая, что это диффузный .

Если объекты имеют Карта Нормалей или отражать свет, они будут отображаться как диффузный , но в остальном показано правильно.

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

Остальное рассчитывается, если свет должен распространяться равномерно (по сфере).

Эта информация позволяет рассчитать Карта Нормалей , но материал останется диффузный .

Направленное с зеркальным: полное затенение Как и в предыдущем, здесь используются 2 дополнительные карты: света и направления, но здесь они разделены пополам.

Левая сторона сохраняет прямой свет, правая сторона сохраняет непрямой свет. Разница в том, что свет сохраняется как входящая интенсивность (освещение).

Эта информация позволяет использовать шейдеры, подобные шейдерам BRDF, которые обычно предназначены для освещения в в реальном времени .

В результате получается материал, подвергающийся воздействию непрямого света.

Двойные карты освещения ( Двойные карты освещения ) — разрешить использование отражающих поверхностей (зеркальных), карт нормалей (normalmapping).

Направленный использует в два раза больше памяти по сравнению с Ненаправленного и имеет более высокий стоимость затенения .

Направленный с зеркальным использует в два раза больше памяти по сравнению с Направленный .

Надеюсь на конструктивные комментарии, возможно я в чём-то ошибаюсь.

Буду признателен за ваш совет. Теги: #unity3d #lightmaping #шейдеры #unity

Вместе с данным постом часто просматривают: