Motion Blur в Cycles получил значительное улучшение производительности в Blender 2.78с. Однако, несмотря на все улучшения, рендеринг больших сцен с размытием движения производить все еще достаточно трудно. Как мы можем оптимизировать настройки рендеринга? Какое оборудование мы должны использовать? Мы провели 18 часов тестов по этой теме, так что вам нет нужды угадывать.
Все тесты проводились на следующей системе:
- Intel i5 2500K @ 4.8 ГГц
- 16ГБ ОЗУ
- Две Nvidia GTX 1070 8GB
- Blender 2.78c на Windows 10
Но спецификации не имеют значения, так как мы смотрим на относительную производительность. Начнем с простой сцены:
На изображении выше просто куча летающих костей для научного класса. Давайте посмотрим, как эта сцена отображается при различных значениях размытия движения и настройках BVH:
Наблюдение:
- Без размытия движения сцена рендерится быстрее всего. При увеличении скорости затвора производительность уменьшается, поскольку объекты становятся более размытыми. Но общее снижение производительности не значительное.
- Шаги BVH не слишком сильно влияют на производительность. Наверное, потому, что не так много пересекающейся геометрии.
Давайте посмотрим, как эта сцена поведет себя при рендеринге на графическом процессоре:
Наблюдение:
- Рендеринг на GPU замедляется существеннее при использовании Motion Blur, но все равно происходит значительно быстрее нежели на процессоре.
- Опять же, шаги BVH не слишком сильно влияют на производительность.
Хорошо, давайте рассмотрим более комплексную сцену одной из короткометражек над которой мы работали, а именно Sunny and Gerd. Этот кадр содержит деформации персонажей, тяжелую геометрию и очень быстродвижущуюся игрушку. Он отлично подходит для стресс-тестирования движка рендеринга:
Сначала давайте посмотрим, как процессор справляется с этой сценой:
В данной сцене мы действительно можем увидеть влияние размытия движения на производительность.
- Как и в случае с простой сценой, чем длиннее след размытия движения, тем медленнее рендеринг. Но здесь разница намного выше.
- Правильно настроенные временные шаги BVH могут существенно снизить время визуализации, особенно при высоких значениях значениях скорости затвора.
- Используя типичную скорость затвора 0.5 (которая имитирует 180° затвор, используемый в кинокамерах) мы видим, что размытие движения можно визуализировать почти с такой же скоростью, что и сцена без размытия движения, когда шаги BVH установлен в значение 3.
- Более высокие значения шагов BVH дают все меньший прирост производительности.
Ну и перед тем как закончить, давайте посмотрим на результаты рендеринга на GPU:
- Производительность видеокарты существенно снижается при включении размытия движения.
- Увеличение шагов BVH позволяет добиться приемлемых результатов, но все равно, производительность без использования размытия в разы лучше.
- Шаги BVH сокращают время рендеринга за счет большего потребления памяти. Поэтому, чем больше значение, тем меньше памяти остается у видеокарты!
Резюмируя, увеличивайте ваши шаги BVH! Значения от 2 до 3 значительно повышают производительность при использовании Motion Blur. Иначе визуализировать быстродвижущиеся объекты будет практически невозможно. Во-вторых, CPU работает намного лучше с Motion Blur, нежели GPU.
К сожалению, это лишь часть истории. Обычно для сцен с высокой степенью размытия движения требуется увеличить количество сэмплов для достижения чистого результата. Таким образом, рендеринг с использованием Motion Blur потребует больше сэмплов и, следовательно, потребует еще больше времени, что значительно снижает производительность.
Все что написано в данной статье относится лишь к Blender 2.78c. Разработчики Blender проделали удивительную работу по улучшению производительности Cycles на протяжении многих лет. Уверен, со временем все наладится.
?
А почему не сделать размытие движения уже не в процессе рендра, а условно, на готовом кадре, но с применением значений глубины и позиции расположения объектов относительно камеры?
Дольше (значительно) и менее реалистично. К тому же, здесь нужно просто пить кофе и ждать, а там работать.
Не, я не к тому, что бы это в ручную делать. А как один из способов. Само собой это всё дело автоматизировать.))
По времени это спорный вопрос, а вот насчёт реалистичности — да. С другой стороны, это же видео, динамические сцены и т.д. Там некогда реалистичность разглядывать, если речь о спец эффектах)
А разве в композе блендера нет размытия с учетом вектора движения или типо того?
Еще, мне кажется, объекты в движении изза размытия менее чёткие, а значит для них можно более простые материалы назначать и т.п.
В том тои дело что есть. Но в таком случае, надо делать каждый объект сцены отдельным слоем. Ведь кроме движущейся камеры есть статические и динамические объекты.))
Артем, грядет обновление 2.8 ты ведь все про него расcкажешь?
?
Ну я попробую, а там как получится…
Много лет уже делаю фильмы. Моушен использую регулярно. В интернал он был безобразный. В циклах устраивает полностью. Вот только не вижу никакого смысла в моушене более 0,8. Во первых, потому что в реальных кинокамерах он именно такой (обтюратор в принципе не может быть открыт более чем 0.8 времени протяжки кадра), во вторых в этом случае смаз наиболее реалистичен. Посему исследования с МБ=2 считаю бессмысленными. Замедления при включении МБ на GPU есть, но не настолько критичные, как показано здесь — так что я в недоумении. А увеличивать BVH на GPU — рисковать получить вылет из за нехватки памяти. Лучше не трогать. Ну и наконец — так и не понял фразу :При увеличении скорости затвора производительность уменьшается, поскольку объекты становятся более размытыми… При чем здесь «скорость затвора»? Размытие создается временем открытия а не скоростью.
В оригинале [i]shutter speed[/i] написано. Возможно это я криво перевел из-за не высоких познаний фототехники, но переводчик подсказывает именно такой вариант.
Возможно это выражение относиться к тем терминам, буквальный перевод которых не дает адекватной картины, как многие технические «жаргонизмы». Так, например, известно выражение «shutter» эффект, которое означает совсем не затвор а «студень» изображения на матрицах построчного сканирования. Но это мое предположение…
Shutter speed — это «выдержка» по-русски. Но идея передана верно: больше выдержка — больше размытие движения — больше сэмплов нужно на устранение дополнительного шума в размытии. Хотя мне самому интересно, насколько заметна глазу разница между размытием во время рендеринга и в пост обработке по векторам скорости. Не тестил пока
Думаю, что глазу точно заметно не будет, при такой частоте кадров (от 24 и выше). Даже если на стоп кадре будет разница. Все дело в общих временных затратах. Что быстрее, то и лучше.
Простите что пишу не по теме, но иногда когда работаю в блендере. Через некоторое время не могу вращать меши. Приходиться загружаться со старого сохранения и всё делать заново. Подскажите как это исправить?
Следить за тем какие кнопки нажимаешь, а в частности не нажимать кнопку Manipulate Center Points справа от изменения центра вращения.
Спасибо тебе, святой человек)
А почему не сделать размытие движения уже не в процессе рендра, а условно, на готовом кадре, но с применением значений глубины и позиции расположения объектов относительно камеры?
Дольше (значительно) и менее реалистично. К тому же, здесь нужно просто пить кофе и ждать, а там работать.
Не, я не к тому, что бы это в ручную делать. А как один из способов. Само собой это всё дело автоматизировать.))
По времени это спорный вопрос, а вот насчёт реалистичности — да. С другой стороны, это же видео, динамические сцены и т.д. Там некогда реалистичность разглядывать, если речь о спец эффектах)
Артем, грядет обновление 2.8 ты ведь все про него расcкажешь?
?
Ну я попробую, а там как получится…
Простите что пишу не по теме, но иногда когда работаю в блендере. Через некоторое время не могу вращать меши. Приходиться загружаться со старого сохранения и всё делать заново. Подскажите как это исправить?
Следить за тем какие кнопки нажимаешь, а в частности не нажимать кнопку Manipulate Center Points справа от изменения центра вращения.
Спасибо тебе, святой человек)
Много лет уже делаю фильмы. Моушен использую регулярно. В интернал он был безобразный. В циклах устраивает полностью. Вот только не вижу никакого смысла в моушене более 0,8. Во первых, потому что в реальных кинокамерах он именно такой (обтюратор в принципе не может быть открыт более чем 0.8 времени протяжки кадра), во вторых в этом случае смаз наиболее реалистичен. Посему исследования с МБ=2 считаю бессмысленными. Замедления при включении МБ на GPU есть, но не настолько критичные, как показано здесь — так что я в недоумении. А увеличивать BVH на GPU — рисковать получить вылет из за нехватки памяти. Лучше не трогать. Ну и наконец — так и не понял фразу :При увеличении скорости затвора производительность уменьшается, поскольку объекты становятся более размытыми… При чем здесь «скорость затвора»? Размытие создается временем открытия а не скоростью.
В оригинале [i]shutter speed[/i] написано. Возможно это я криво перевел из-за не высоких познаний фототехники, но переводчик подсказывает именно такой вариант.
Shutter speed — это «выдержка» по-русски. Но идея передана верно: больше выдержка — больше размытие движения — больше сэмплов нужно на устранение дополнительного шума в размытии. Хотя мне самому интересно, насколько заметна глазу разница между размытием во время рендеринга и в пост обработке по векторам скорости. Не тестил пока
Думаю, что глазу точно заметно не будет, при такой частоте кадров (от 24 и выше). Даже если на стоп кадре будет разница. Все дело в общих временных затратах. Что быстрее, то и лучше.
Возможно это выражение относиться к тем терминам, буквальный перевод которых не дает адекватной картины, как многие технические «жаргонизмы». Так, например, известно выражение «shutter» эффект, которое означает совсем не затвор а «студень» изображения на матрицах построчного сканирования. Но это мое предположение…