Бесплатные 3D Модели

Рендерим быстрее: 11 настроек для ускорения рендера в Cycles

Эта статья является исчерпывающим руководством по увеличению скорости рендера в Blender при помощи мелких, но эффективных настроек, как в сцене, так и в настройках Cycles.


Все эти 11 хитростей прошли испытание на Nvidia Geforce GT 610 2 GB, которая является относительной старой видеокартой.

Все мои рендеры и работы были отрендерены с использованием этих хитростей. С тех пор как в Blender был представлен движок рендеринга Cycles, было отмечено резкое снижение скорости рендера.

Самая главная причина этого в том, что Cycles рендер просчитывает больше отскоков, что делает рендер более реалистичным. Легко винить во всём движок рендеринга, но знаете ли вы, что существуют некие умные настройки и оптимизация вашей сцены, а также настройки рендера Blender, которые способны значительно увеличить скорость рендеринга?

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

Я разделил 11 советов на 4 группы: Количество полигонов, Материалы и шейдеры, Рендеринг и освещение. Таким образом будет проще их понять и следовать им.

Количество полигонов

Модель с BlendSwap

Это вполне очевидно, ведь чаще всего, когда количество полигонов слишком высоко, вьюпорт Blender начинает тормозить.

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

1. Избавьтесь от лишних полигонов

Порой нет необходимости в большой детализации, но часто мы оставляем это без внимания. Это могут быть следующие ситуации:

  • Объект слишком далеко от камеры. (Техника LOD)
  • Или же близко к камере, но находится вне фокуса. (Глубина полей резкости)
  • Излишние уровни подразбиения
    • Высоко-детализированные части объекта, которые отвёрнуты от камеры

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

Эта техника пониженного количество деталей, в понимании низкого уровня подразбиения и количества полигонов, называется Уровень детализации (Level Of Details или LOD).

Эта техника очень распространена в игровой индустрии.

Вы можете воспользоваться вытекающими из этой техники методами, например уменьшение подразбиения на мешах, которые находится вне фокуса камеры/линз, при включённом режиме глубины полей резкости DOF (Depth Of Field).

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

Ниже маленький тест с модификатором decimate, и как далеко вы можете зайти:

(Первая модель высоко-полигональная, далее идут модели пропущенные через модификатор decimate, в каждом случае на 50% от предыдущего результата)

Модель кролика из Stanford 3D Models

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

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

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

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

2. Распределить расчёты при помощи Render Layers (Важно: Exclude Layers)

Когда нет возможности следовать предыдущим советам, вы можете использовать Render Layers, чтобы изолировать высоко-полигональные меши (машины, скульптуры, детализированные деревья, траву, и прочее)

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

Таким образом, когда у вас есть много высоко-полигональных объектов в сцене, вы можете разбить их на более мелкие части, при помощи render layers, и применить функцию Exclude Render Layers.

Это полностью изолирует определённые слои, когда этот render layer рендерится. Таким образом, Blender не нужно дальше просчитывать любые отражения и отскоки от объектов на исключённых слоях. Они также не занимают место в памяти.

Материалы и шейдеры

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

3. Читерство с объёмами и Volume Sampling

Шейдеры объёма используются не так часто как поверхностные, но это всё потому, что они отнимают много времени и памяти.

Следующая хитрость сэкономила более 10 часов во время рендеринга короткометражки Caminandes 3 (я не являюсь частью команды, но посоветовал эту хитрость одному художнику в Twitter). Полную концепцию вы можете найти здесь.

Хитрость заключается в том, чтобы использовать шейдер holdout, вместо чёрного шейдера emission для camera ray (настройка показана на картинке выше). Это лишь немного увеличит скорость рендеринга одного кадра, но в целом, для длительной анимации это сэкономит больше времени.

Вкладка Volume Sampling

Есть две настройки, которые можно изменить в целях изменения сэмплирования объёма: Step Size и Max Steps.

Step Size: Прямо-пропорциональна (Step Size ∝ скорость рендера). Понизьте размер шага (Step Size), и вы получите более точный и детализированный результат, но при этом значительно увеличится время рендеринга.

Max Steps: Обратно-пропорциональна (Max Steps ∝ 1/скорость рендера). Когда вы не можете найти компромисс между размерами шага, вы можете понизить максимальное число шагов (maximum steps), чтобы увеличить скорость рендеринга.

Другими словами, это количество отскоков, необходимое для расчёта перед тем как лучи света иссякнут. Это аналогично количеству отскоков в панели Light Path. Мы ещё поговорим об этом подробнее дальше в этой статье.

4. Избегаем стекла, прозрачности и SSS (и как исправить)

Шейдер стекла, который есть в Blender великолепен, но он просчитывает прохождение, преломление, отражение и поглощение лучей, что в то же время делает их максимально реалистичными. В большинстве случаев нам не нужно так много. Если вы используете стекло для окон, то вам будет достаточно смеси glossy BSDF и transparent BSDF, без потери точности.

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

Я так и не нашёл нормального способа справиться с этими двумя шейдерами на данный момент. Так что старайтесь избегать их.

Но убедитесь в правильности масштаба шейдера SSS. Он зависит от размера объекта. Излишне большие значения масштаба (scale) могут привести к шумному результату (что увеличит время рендеринга).

Визуализация

Даже если вы позаботились о материалах и количестве полигонов, всё ещё есть способы понизить время рендеринга.

5. Вкладка сэмплирования

Вкладка Sampling имеет две опции, path tracing и branched path tracing.

Главным образом мы пользуемся опцией path tracing. Но не все догадываются, что настройки branched path tracing являются по истине мощными.

Вы можете индивидуально определять количество сэмплов для каждого типа сэмплинга. Таким образом вы можете изменять настройки согласно приоритету в вашей сцене.

6. Отключите AO (Вместо него используйте проход AO)

Ambient Occlusion добавляет особый эффект на ваши рендеры. Но также это замедляет скорость рендера. Таким образом, вы можете отключить AO прямо в сцене, а вместо него использовать проход AO, который можно использовать, чтобы добиться более или менее такого же эффекта.

7. Вы используете все потоки? (Только для CPU)

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

Во вкладке performance у вас есть две опции для количества потоков: Auto-detect и Fixed.

По умолчанию включён auto-detect, что очень хорошо, главное убедитесь, что он распознал 100% ваших ядер CPU и они используются. Или лучше используйте опцию Fixed и вводите количество ядер вручную, если вы считаете, что не все ядра автоматически определяются.

С опцией Fixed вы также можете использовать меньшее количество ядер чем есть, чтобы оставшиеся ядра поддерживали производительность UI. (Используйте все только в чрезвычайном положении :-) )

Тем не менее данные настройки не действуют на количество тайлов рендеринга для GPU. Для рендеринга на GPU (графическом процессоре) у вас есть только один тайл за раз.

8. Размер тайла (производительность и качетсво)

CPU: Понижение размеров тайла для CPU ускоряет рендеринг.

GPU: Повышение размера тайла для GPU ускоряет рендеринг.

Но в любом случае, меньший размер тайла даёт большую стабильность. (Меньше торможений интерфейса во время рендеринга и меньше шансов вылета)

Вы также можете использовать аддон Auto-Tile Size от Грега Заала, чтобы автоматически рассчитать идеальный размер тайла (точное разрешение).

Освещение

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

9. Light Paths

На вкладке Light Path в настройках рендера, есть максимальное и минимальное количество отскоков (min и max bounces соответственно).

Более высокое число отскоков даёт больше реализма, но зачастую понижает скорость рендера. Если в вашем рендере выставлено больше количество семплов, вы можете понизить maximum и minimum bounces примерно до 4—5. Но, если вам надо использовать больше отскоков, вы должны понизить общее количество семплов рендеринга.

Ещё одна вещь, которую надо решить, это большая разница между минимальным и максимальным количеством отскоков, из-за которой ускоряется рендер, но при этом появляется больше шума.

10. Большие источники света

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

Cycles не любит маленьких источников света, потому что ему надо просчитывать эти световые лучи, которые возвращаются назад к излучателю, после отражения от объектов. Таким образом, чем больше источник света, тем проще для cycles просчитать отражения света.

11. HDRI Multiple importance Samples

Когда вы используете HDRI в качестве окружающего освещения, очень важно увеличить значение multiple importance sampling, примерно до 1024—2048.

Это значительно увеличит скорость рендера. Но убедитесь, что вы используете значения, которые являются степенью двух. К примеру 1024 это 2 в 10 степени, 2048 это 2 в 11 степени.

Я надеюсь, что эти советы и хитрости были полезными.


Урок был взят и переведён с сайта: boundlessblending.blogspot.com.br.