Render Pipeline

Материал из Blender3D.

Перейти к: навигация, поиск

Содержание

Поток визуализации

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

Когда Вы настроили сцену для визуализации, Вы обычно хотите отделить персонажа в собственный рендер-слой, для векторного смазывания или цветовой коррекции. Примешивание (Compositing) его обратно в среду затем может быть усложнено... например когда персонаж стоит в области травы. Что Вам нужно, это специальный рендер-слой, результирующее изображение на котором содержит только траву перед персонажем. Это то, что "Zmask" делает для Вас.

"Zmask" работает следующим образом (панель Scene RenderLayer):

  1. Добавить новый рендер-слой
  2. Затем указать, который из слоев видимости будет визуализировать только величину Z (ctrl+mouseclick на renderlayer кнопках).
  3. затем активизировать опцию "Zmask", которая сделает эти вещи для Вас при рендере:
    • Сначала она заполняет величины Z объектов в только-Z слоях предшествующего шага (2)
    • Затем очищает незаполненные пиксели с ближайшим возможным Z
    • И затем делается нормальный z-буфер вокруг для проверки на наличие видимого материала, чтобы визуализировать
  4. Результат - маска, которую Вы можете наложить с альфой поверх в смешивании (composite)


Source(s): Render Pipeline


Вы можете видеть это на рисунках ниже:

Поле травы
Поле травы
Куб (персонаж :)
Куб (персонаж :)
Слой Zmask
Слой Zmask
Результат смешивания
Результат смешивания

Некоторые замечания:

  • Вышеописанный результат сделан с единственной командой "Render", с использованием трёх рендер-слоёв и смешивания.
  • Новый режим 'Рендер только z-величин в этом слое' работает только для твердых граней. Вы можете использовать актуальную модель, которую Вы хотите замаскировать, или любую другую плоскость маски.
  • Также возможно изолировать пиксели позади ZMask взамен переднего плана, с опцией Negative (Негатив).
  • Здесь blend-файл для тестирования

Опция zmask рендер-слой также позволяет делать более сложное маскирование... он может даже включить сам объект в маску, или твердые объекты перед zmask. Рисунки снизу иллюстрируют это.

Трава с грибами
Трава с грибами
Маска включает грибы тоже
Маска включает грибы тоже
Результат смешивания
Результат смешивания
Кнопки RenderLayer
Кнопки RenderLayer

Здесь другой .blend-файл, аналогичный случай, но более сложное смешивание визуализации и маскирования.

Исключения рендера (Render Instancing)

Прежде при дублировании объектов с помощью dupliverts, duplifaces, dupligroups или частиц, данные этих объектов загружались один раз для каждого объекта в движок рендера. Теперь эти данные будут загружены только однажды, это означает, что визуализация таких объектов теперь - более эффективная по расходу памяти. Это было сделано возможным, например, чтобы визуализировать много листьев дерева в Peach.

Отметьте, что с radiosity или raytracing (трассировкой лучей) исключения все еще не полностью поддерживаются, что означает, что для этих режимов использование памяти может все еще быть высоким.

Также, движок рендера теперь вырезает объекты их окружающим ящиком (bounding box) для растеризации, чтобы улучшить производительность.

Full Sample Anti-aliasing

Когда конвейер визуализации Блендера (render pipeline) был переработан - для Elephants Dream в 2006 - один из нерешенных моментов был - артефакты, которые Вы получали на краях многоугольника с антиалиасингом, когда Вы использовали HDR (высоко-динамический цветовой диапазон) (цвета за пределами 0.0-1.0 видимого диапазона), или когда Вы делали цветовую коррекцию или remapping. Не говоря уже о смешивании (compositing), Вы действительно хотите получить то же качеству антиалиасинга для z-буферов, масок, и т.п.

Анализ этой проблемы закончился только одним возможным качественным решением: смешивание (composite) не должно никогда случаться с анти-aliased изображениями, но вместо этого делается со всеми сырыми образцами, как они исходят из рендера, которые затем на последних шагах карты все попадают в видимый 0-1 диапазон, и затем образцы объединяются в анти-aliased результат.

В других программах это достигается просто рендерингом больше 2 или 4 раз, и смешивание (compositing) делается с масштабированием вниз. В Блендере мы используем более передовую 'distributed jittered sampling' ('распределенная дрожащая дискретизация'), которая действительно уже визуализирует 8 полных изображений (для "OSA 8"). При этом просто сохраняются все эти изображения на диске, затем после визуализации считыватся обратно и делается смешивание (composite).

Или, чтобы суммировать, это - конвейер FSA:

Визуализация (Render) -> сохранить все образцы -> смешать (composite) -> отображение в видимый диапазон -> фильтр-комбинирование образцов

Предыдущее OSA делало:

Визуализация (Render) -> фильтр-комбинирование образцов -> смешать (composite) -> отображение в видимый диапазон

Ключевые преимущества FSA

  1. Визуализации динамического диапазона

Когда Вы используете лампы или текстуры, которые имеют цвета за пределами стандартного диапазона 0-1, Вы можете использовать смеситель (compositor), чтобы регулировать это и отображать в видимый дипазон. Только в после всех смешиваний и отображений, делается анти-aliased фильтрация и слияние образцов. Даже без смешивания (compositing), FSA будет в этом случае в выигрыше - визуализация улучшится. Решает вопросы AA, вызванные solid - ztransp - strand комбинированием.

  1. Блендер рендерит solid (твёрдые грани), ztransp (z-буфер для прозрачных граней) and strands (??) в отдельных 'слоях', объединяя их с накладывающими сверху альфу функциями. При применении анти-aliasing к таким слоям сначала, и затем объединяя их, Вы можете получить артефакты (выглядит как если фон проглядывает через анти-aliasing). FSA эффективно решает это.
  2. Допускается отображение цвета/контрастности/яркости.

Все, что Вы делаете в смешивании (composite), даже делая это 2 цветами черным и белым, Вы оперируете сырыми образцами, а конечный результат всегда выглядит правильно анти-aliased.

  1. Использование проходов с полным анти-aliasing

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

Использование Памяти и перерасход (overhead)

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

  • Для каждого визуализируемой секции (тайла), FSA распределяет слой/проход буферов для каждого образца. Например: для 2k рендера, 8 образцов, используется 4 x 4 части, это означает, что для секции (тайла) будет сохранено 8 x 128k пикселей.
  • Следовательно это хорошее соглашение - делать секции меньше, особенно при визуализации в нитях (threads) (каждая нить распределяется для каждой секции).
  • Тем не менее, после того, как визуализация секция завершится, она сохраняет целый результат на диск, используя соглашение 'сохраняемых буферов'. Так визуализируя меньшие секции, Вы можете компенсировать FSA-перерасход довольно эффективно.
  • Потеря (overhead, перерасход) времени рендера для FSA - константа. Только перерасход на распределение, запись в буферы, и сохранение их увеличивает время рендера, и игнорирует сложность сцены или характеристики рендера.
  • Перерасход на смешивание (сompositing) - также константа, но здесь большинство времени получается "потерянным"... поскольку для каждого образца случается полное смешивание. Мы посмотрим на умные нити (threads) для смешивания, чтобы преодолеть это.
Личные инструменты