Раздел Perfomance. Настройки рендера в Corona.
Performance
Всем привет. Раздел Performance имеет следующий список свитков:
1.Global Illumination
2.Performance Settings
3. Development/Experimental Stuff
Global Illumination (GI) - если говорить простыми словами, это алгоритмы, которые позволяют получать имитацию более реалистичного света в наших с вами работах в трехмерной графике.
GI делиться на два движка:
- Primary solver (первичный движок(первичный GI))
- Secondary solver (вторичный движок (вторичный GI))
В Corona render Primary solver дает нам два значения:
- None (Biased) - это отсутствие GI и наличие прямого освещения при использовании источников света.
- Path Tracing - трассировка путей света(включен первичный GI). Если говорить простыми словами, он высчитывает первые отскоки света.
Заметка:
Если постараться процитировать corona render:
Path Tracing - это алгоритм рендеринга, который вычисляет конечное изображение путем отслеживания независимых путей света от камеры. В отличие от методов, которые отслеживают пути от источников света (photon mapping (метод фотонных карт), light tracing (трассировка лучей), или которые предварительно вычисляют и повторно используют пути света (irradiance caching, UHD cache, light cache), или которые вообще не отслеживают никаких путей (radiosity, большинство игровых движков).
И кто-то говорит, что он является аналогом виреевского Brute force. И если почитать о Brute force ссылка, то можно на каком начальном этапе согласиться, но в основе это два разных движка.
Secondery solver имеет своих парочку значений:
- None (biased) - отключен
- Path Tracing - трассировка путей света
- UHD Cache - предварительный вычисление и повторно использование пути света
В чем отличаются эти два направления в использовании:
Если взять комбинацию Path Tracing + Path Tracing - в данном варианте идет просчет света для каждой точки что делает его медленнее, но и картинка получается более качественная.
Если взять комбинацию Path Tracing + UHD Cache - эта комбинация является обратной стороной предыдущей. Так как идет средний просчёт точки от окружающих ее точек, а не как в первом варианте каждую точку.
Но не стоит забывать, что в рендере все индивидуально, и стоит исходить из ситуации:
Path Tracing + UHD Cache - более направлен для работы с интерьерами.
Он чаще используется:
- когда необходимо большое количество отскоков света, чтобы сделать пространство светлее;
- когда недостаточное количество прямого света в интерьере, и свет не добирается до большинства мест в глубине комнаты;
- когда вы хотите сделать просчет относительно быстрее.
Path Tracing + Path Tracing используется:
- для работы с экстерьерами, предметным рендерами, или при создании совсем простых сцен:
- когда очень много попадания прямого света по всей или большей части областей, без необходимости вторичных отскоков;
- для работы со сложными объектами (такими как, создание волос, или при работе с displacement) - во избежания артефактов.
Заметка:
Между Path Tracing и UHD Cache нет такого понимания хуже или лучше. Все индивидуально. Так как рендер при комбинации Path Tracing + Path Tracing - это рендер сделанный на базе проделанной работы и чисто самого движка. Он может быть более точным, более медленным рендером, и возможно более шумным в закрытых помещениях; Также знайте, что у него отсутствует пред просчет GI.
А Path Tracing + UHD Cache - дает нам дополнительный список - UHD Cache для дополнительных настроек.
Список UHD Cache
- Stiff frame - предназначен для статичного кадра
- Animation - для рендера в несколько кадров(движение камеры или объектов - для исключения мерцания в дальнейшем создании ролика)
- Precision - это значение отвечает за качество UHD Cache
Изначальное значение в единицу является хорошим показателем, по желанию конечно можно увеличить, так же как и уменьшить.
В случае с увеличением - стадия просчета становиться более точная и дольше; а в случае уменьшения менее точная, но более быстрая. Фанатически завышать высокие значения не стоит - так как и время просчета в разы будет дольше.
- Save/Load - раздел сохранения загрузки.
В сцене где есть движущийся объект или к примеру идет замена света, лучше начинать просчет с 0 выбирая Calculate from scratch в Precomputation. Также не забываем выбрать раздел Animation.
И в сцене, где двигается камера, но сцена не имеет движущегося объекта или действий со светом, есть возможность исключить повторный просчет. Но не стоит забывать, что при движении камеры идет само движение объекта-, а значит надо будет делать просчет(исключением есть кадры пред перехода анимации, где объекты не двигаются).
Дальше, что бы сохранить Cache и использовать в аналогичном последующем кадре, или кадрах не имеющих анимацию, ставим в “After render” - “Save to file”. И ниже в разделе File name сохраняем путь файла.
Такой настройкой мы получаем возможность сделать файл-рендера пред просчета. (Дальше запускается рендер, и стоит остановить рендер в тот момент, когда началась уже просчитываться 1 Pass). И мы получаем файл в папку куда мы его сохраняли - файл в формате .uhd - это и будет файл Cache.
И что бы его в дальнейшем использовать, нужно будет выбрать Load from file в Precomputation. И путь файла оставить тем же для его подгрузки.
Список Performance Settings (Настройки производительности)
Рассмотрим Lock sampling pattern и New light solver.
Lock sampling pattern - блокировка семплов на месте как в статичном рендере, так и в анимации. В случае выключенной функции рисунок семплов в рендерах будет разный. Стандартно предлагается включенный вариант, в в большинстве работ включенным он и остается, а дальше каждый исходит от необходимости.
New light solver - это не обязательный алгоритм от corona render, позволяющий ускорить время рендера. В более новых версиях он имеет название Adaptive light solver.
Эта функция создана для возможности сократить время рендера, как говорит производитель - особенно в таких сценах, как:
- которые имеют большое количество источников света;
- где источники света имеют сложные формы;
- в сценах со сложным сценарием света (например, есть сцены, где объекты закрывают источник света, или блокируя его путь от источника к камере).
Заметка:
Перед тем как переходить к разделу Sampling balance важно разобраться, что означает слово Sampling, тогда легче будет понять, о чем будет идти разговор в разделе Sampling balance.
Работа с визуализацией, это наши действия, которые направлены на создание какой-то виртуальной сцены, или на создание сцены имеющей реалистичное изображение. В процессе мы пытаемся воссоздать освещение, которое совместно с многими другими свойствами, например такими, как материалы, или значение отражения, и т.д. дают нам нужным результат.
И, чтобы определить цвет каждого пикселя изображения - программа, благодаря свету, собирает всю ей видимую информацию из сцены - с геометрии, с материалов (шейдеров), с разных переходов цветов, света, тени, отражений за счет пути источников света от его начала - источника к его потери свойства на дистанции т.д. И это и есть Sampling.
Если говорить “чуточку” научней, не уходя в переводы и википедию:
Sampling - отслеживание нескольких случайных путей переноса света, которые соединяют объекты, видимые через пиксель, с источниками света
И, чтобы проделать данное действие и получить качественное изображение в значительной степени, программа использует Sample (частицы).
Sample - это, грубо говоря, частицы, которые в процессе рендера исходят от камеры на объект или пространство, которое мы рендерим, и передают камере полученную от них информацию.
По сути мы с ними уже пересекались выше в UHD Cache, и в Lock sampling pattern.
Раздел Sampling balance
Исходя из заметки выше, мы теперь можем понять, что данный раздел направлен на сбалансирование наших семплов в сцене для получения баланса: между качеством и временем рендера, исходя от количества сэмплов в сцене и самой загруженности сцены.
GI vs. AA balance (Глобальное освещение против сглаживания) - Количество GI сэмплов на каждый сэмпл сглаживания. Стандартно стоит 16, а значит 16 семплов на 1 сэмпл сглаживания.
Light Samples Multiplier - (Множитель сэмплов света) - количество сэмплов прямого освещения на каждый GI сэмпл. Так как это множитель((х2) то получается на стандартных 16 сэмплов, GI мы получаем 32 сэмпла прямого света на каждый пиксель.
Если кто-то хочет углубиться в детали перевода и картинок, он может перейти по ссылке на официальный сайт corona render и посмотреть их описание с более научным объяснением.
Увеличивая эти значения мы получаем более чистое GI освещение или более чистый прямой свет при каждом проходе пасса, но за это мы платим временем рендера.
Конечно в обычных рендерах можно ничего не увеличивать, так как хватает и значений, установленных по умолчанию, а просто поставить нужный лимит % шума. Но, к примеру, если мы рендерим при гамме 1, а не как обычно, 2.2, то лучше множители увеличить на х2, так как снижая гамму мы получаем более насыщенную по свету и более шумную картинку.
И стоит обратить внимание, что сама corona не рекомендует снижать значение ниже 2 и выше 64 (GI vs. AA balance).
Данные функции позволяют не глобально, но понизить какую то часть нагрузки при тестовых рендерах или при настройке сцены и увеличить немного саму скорость рендера, если понижаем.
Так же важно знать, что низкие значения GI vs. AA balance позволяют получать Motion blur (размытие), Anti-aliasing (сглаживание), Depth of field (глубина резкости) более чистыми и быстрее.
Заметка:
Суть баланса GI vs AA заключается в том, что в конечном итоге мы получаем изображение с почти одинаковым качеством независимо от используемых настроек.
GI - глобальное освещение;
АА- сглаживание;
Выше GI vs AA = лучше GI, хуже AA
Ниже GI vs AA = хуже GI, лучше AA
Light Samples Multipler - в основном, видимый в области теней.
Speed vs. Accuracy balance (баланс скорости против точности).
Max Sample Intensity (максимальная яркость сэмпла) - функция, которая отвечает за максимальную яркость вторичного сэмпла GI. И является балансом между производительностью и физической точностью.
Заметка:
Max Sample Intensity:
- более низкие значения от стандартных, дают меньше шума, но отражения света выходят темнее, и считается менее физ. корректным”
- более высокие значения от стандартных, дают ярче отражения света,
более правильное отражение, но и создают больше шума.
Стандартное значение в 20 можно использовать в основном во всех сценах, а значения выше или ниже, являются более индивидуальными.
Так же можно отметить, что значение 0 дает более яркое и реалистичное отражение, но тогда появляются некие огоньки в отражении.
Max ray depth (максимальная глубина лучей) - данная функция управляет максимальным количеством GI отскоков, а так же отражений и преломлений.
Стандартное значение 25, говорит о том что на каждый луч допускает 25 пресечений. Условное понимание одного пресечения для твердого объекта, когда луч попадает на поверхность объекта, и когда он выходит из объекта. Кто хочет более детально углубиться в цифры, может пройти по ссылки на официальный сайт corona render и ознакомиться более подробно с цифрами.
Заметка:
Иногда многие встречались с такой проблемой, когда есть, к примеру сервант с дверцами из стекла, в нём большое количество прозрачной посуды, которая на рендере становиться темнее, и сзади за посудой зеркало, где отражение посуды становиться еще темнее. Или скажем, бокал, в нем вода и какой-то еще прозрачный объект, который становиться темнее… В таких ситуациях значения в этой функции лучше повышать, тогда, и отражения, и объекты станут светлее. А если надо наоборот, темнее, то понижаем относительно стандартного значения.
Displace (Смещения)
Screen size (px) - отвечает за качество карт высот (смещения). Чем ниже значение, тем меньше пикселизация, и лучше детализация и качество displace. Но так же, и дольше рендер и больше нагрузка на комп.
World size (units) - аналогична Screen size (px), только мировые единицы измерения.
Interactive rendering (интерактивный рендер).
Interactive rendering - данная функция относиться к интерактивному рендеру, которая позволяет ограничить количество просчетов пассов Max passes в самом интерактивном рендере.
Значение 0 - позволяет в интерактивном рендере - постоянно рендерить (в каком-то понимании без остановки);
Значение выше 0, к примеру, 1-5-20-любое - дает понять программе то, что когда посчитает данное значение пасов интерактивный рендер остановиться.
Force Path Tracing - включает во вторичном движке принудительный просчет с помощью Force Path Tracing, даже если там выбран (стоит) UHD Cache. Данная функция может влиять на прирост скорости интерактивного рендера за счет экономии времени на предварительный просчет UHD кеша.Но все индивидуально от сцены, так как вспоминая разницу между Force Path Tracing и UHD Cache может выйти и наоборот, замедление рендера.
Fast preview denoise during render - при наличии галочки происходит быстрое шумоподавление при интерактивном рендере. Он позволяет практически мгновенно подавлять шумы, но минусом, как любого денойзера, есть потеря деталей, размытость (но для настроек сцены можно использовать, так как это ускоряет просчет пасов в интерактиве).
Обширной информации по данному пункту на официальном сайте нет, но можно более детально почитать на другом портале пройдя по ссылке, где автор углубился в данную тему (для тех, кому интересны цифры).
Список Development/Experimental Stuff (Список разработки / Экспериментальный материал)- я подумала и решила вынести в отдельный пост, так как он появляется при включении галочки Enable devel/debug mode в разделе system - corona system setting, и данный раздел более направлен на системную работу corona render.