суббота, 26 сентября 2015 г.

Unbiased rendering (рендеринг без допущений)

В компьютерной графике, рендеринг без допущений относится к технике рендеринга, которая не вносит в расчет систематических ошибок, предположений или погрешностей. Изображение получается таким, каким должно быть в природе, а рендер не имеет настроек качества поверхностей либо источников света.
Изображение отрендерено с помощью Maxwell Render.

Начнем с плохого
Когда на свет появились анбиасы, они были плохо оптимизированы, и железо было намного слабее. Даже четырехядерники были редкостью, по крайней мере на просторах СНГ. Многие дизайнеры отказались от подобных рендеров в виду того, что приходилось слишком долго ждать, пока уйдет шум с картинки. Многим профессионалам гораздо проще настроить глобальное освещение в Vray и сделать постобработку в Фотошопе в целом за 2-3 часа, чем нажать кнопку «render» в Maxwell и ждать приемлемого качества, скажем, 8 (и больше) часов. Иногда шум от какого-нибудь преломления не хотел сходить сутками.
И что в них хорошего?
Физически точные эффекты:
— некоторые рендеры поддерживают даже дисперсию;
— мягкие тени, реалистичные отражения, в общем, все как в жизни.
Все эти эффекты мы видим с первых секунд рендеринга.
Время рендеринга мало зависит от количества треугольников, это дает возможность не экономить ресурсы на их количестве.
Плюс к тому, железо на месте не стоит, производительность процессоров понемногу растет, и что более интересно, с развитием технологии вычислений общего назначения на видеокартах (GPGPU), начали появляться рендеры, задействующие для вычислений шейдерные ядра графических процессоров. Да и сами рендеры стали выдавать лучшую картинку при тех же вычислительных затратах.

Посмотрим же
как выглядит процесс рендеринга:
Core i5 2500 3.3GHz, Maxwell Render 2.6, 400k треугольников, собственноручно созданная в 3ds Max модель.
В основе анбиас рендеров лежит трассировка пути (Path Tracing) с различными видами оптимизации.
(Может, некоторые посетители заметили, что посты о трассировке пути на GPU я уже публиковал и публиковал. Но решил охватить тему глубже и обширнее.)
***
АЛГОРИТМ
Path Tracing (PT) основан на интегрировании методом Монте Карло. Чем больше семплов мы вычисляем на 1 пиксель (цвет пикселя = среднему арифметическому цветов всех семплов в этой точке) — тем точнее будет результат.
Семпл (sample) – это лучи, которые, пройдя путь отражений и преломлений через сцену (от камеры к источнику света) формирует цвет закрашиваемого пикселя в определенной точке изображения.
Превью изображения (шумную картинку) получаем практически сразу после вокселизации (о ней попозже).
Количество семплов не может быть бесконечным. “Идеальной” картинки никогда не будет, на это уйдет бесконечное количество времени. Рендеринг можно считать завершенным, если шум не различим на глаз. (обычно 1000 — 10000 семплов на пиксель, или 2-20 млрд семплов на изображение формата FullHD, в особых случаях — даже больше). Не следует, также, забывать, что небольшой шум придает изображению реалистичности.
Чем сложнее пути, которые проходят лучи — тем медленнее будет сходить шум.
Проще всего рендерить источники света. Лучи от источников света прямо попадают в камеру.
Сложнее рендерить объекты, освещенные прямыми лучами от источников света.
Еще сложнее — объекты, освещенные другим объектом, освещенным источником света.
И так далее. Эта особенность делает рендеринг интерьеров более затруднительным, чем экстерьеров, по той простой причине, что в интерьерах больше вычислительных ресурсов идет на расчет сложных путей.
Слева направо, прямой свет, первое отражение, второе отражение, третье отражение, результат.
Максимальная глубина отражений и преломлений в большинстве рендеров настраивается, и равно по умолчанию 8.
В некоторых (напр. Maxwell, Fry) глубина отражений ограничена гораздо большим числом, и зависит от параметров поверхностей. Например не имеет смысла вычислять большую глубину отражений для темно-коричневого стола, в то время, как для вычисления преломлений внутри бокала требуется увеличить глубину отражений.
Мягкие тени
Алгоритм получения мягких теней в PT достаточно прост. Луч, исходящий из камеры по направлению к точке на поверхности направляется в произвольное место (степень «произвольности» зависит от параметров данной поверхности) на источнике света.
В случае, если луч благополучно достиг источника света (зеленый) — то закрашиваем этот пиксель в нужный цвет.
В случае, если луч встретил на пути препятствие (красный) — то соответствующий пиксель на экране, не закрашивается.
(Кстати, алгоритм аналогичен рендерингу теней в рейтрейсинге)
Количество семплов на пиксель: слева — 1, справа — 5.
На примере для наглядности отсутствуют вторичные отражения.
Отражения и преломления
Отражательная функция зависит в первую очередь от степени шероховатости. А степень шероховатости определяется величиной погрешности отклонения от отраженного луча.
Если степень отклонения = 0 — то мы получаем зеркальное отражение. Если 1 (или 100%) — то падающий луч может отразиться в любом направлении. От 0 до 1 мы получаем отражение различной степени шероховатости.
Степень шероховатости поверхности (от 0 до 1).
Отражательная функция может быть более сложной (например, анизотропная поверхность).
Алгоритм шероховатости преломлений аналогичен отражениям, только луч проникает внутрь объекта, меняя свое направление в соответствии с показателем преломления этого объекта.
Материалы
Материалы, как правило, состоят из нескольких слоев.
Упрощенная модели поверхности пластика.
Во многих анбиас рендерах (Maxwell, Fry, Indigo, Lux) есть возможность рассчитывать настоящее подповерхностное рассеивание. Часть лучей проходит и рассеиваются под поверхностью, что вносит свою корректировку в результирующее изображение.
Глубина резкости
Известный в фотографии эффект достигается в PT практически без лишних вычислительных затрат.



Комментариев нет:

Отправить комментарий