Особенностью Renderman’а, которая позволяет очень гибко использовать ShadingRate, является то, что почти все переменные в сцене можно указывать как глобально - один раз на сцену, так и локально - для каждой модели и чуть ли не для каждого полигона. Делается это очень просто, например, вот так (приведен небольшой фрагмент RIB-файла);

ShadingRate 0.25 # Это значение будет работать для всей сцены AttributeBegin

ShadingRate 4 # Кроме этого шарика, для которого

# определено свое собственное значение Surface “plastic”

Sphere 1 -1 1 360 AttributeEnd

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

Для продвинутых. Опытные TD советуют использовать для просчета карт теней высокие значения ShadingRate, вплоть до 32 (хотя все же не больше 8, если используется displacement). Как оказалось, на видимое качество теней это почти не влияет, а ускорение просчета составляет до 20 раз.

К сожалению, этот трюк хорошо работает не для всех типов теней; также его не рекомендуется применять для key light и областей с сильным дисплейсментом из-за возможности появления “грязи”. Сами консультанты из Pixar также советуют при использовании motion blur увеличивать ShadingRate - поскольку объекты и так будут “разблюрены”, то небольшое падение качества к видимому ухудшению картинки не приведет.

По опыту крупных зарубежных студий, скорее всего, к моменту окончательного рендеринга у вас не будет большого выбора в значениях ShadingRate, и тому есть несколько причин. Во-первых, поддержание единого значения ShadimgRate в сцене позволяет избежать разнобоя в картинке - грубо говоря, артефакты на всех моделях выглядят одинаково. Далее, модели с высокочастотными текстурами (особенно с большим их количеством) очень требовательны к ShadingRate. И наконец, даже если объект движется (и мы скрываем его при помощи motion blur и, по совету Pixar, увеличиваем SR), все равно будут несколько кадров, в которых он будет неподвижен. Именно эти кадры должны показать работу шейдерописателей и текстурных художников во всей красе - потому что именно на этих кадрах (согласно закону бутерброда) будут делать стоп-кадры на своих DVD-проигрывателях будущие трехмерщики - и изучать, изучать, изучать…

PixelSamples

Архитектура REYES, на которой построен prman, в момент своего создания сильно отличалась от общепринятых подходов к трехмерному рендерингу, в частности, из-за того, что процесс шейдинга в ней происходит до определения видимости и вычисления краевого антиалиасинга поверхностей.

Как это происходит? Получается, что на какой-то стадии шейдеры вызваны, объекты уже закрашены, а картинка все еще девственно чиста? Что же тогда «красят» шейдеры?

Все очень просто: закраска происходит не в двумерном пространстве картинной плоскости, а в трехмерном мире сцены. Дело в том, что еще до шейдинга prman производит тесселляцию (разбиение) видимых поверхностей на микрополигоны, размеры которых приблизительно определяются числом занимаемых ими на картинной плоскости пикселей - да-да, ShadingRate как раз тут и говорит свое веское слово! После такой тесселляции в распоряжении рендерера оказывается сетка из микрополигонов, которые, с одной стороны, представляют собой геометрические объекты


⇐ вернуться назад | | далее ⇒