Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Оптимальные настройки V.docx
Скачиваний:
36
Добавлен:
11.02.2015
Размер:
11.55 Mб
Скачать

Беспристрастный Brute force gi

Brute force GI – базовый алгоритм, устанавливающий фиксированное количество вторичных лучей, отраженных от точки в сцене после попадания в нее первичного луча от источника света. Если Вы помните, ранее было рассмотрено, что луч от источника света попадает на поверхность объекта сцены и разбивается на множество дополнительных лучей, которые, в свою, очередь бомбардируют другие объекты сцены (вспомните пример с одуванчиком). Разумеется, что на чем большее количество отраженных диффузных лучей вторичного освещения будет разбит луч первичного света, тем больше деталей и меньше шума будет на финальном изображении.

Subdivs – параметр, банально определяющий количество вторичных лучей, на которое будет разбит каждый луч от первичного источника света, попавший на объект сцены. Числовое значение параметра Subdivs – это не буквально количество лучей, на которое будет разбит каждый луч от первичного источника света. Реальное число лучей будет равняться квадрату этого числа. То есть, если Subdivs равно 2, то это значит, что первичный луч будет разбит на четыре вторичных луча, если равно 4, то первичный луч будет разбит на шестнадцать вторичных и так далее.

Secondary bounces – величина, задающая, какое количество раз будут отражаться лучи дополнительных отскоков. Он активен, только если Brute force алгоритм установлен как алгоритм просчета Secondary bounces в выпадающем списке GI engine, так как именно в этом случае он будет просчитывать нужное количество переотражений. Если Brute force установлен как Primary GI engine, то Secondary bounces параметр будет неактивным.

Алгоритм Brute force не имеет адаптивности и попросту просчитывает GI для каждого пикселя финального изображения сцены, в не зависимости от ее сложности, цветов и детализации объектов. Тем самым он расходует одинаковое количество вычислительных ресурсов, как в заметных, так и в маловажных участках сцены. Совсем не странно почему он был назван грубой силой :) Также хочется отметить, что Brute force это прямой расчет по методу Quasi-Monte Carlo (QMC) и именно так он назывался в ранних версиях V-Ray, что иногда вызывало путаницу, когда 3d визуализаторы долго искали в новом интерфейсе V-Ray алгоритм Quasi-Monte Carlo GI.

Грубая сила этого алгоритма весьма иррациональна, ее использование приводит к чудовищным срокам расчета даже несложных сцен при адекватном уровне качества. Поэтому его не стоит номинально использовать в универсальных настройках V-Ray как рендер-движок ни первичных, ни вторичных отскоков. Его использование оправданно лишь в особых ситуациях, когда остальные алгоритмы, из-за своей адаптивности не могут справиться с просчетом мелких деталей в сцене, но об этом позже.

Адаптивный Irradiance map

Irradiance map – это адаптивный алгоритм просчета отскоков глобального освещения. Основная особенность его работы заключается в выявлении наиболее значимых детализированных зон визуализируемой сцены, вычислении в них GI и игнорировании менее важных зон, с последующим заполнением информации о GI в них путем интерполяции информации из уже просчитанных важных зон.

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

Пред Вами та тестовая сцена, которая была использована в предыдущем уроке о GI, с той же геометрией и тем же первичным освещением, что и ранее. Для наглядности из материалов сцены удалены все текстуры, дабы не мешать обзору Irradiance map. Внимательно посмотрите на зоны наибольшего скопления белых точек. Это внутренние углы помещения, скругленные углы ChamferBox и места на близко расположенных друг к другу частях разных объектов, в частности на стороне сферы, обращенной к кубу, а также на зоне соприкосновения куба с лицевой стеной. Эти зоны имеют наибольшую важность в получении красивого детализированного вторичного освещения.

Именно совокупностью этих точек и является карта Irradiance map, которую мы и наблюдаем на изображении. Данные точки содержат информацию о цвете и яркости GI в этих зонах. Остальная часть изображения заполнена серым цветом. Серые зоны на Irradiance map это части сцены, где Irradiance map не содержит информацию о GI. Однако это полностью компенсируется интерполяцией между уже вычисленными точками Irradiance map. Другими словами, Irradiance map вычисляет наиболее важные зоны, просчитывая лишь их, после чего недостающую информацию о не просчитанных зонах попросту компенсирует интерполяцией, взяв данные о цвете и яркости из уже имеющихся.

Вполне очевидно, в чем заключается адаптивность Irradiance map. В отличие от Brute force (BF), Irradiance map (IM) не просчитывает каждый пиксель сцены. Он просчитывает лишь важные ее зоны, за счет чего происходит весьма существенная экономия вычислительных ресурсов.

Алгоритм Irradiance map строит трехмерную карту точек, содержащих информацию о GI точно на поверхности объектов сцены. В объеме карта Irradiance map этой сцены выглядит следующим образом:

Если посмотреть на показанные выше второй и третий скриншоты специальной утилиты Irradiance map viewer, то отчетливо видно не только факт трехмерности Irradiance map, но и ее зависимость от вида из камеры, через которую происходит визуализация сцены. В частности, сразу же бросается в глаза отсутствие точек GI на невидных в кадре камеры частях куба и на той части помещения, которая находится за ней.

В IM "прощупывание" важных мест сцены, в которых ведется просчет GI, реализовано очень элегантным образом. Оно использует концепцию субсэмплирования, рассмотренную ранее в первом уроке серии уроков оптимальных настроек V-Ray. Для начала, GI всей сцены просчитывается в минимальном разрешении, которое обычно меньше разрешения рендеринга, точно также не адаптивно, как и BF алгоритмом. После чего, из полученных данных выбираются наиболее важные, то есть вычисляются те самые зоны, где следует вести более точный просчет. И начинается просчет в следующем по величине разрешении, но лишь в требуемых зонах. Эта процедура поэтапно повторяется несколько раз, каждый раз увеличивая разрешение, и так, пока не достигнет максимально установленного разрешения просчета IM. Минимальное и максимальное разрешение просчета IM указывается в ее параметрах. Шаг просчетов отличается вдвое большим или вдвое меньшим значением разрешения, то есть в четыре раза по площади изображения в пикселях. Например, при разрешении рендеринга 800 на 450 пикселей, следующий шаг субсэмплирования это 400 на 225, следующий – 200 на 113 и так далее. Стоит отметить, что IM позволяет использовать как субсэмплирование, так и суперсэмплирование. То есть карта IM может быть просчитана как на меньших, чем разрешение рендеринга, так и на больших, в четное количество раз, разрешениях.

Каждая фаза просчета GI называется pass, т.е. проход. Фазы просчетов, с помощью которых происходит определение важных зон, называются Prepass, т.е. предпроход. Прогресс просчета предпроходов, их общее количество и то, какой предпроход вычисляется в данный момент можно наблюдать в системном окне Rendering, появляющемся после старта рендеринга.

Давайте посмотрим, как выглядит просчет IM на примере четырех предпроходов.

В этом примере максимальным разрешением просчета IM является разрешение 800 на 450, равное разрешению рендеринга самого финального изображения. Для определения важных зон, сначала используются три субсэмплированных предпрохода на меньших разрешениях: 100 на 56 в первом предпроходе, 200 на 113 во втором предпроходе, и 400 на 225 в третьем. Вместе с финальным четвертым предпроходом выходит всего четыре предпрохода IM.

Обратите внимание на первый предпроход. Можно заметить, что в нем не выделены никакие зоны, все изображение просчитано одинаково с одинаковой точностью, так же, как просчитывает алгоритм BF. Совершенно иную картину можно наблюдать уже на третьем и, особенно, на последнем четвертом предпроходе. Сразу же становится видно, как алгоритм IM выделил важные детали сцены, усыпав их сэмплами GI, и существенно проредил плоские не детализированные поверхности. Неважными оказались такие части, как плоскость стен, плоская грань куба и т.д. На них осталось лишь по несколько точек, которые позже будут просто интерполированы алгоритмом IM между собой, заполнив пустые зоны. Также сразу же можно заметить, что размер семплов относительно всего изображения на разных предпроходах – разный, т.к. чем больше разрешение просчета IM, тем меньше величина одного семпла, соответственно – больше деталей и точнее IM.

Несложно догадаться, что карта GI, просчитанная IM даже на полном финальном разрешении без предварительных предпроходов, а значит без вычисления важных зон, будет так же груба и не адаптивна, как и в случае просчета GI с помощью алгоритма BF. Время ее вычисления конечно же будет почти столь же долгим, как и в случае с BF.

На этом изображении показана IM карта, просчитанная одним предпроходом сразу же в финальном разрешении. Глядя на нее, кажется, что тут семплов нет вообще. Однако все как раз наоборот. Все, что сейчас видно на этом изображении, это и есть семплы, плотно-плотно усеявшие каждый пиксель финального разрешения. Так, карта IM не сосредоточенна в каких-то важных зонах, она полностью покрывает все объекты сцены, видимые из данной камеры. Получение столь плотной карты влечет за собой столь же долгие вычисления. В частности, все четыре предпрохода в первом случае были просчитаны за 5 минут, в то время как просчет одного лишь прохода во втором случае потребовало 50 минут вычислительного времени. Разница более чем очевидна. Не стоит заблуждаться, что во втором случае качество финального изображения будет существенно лучше, чем в первом, в виду более насыщенной IM. Дело в том, что на маловажных зонах сцены, представляющих из себя по большей части плоские одноцветные поверхности, цвет GI будет однородный и без деталей в обоих случаях. Однако в важных зонах сцены, по сути, что просчитанная с адаптивностью, что просчитанная без предпроходаов IM, одинаково детализированы. Именно поэтому нет никакого смысла тратить в десять раз больше вычислительных ресурсов на просчет однородных плоских поверхностей и получить по сути тот же результат. Думаем, теперь масштаб экономии времени при расчете IM, по отношению к времени расчета BF, вполне очевиден.

Когда карта важных точек, содержащих информацию о цвете GI, просчитана, происходит интерполяция недостающих точек GI. Затем, в каждой точке, как и в случае с BF, просчитывается фиксированное количество лучей вторичного освещения по полусфере, как это было описано в предыдущем уроке.