Blender
August 3, 2021

RenderMan 24 - Blender. Вводная.

Courtecy of Pixar, Disney, Luca trailer.

RenderMan — рендер движок от Pixar, который доступен по некоммерческой лицензии для бесплатного пользования. В бесплатной версии на текущий момент нет поддержки технологии XPU — совмещенного использования GPU+CPU, поэтому для неё актуальны рассчёты на CPU.

Рассчитываю, что это не последний пост про рендереры, поэтому будем считать этот - первой частью.

Я опишу сначала приоритетно-важные настройки, а после них — остальные, менее важные.

Настройки рендера.

Две самые важные кнопки: рендер одного кадра / анимации.
Под ними галочка - использование стандартного "накамерного" света, если в сцене нет других источников освещения.
Стабильность рендера анимации хромает, в моих тестах каждые 50-80 кадров весь процесс Blender'а схлопывался, обрывая прогресс рендера анимации.

Вывод картинки: в нативное окно Blender / Встроенный превьюер Renderman (it). Вторая опция, согласно документации и экспериментам, багована и при неосторожном использовании схлопнет сам Blender и весь несохранённый прогресс.


Optix Denoiser

Спасибо Nvidia, теперь деноизер доступен и в Renderman. Служит для устранения шума картинки на лету. Полезно, практично, может сильно сократить время рендера при необходимости и почистить шумный рендер.
Меньше семплов = быстрее время, но меньше информации для денойза, а значит детали могут быть смазаны и размыты.

Одинаковые настройки рендера; слева - OptixDenoiser - OFF, справа - ON

Контроль за быстродействием и использованием рендером мощностей определяется этими двумя параметрами.
Render Threads - во время превью в 3d Viewport; Batch - во время полноценного рендера.
Отрицательные значения = использовать все остальные потоки процессора, кроме #. Положительные = использовать максимум # потоков.

Секция Sampling в ответе за качество картинки.


Самые важные из этой секции четыре параметра:
• Max Samples - количество семплов на пиксель
• Pixel Variance - пороговое значение разницы в тоне-цвете на пиксель
• Max Specular Depth - глубина прозрачности
• Filter - тип антиальясинга.

Поскольку Renderman работает по принципу "кладу больше семплов туда, где они больше нужны", а не ровным слоем (на стандартных настройках, в режиме importance-variance), то играя с первыми двумя параметрами - MaxSamples, PixelVariance можно весьма неплохо балансировать между временем на кадр и качеством картинки.

Количество Семплов не всегда отражает качество, это лишь количество семплов. Качество - это про Pixel Variance. Этот параметр устроен так, что он смотрит за тем, как во время рендера кадра происходит изменение по цвету на каждом пикселе. Если отклонения от предыдущей итерации не уходят за предел этого значения, то больше в этот пиксель не вкладывается семплов (MaxSamples здесь - предельное количество).

courtesy of Pixar documentation: https://renderman.pixar.com/debugging-and-optimization

Если Pixel Variance имеет очень низкое значение, вроде 0.002, то даже на 64 max samples будет качество картинки очень недурное. В противовес - 1024 samples; 0.9 pixel variance даст ужасно-мыльную картинку, без деталей. Разумеется, это актуально для включенной опции optix denoise, без неё картинка будет просто сильней шуметь.
Dark Falloff - пограничное значение для слишком тёмных участков картинки, дальше которого семплы не будут добавляться в те области. Более высокие значения сделают так, что уже более светлые участки будут пропускаться при семплировании.

Дальше покажу разницу настроек с включенным OptixDenoiser, потому что 99% времени наверняка рендеры будут именно с ним идти. А вот как влияют параметры на отфильтрованную картинку - интересно.

Specular Depth:

Помимо базовых настроек глубины прозрачности, которые изначально выставлены в значении [8], есть ограничение внутри объекта:

И помимо этого, на уровне интегратора.

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

Стандартные настройки глубины прозрачности внутри объекта и интегратора с MaxSpecDepth=2 в настройках Sampling выглядит так:

VCM| Max Specular Depth: 2 | 02:11.68

За объектом должны быть видны фон и 6 светящихся точек. Но поскольку ограничение в два слоя в действии, видно только неперекрытые участки.

VCM| Max Specular Depth: 5 | 02:40.12

Как видно из примера выше - увеличение Max Specular Depth до 5 не сильно изменило положение дел. Настроив глубину внутри Integrator и внутри объекта можно получить более ожидаемый результат:

VCM| Max Specular Depth: 12 | 10:12.35 | Object Spec Depth: 32, Integrator Max Indirect Bounces: 32


Прочие параметры по настройкам рендера:

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

Эта менюшка очень классная, но в моих тестах она не поддерживала функцию устранения шума. Совсем. Во время рендера анимации мне было критично иметь эту функцию.
В противовес - стабильность. Через эту секцию запускается исполнение последовательного рендера кадров или отдельного кадра "внешне", не через текущую сессию Blender.

Секция Integrator: ТИП просчёта света.

• PathTracer/None - стандартная опция со сбалансированными настройками по свету;
• VCM - опция, поддерживающая каустику и просчёт фотонов. Медленная, красивая. С низкими значениями Specular Depth может быть быстрей PathTracer.

В зависимости от сцены и материалов имеет смысл попробовать старт рендера тем или иным типом просчета, чтобы понять, какой из них просчитывает кадр точней и быстрей. В моих тестах чаще всего быстрей был PathTracer, до тех пор, пока в одной из сцен VCM обогнал по времени с тем же (или лучше?) качеством в 4 раза. Всё по ситуации.


Там же можно настроить ньюансы по выбранному типу:
- отскоки света
- глубину лучей
- множители семплов для света


Примеры рендера с приблизительно-одинаковыми параметрами в разных режимах:


Max Specular Depth: 2 | 02:11.68 | VCM
Max Specular Depth: 2 | 10:13.47 | PathTracer

14:19.59 | Integrator: VCM | 128 samples, Spec/Diffuse Depth: 8/8 | Denoise: ON
02:54.93 | Integrator: Unified; Trace: UPSVCM | 128 samples, Spec/Diffuse Depth: 8/8
01:09.97 | Integrator: Unified; Trace: Photons Only - Photons: 64| 128 samples, Spec/Diffuse Depth: 8/8
01:23.51 | Integrator: Unified; Trace: Photons Only - Photons: 8192, adaptive, Training samples: 32 | 128 samples, Spec/Diffuse Depth: 8/8
01:26.42 | Integrator: Path Tracer; Caustics: ON | 128 samples, Spec/Diffuse Depth: 8/8
00:58.96 | Integrator: Path Tracer; Caustics: OFF | 128 samples, Spec/Diffuse Depth: 8/8

Display Filters: цветокоррекция, эффекты, мелкие подстройки.

И без них картинка выходит очень сочной, поэтому можно так же пропустить эту секцию, как и Sample Filters. Но для полного контроля это может пригодиться. Обращу внимание, что секцию Compositing никто не отменял и можно продолжить пользоваться стандартными средставами Blender для дотягивания картинки. Так же, как и Photoshop, Lightroom и схожие с ними.