Оптимизация рендера в V-Ray

Комментарий из 2023 — перестаньте страдать с 3ds Max, вот почему. Далее идёт оригинальная статья

В этом уроке мы залезем в дебри V-Ray и разберём его самые тонкие настройки, чтобы научиться оптимизировать рендер и получить качественную картинку за меньшее время.

vray_optimization_header

Введение


Этот урок создан чтобы охватить и разъяснить весь процесс оптимизации настроек V-Ray для получения качественного рендера за меньшее время.

Часто возникает много путаницы вокруг термина V-Ray sampling и какие у него «идеальные» настройки. Большинство визуализаторов создают «Универсальные настройки V-Ray» в которых ставят в Image Sampler (Anti-Aliasing, или AA) Max subdives очень высокое значение, порядка 50 лил даже 100, затем просто понижают значение noise threshold пока рендер не станет достаточно чистым, думая, что это лучший способ добиться оптимального соотношения качество/скорость. Но имея небольшо представление, что же находится под капотом V-Ray и как он, на самом деле, работает, вы можете получить картинку лучше при меньшем времени рендера. Способ, который я опишу в этой статье, в сравнении с самым распространённым, который я описал выше, в некоторых сценах может сэкономить ваше время рендера в 3 — 13 раз.

Что ж, сначала рассмотрим некоторые базовые вещи о том, как работает сам рендер и V-Ray sampling. Дальше мы перейдём к конкретной сцене чтобы продемонстрировать, как оптимизировать рендер чтобы он был быстрее, качественнее и чётче. Затем мы научимся выявлять различные виды шума, которые могут быть в сцене. И в конце я покажу пошаговую процедуру оптимизации любой сцены чтобы получить идеальный баланс между качеством и скоростью.

Если вы уже знаете, ка устроен V-Ray, нажмите сюда чтоб сразу перейти к пошаговой процедуре оптимизации.

RAYTRACING (трассировка лучей)


Когда начинается рендер, лучи выстреливают из камеры в сцену чтобы собрать информацию о геометрии в сцене, которая будет видна на финальной картинке. Эти лучи направлены от камеры, называются Primary Rays (иногда Camera Rays или Eye Rays) и настраиваются в Image Sampler (также известен, как Anti-Aliasing или AA).

В то время, как Primary Ray пересекаются с геометрией сцены, дополнительные лучи выстреливаются из этих точек пресечения в другие области сцены чтобы получить информацию об освещении, тенях, отражённом освещении (GI), отражениях, преломлениях, подповерхностном рассеивании (SSS) и пр. Эти дополнительные лучи называются Secondary Rays и настраиваются в V-Ray’s DMC Sampler.

vray_optimization_figure_01Рисунок 1. Упрощённая схема трассировки лучей (raytracing): Primary Rays выстреливают из камеры в сцену, пересекаются с объектами сцены и распространяют Secondary Rays в другие части сцены.

С этого момента мы будем называть «Rays», как «Samples», потому что цель луча (Ray) — получить информацию о сцене «Sample» (от англ. — образец). Rays = Samples.

Чтобы понять, что же происходит в сцене, необходимо выпустить кучу Primary и Secondary Samples. Чем больше Samples, тем больше V-Ray получает информации о сцене, соответственно, тем качественнее будет рендер и тем меньше в нём будет шума. Как видите, шум — причина нехватки информации о сцене. Если в сцене есть шум, значит у V-Ray не было возможности собрать достаточно информации о сцене. Под итог: чтобы убрать шум, вам необходимо предоставить V-Ray больше информации, а чтобы предоставить рендеру больше информации о сцене, нужно сделать значение Samples больше.

Количество Primary Samples, регулируется значениями Min Subdivs, Max Subdivs, и Color Threshold в параметрах Image Sampler. Количество Secondary Samples регулируется значением Subdivs индивидуально в каждом источнике света, GI, материале и в настройках Noise Threshold значением DMC Sampler. (Noise Threshold в Maya называется Adaptive Threshold)

Итак, повторим основные термины:

Ray = Sample

Primary Samples = samples настраиваемые V-Ray’s Image Sampler (также известны, как Anti-Aliasing или AA), созданы для определения геометрии сцены и сбора такой информации, как: текстуры, глубина резкости (DOF), и размытие в движении).

Secondary Samples = samples cнастраиваемые V-Ray’s DMC Sampler, созданы для сбора информации об освещении, GI, тенях, отражениях, преломлениях и SSS

Noise = шум или недостаток информации

Subdivs = квадратный корень из реального количества Samples. Subdivs^2 = Samples. Пример: 8 Subdivs = 64 Samples. (8^2 = 64)

В этом уроке мы рассмотрим, как лучше всего использовать эти Primary и Secondary Samples, что бы получить изображение без шумов в короткий промежуток времени.

Определение THE SAMPLERATE RENDER ELEMENT


The SampleRate render element — один из наиболее важных инструментов, которые мы будем использовать для оптимизации рендера. Это способ в V-Ray, показать нам, что Image Sampler (AA) делает в конкретном пикселе. Он делает это, помечая каждый пиксель цветом, соответствующим количеству Primary Samples (AA) в нём. Это изображение можно глянуть в SampleRate render element)

*Голубой цвет означает небольшое количество Primary Samples (AA) в этом пикселе.

*Зелёный цвет означает среднее количество Primary Samples (AA) в этом пикселе.

*Красный цвет означает большое количество Primary Samples (AA) в этом пикселе.

vray_optimization_figure_02Рисунок 2. The SampleRate render element (справа) показывает, сколько Primary Samples было задействовано в каждом пикселе рендера (слева)

Итак, для сцены с Image Sampler (AA) 1 min и 10 max Subdivs (1 min и 100max Primary Samples):

*Голубой цвет означает 1 Primary Samples (AA) в этом пикселе.

*Зелёный цвет означает 50 Primary Samples (AA) в этом пикселе.

*Красный цвет означает 100 Primary Samples (AA) в этом пикселе.

И, для сцены с Image Sampler (AA) 1 min и 100 max Subdivs (1 min и 10000max Primary Samples):

*Голубой цвет означает 1 Primary Samples (AA) в этом пикселе.

*Зелёный цвет означает 5000 Primary Samples (AA) в этом пикселе.

*Красный цвет означает 10000 Primary Samples (AA) в этом пикселе.

Сцена пример — как же работает V-RAY?


В этом уроке мы будем работать с простой сценой, состоящей из: плоскости с несколькими сферами на ней, нескольких разнообразных простых материалов (включая diffuse, glossy reflection, glossy refraction, и SSS), два объёмных источника света (area light) и domelight с HDRI. GI включено в режиме Brute Force + Light Cache. Этот файл вы можете скачать здесь.

Мы начнём с базовых настроек рендера со следующими значениями:

  • Image Sampler (AA) = 1min & 8max Subdivs.
  • Lights, GI, и Materials все 8 Subdivs.
  • Noise Threshold s= 0.01.
  • Все остальные настройки также оставляем по умолчанию

vray_optimization_figure_03Рисунок 3. Базовый рендер.
1min & 8max Subdivs = Image Sampler (AA)
8 Subdivs = Lights, GI и все материалы

Теперь давайте внимательно посмотрим, что же происходит при базовом рендере. Через настройки рендера, вы как бы говорите рендеру:

«Я разрешаю тебе использовать до 64 (8 Subdivs) Primary Samples (AA) в каждом пикселе чтобы ты понял, что там происходит в сцене и не делал много шума, на сколько это позволяет noise threshold… Но Для каждого из этих Primary Samples, ты можешь создать только 1 Secondary Sample чтобы понять, чё там по свету, теням, GI и материалам.»

Возможно, у вас возникает вопрос: «Стопе, всего один Secondary Sample для света, GI и всех материалов? Да ты гонишь! Должно же быть 64 Samples (8 Subdivs), мы же столько указывали?». Что ж, важно отметить, что ИС (источники света), GI и материалы имеют значение 64 Samples (8 Subdives) каждый — V-Ray делит это значение на AA Max Samples в вашей сцене. Несмотря на значение в 64 Samples для света и материалов, вы должны иметь ввиду, что это значение делится на значение AA Max = 64 Samples (8 Subdivs), в результате, мы имеем всего один Secondary Sample для света, GI и материалов. (64 Secondary Samples / 64 Primary Samples = 1 Secondary Sample).

Причина, по которой V-Ray это делает — внутренняя формула, установленная для удержания баланса этих двух значений. Логика разработчиков следующая: чем больше Primary Samples, тем прпорционально меньше Secondary Samples требуется чтобы понять, что происходит в сцене (скоро мы убедимся, что это не всегда справедливо). Эта балансировка между Image Sampler и DMC Sampler, по началу, может быть вам не понятна, но главное. вынести следующее: когда вы увеличиваете значение Image Sampler (AA), V-Ray старается компенсировать, пропорциональным уменьшением значение DMC Sampler. Позднее, если вы ещё не уснули, вы можете оценить DMC Calculator, который написал автор этой статьи, которую я так старательно перевожу в 5:02 утра, почти не пользуясь словарём =) Спасибо гимназии №32 в г. Иваново, где я получал 8 уроков английского в неделю.

И так, вернёмся к нашим попугаям:

V-Ray  отрендерил на столько классно, на сколько мог, но меня настораживает громадное количество красных пикселей в SampleRate render element). Вот что он нам этим говорит:

«Я не смог выяснить, что же происходит в сцене, тк ты меня сильно ограничил в noise threshold. Я долго использовал Primary Samples со всего одним Secondary Sample но это не дало мне достаточно информации об этих областях.»

Если мы посмотрим на рендер, мы заметим, что в то время как объекты (края объектов) выглядят достаточно неплохо, всёже существуют шумные учаски на изображении в местах теней и отражений. Мы получили шумный базовый рендер и у нас есть два варианта чтобы уменьшить шум чтобы получить желаемое качество.

* Вариант 1 — увеличить AA Max Subdivs — чтобы V-Ray лучше увидел сцену, но снова со всего одним Secondary Sample для света, GI и материалов.

* Вариант 2 — Увеличить количество Subdivs в материалах, свете и GI. Сказать V-Ray, чтобы он оставил количество Primary Samples, но вместо этого, позволить ему использовать больше Secondary Samples.

Сцена пример — вариант 1 — увеличение значения AA MAX SUBDIVS


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

  • Мы увеличиваем Image Sampler (AA) 1min & 100max Subdivs.
  • Оставляем ИС, GI и материалы по 8 Subdivs.
  • Понижаем Noise Threshold до 0.005 чтобы сказать V-Ray что мы хотим рендер без шума.

vray_optimization_figure_04Рисунок 4. Вариант 1 — увеличение количества сабдивов в AA Max
1min & 100max Subdivs = Image Sampler (AA)
8 Subdivs = BC, GI и все материалы
0.005 = Noise Threshold.

Давайте разберёмся, что же происходит при таких настройках. Выставив такие настройки мы говорим V-Ray:

«Я разрешаю тебе использовать до 10 000 (100 subdivs) Primary Samples (AA) на пиксель чтобы понять, что происходит в сцене и минимизировать шум, на сколько это возможно при заданном Noise Threshold. Но, для каждого Primary Samples, ты можешь создать только по одному Secondary Sample для того что бы понять, что в сцене со светом, GI и материалами.»

Вспоминаем, что т.к. каждый ИС, материал и GI имеют по 64 Samples (8 Subdivs), V-Ray делит это значение на AA Max Samples. Несмотря на значение в 64 Samples, оно делится на AA Max 10 000 Samples (100 Subdivs), в результате, мы имеем минимальное количество — всего п одному Secondary Sample для света, GI и материалов. (64 Secondary Samples / 10000 Primary Samples = 1 Secondary Sample).

V-ray заканчивает просчёт картинки и говорит:

«Я мог выяснить всё, что происходит в сцене для того качества и чистоты картинки, который ты указал. Но, чтобы прощупать сцену, мне пришлось местами использовать аж 10000 Primary Samples с 1 Secondary Samples на свет, GI и материалы.»

Мы смотрим на Вариант 1 и видим, что количество шума значительно уменьшилось, в сравнении с базовым рендером. Время рендеры увеличилось до 11 мин 44 мек (в 9,8 раз дольше). Зато мы не имеем шума. Большинство людей на этом моменте посчитают что это лучший результат, который можно получить и что, вроде, готово.

Но что, если мы разберём вариант 2, о котором говорили ранее? Несмотря на увеличение AA Max Subdivs, что произойдёт, если мы, вместо этого увеличим значения сабдивов в ИС, GI и материалах. Давайте выясним.

Сцена пример — вариант 2 — увеличение количества сабдивов в ИС, GI и материалах


Сейчас давайте попробуем кое-что новенькое. Давайте поставим значение Primary Samples такм, каким оно было в базовых настройках, но добавим Secondary Samples.

  • Мы оставляем Image Sampler (AA) на базовых параметрах 1min & 8max Subdivs.
  • Увеличиваем количество сабдивов в ИС, GI и материалах до 80 Subdivs каждый.
  • Оставляем Noise Threshold 0.01

vray_optimization_figure_05Рисунок 5. Вариант 2 — увлеченно количество сабдивов в ИС, GI и материалах.
1min & 8max Subdivs = Image Sampler (AA)
80 Subdivs = Lights, GI, and Materials each.
0.01 = Noise Threshold.

И так, давайте разберём, что же происходит во втором варианте. Устанавливая такие параметры рендера, вы как-бы говорите V-Ray:

«Я разрешаю тебе использовать до 64 (8 subdivs) Primary Samples (AA) на пиксель чтобы понять, что есть в сцене и до 100 Secondary Samples.»

Помним, что GI, материалы и свет это 64000 семплов (80 сабдивов) каждый. V-Ray автоматически делит каждое это значение исходя из AA Max Samples, установленного в вашей сцене. И несмотря на 64000 семплов, оно делится AA Max 64 семпла (8 сабдивов), и только 100 вторичных семплов для света, GI и материалов (для каждого). Secondary Samples / 64 Primary Samples = 100 Secondary Sample).

V-Ray заканчивает рендер и говорит:

«Я мог узнать, что происходит в сцене исходя их уровня качества noise threshold, который вы установили. По факту, большую часть времени, я должен был использовать все 64 Primary Samples на пиксель. И 100 Secondary Samples для света, материалов и ГИ.»

Мы видим, что шумы ушли, но время рендера увеличилось в 4,5 раза (4м 38с) в сравнении с базовым рендером.

Но если мы сравним с вариантом 1, мы увидим, что вариант 2 дал нам результата чище и отрендерил в 2,2 раза быстрее.

vray_optimization_figure_06

Рисунок 06. Вариант 1 слева и вариант 2 справа. Внизу — увеличенное в 4 раза изображение, чтобы лучше видеть разницу в шумах.

Почему так? Почему, увеличение параметров DMC Sampler settings (свет / GI / материалы Subdivs) лучше, чем увеличение Sampler (AA)? Как результате — рендер быстрее и чище.

Как работает оптимизация


В базовом рендере мы видим, что грани объекта выглядят хорошо, шум преимущественно в отражениях и тенях. Если вы помните, что мы учили ранее: «Primary Samples (AA) сделаны для «прощупывания» основной геометрии сцены, текстур, DOF и motion blur в сцене. Тогда как Secondary Samples — «прощупывают» GI, свет, материалы и тени.»

И так, чтобы избавиться от шума, выбор между вариантом 1 и 2 — не лёгкая задача. Зачем использовать отвертку, чтобы сделать работу молотка? Image Sampler (AA) уже сделал то, для чего он был разработан, чтобы сделать — сделать геометрическую детализацию (края объектов) чистыми и бесшумными. Таким образом, вместо стрельбы кучей дополнительных Primary Samples (AA) в сцену, чтобы убрать шум, лучше добавить samples в DMC Sampler (свет / GI / Материалы Subdivs), пусть он делает то, для чего он был разработан  — убирает шум в тени, освещении, GI, отражениях и преломлениях. Вот наш ответ!

А теперь мы можем понять, почему «Универсальные V Ray-Настройки» 1мин и 100 max АА, как правило, не будут наиболее эффективным методом визуализации сцены — на самом деле он никогда не был предназначен быть наиболее эффективным методом! Универсальные настройки V-Ray были разработаны, чтобы сделать V-Ray доступным и легким для пользователей, которые не заботятся об оптимизации и не заморачивались, как V-Ray работает под капотом. Это просто способ поставить V-Ray на автопилоте. Это позволяет пользователю контролировать все качество рендеринга путем корректировки только одного параметра — noise threshold. Если слишком много шума в визуализации, просто понижаем noise threshold, и V-Ray будет держать стрельбы Primary Samples (AA) пока, наконец не достигает noise threshold.

Но мы можем ещё больше оптимизировать вариант 2! От 5мин 58с до 4мин 53с. При незначительном увеличении шума.

vray_optimization_figure_07

Рисунок 07. Вариант № 1. Cлева, и Вариант № 2 Рендер оптимизирован еще больше — справа. Скорость рендеринга увеличена в 2.7x!

Вот еще один пример оптимизации, на этот раз более ориентированный на производительность сцены.
Оптимизированная визуализация (справа) считается почти на 35% быстрее, чем универсальные настройки рендеринга (слева) при одновременном снижении шума и улучшении качество рендеринга. Также отметим, как отражения стали более точными — заметно на полу к концу коридора.

vray_optimization_figure_08

Рисунок 08.  «Универсальные V Ray-Настройки» слева, и оптимизированный рендер справа.

Продолжение следует…

Оптимизация рендера в V-Ray: 11 комментариев

  1. Отличный урок, продолжение будет приятным подарком.
    Кстати, прикрутите RSS у вас толковые статьи, с радостью читал бы новые

  2. Присоединяюсь, жду продолжения.
    Делаю в Maya, но пояснения очень полезные!

  3. Статья бред. Время рендеринга при одинаковом качестве будет меньше, если выкрутить сабдивы на минимум а срез цвета на максимум. Да, пол картинки будет красной. Ну и что. АА сэмплер лучше борется с шумом, чем сабдивы на каждом элементе. Это факт.

    1. Хоть кто то усомнился в правильности, а то складывается ощуение, что все комментарии выше писали или боты или люди не понимающие о чем писали, единожды прочтя статью.

      1. как бы статья написана чуваком из Blur если ты знаешь что это такое, оригинал у Akin Bilgic. Мне кажеться что в блур не дураки сидят как бы чтоб такое писать ))

    1. в 2016, с приходом Corona Render, эта статья уже не актуальна. До перевести статью, руки не доходили.

Добавить комментарий для Эрик Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *