Система рендеринга Gelato


NVIDIA Gelato представляет собой оригинальную гибридную систему рендеринга изображений и анимаций трехмерных сцен и объектов, использующую для расчетов центральные процессоры и аппаратные возможности профессиональных видеокарт серии Quadro FX.

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

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

Как рендер - система, Gelato представляет собой:

  • самостоятельную программу рендеринга из командной строки с набором готовых к использованию возможностей, которые могут быть дополнены и расширены
  • библиотеку C++ API функций для программирования дополнительных возможностей. Эти функции прежде всего предназначены для интегрирования Gelato в производственный конвейер, для создания плагин-коннекторов и программирования новых функций и свойств рендеринга. API функции полностью открыты, хорошо документированы и бесплатны - могут быть свободно модифицированы или использованы для создания авторских продуктов
  • набора готовых плагин - коннекторов для интегрирования Gelato с программами трехмерного моделирования и анимации. В настоящее время представлены и распространяются вместе с Gelato плагин Mango, интегрирующий Gelato и Maya, и Amaretto, позволяющий работать с Gelato из 3ds max

Система рендеринга Gelato предназначена прежде всего для использования в промышленном производстве в рамках профессиональных студий, именно они смогут извлечь все выгоды и получают наибольшие преимущества. С этой точки зрения, Gelato является продуктом того же класса, что и mental ray или renderman.

Однако, благодаря наличию набора готовых к использованию возможностей и плагинов для Maya и 3ds max, Gelato может быть интересен и для индивидуального использования.
О каких возможностях идет речь? В настоящее время Gelato может предложить быстрый полноценный антиалиасинг, адаптивную тесселяцию, быстрый motion blur и DOF (depth of field), полнофункциональную поддержку геометрии, включая полигонную, NURBS и subdivision surfaces, гибкую систему шейдинга поверхностей, библиотеку готовых материалов, современные методы расчета освещения с использованием трассировки лучей, непрямого освещения и кэширования расчетов, а также поддержку сетевого рендеринга и многопоточности.

Использование видеокарты для ускорения расчетов выглядит наиболее привлекательно именно как одна из готовых к использованию возможностей. Что конкретно помогает считать видеокарта, является закрытой информацией. По этому поводу утверждать однозначно можно только то, что такое ускорение имеет место хотя бы для некоторых функций рендеринга, и что перечень этих функций будет расширяться в последующих версиях Gelato.

Данный обзор посвящен второй версии Gelato, которая теперь выходит в двух версиях: базовой (basic mode) и Pro. Базовая версия является бесплатной и доступна для использования всем желающим, без каких-либо ограничений на время использования или качество финального изображения. Получить ее можно по адресу: http://www.nvidia.com/page/gelato_download.html

Pro-версия является платной и дополнительно предлагает такие возможности как:

  • система кэширования расчетов освещения Sorbetto
  • поддержка сетевого рендеринга и многопоточности
  • поддержка 64-битности
  • DSO shadeops
  • доступ к новым возможностям и участие в их бета - тестировании

С выходом второй версии впервые официально признана возможность использования Gelato не только совместно с профессиональными видеокартами Quadro FX, но и с игровыми видеокартами серии GeForce FX, начиная с GF FX 5200. Предусматривается и некоторая простейшая поддержка использования игровых видеокарт с Gelato на форуме NVIDIA.

Gelato работает под Microsoft Windows XP 32 (требуется установка Service Pack 2) и 64, RedHat Linux 7.2 на процессорах Pentium III и выше, AMD Athlon или AMD Opteron. На компьютере должна присутствовать, как минимум, видеокарта NVIDIA GeForce 5200 для базовой версии и NVIDIA Quadro FX для Pro версии с драйверами 81.67 (XP) и выше.

Далее будем говорить только об установке и работе под Win XP. Процесс инсталляции Gelato проходит в автоматическом режиме в несколько этапов - сначала ядро системы рендеринга из командной строки, затем Python и далее - плагин - коннекторы Mango и Amaretto. Любой из этапов, кроме самого первого, может быть пропущен.

В результате, устанавливаются следующие основные файлы:

  • gelato.exe: основная программа рендеринга из командной строки файлов трехмерных сцен в формате pyg
  • gslc.exe: компилятор шейдеров
  • iv: программа просмотра, отображения и обработки изображений, которая также используется как frame buffer для вывода изображений в процессе рендеринга
  • maketx.exe: программа конвертирования текстур в формат .tx, используемый Gelato
  • topyg.exe: конвертер файлов трехмерных сцен из различных форматов в формат Pyg, дополнительно требует для своей работы наличия генераторов преобразования форматов
  • libgelato.dll: библиотека Gelato для разработки собственных приложений (shared library)
  • различные .dll библиотеки, необходимые для разработки собственных приложений - pthread.dll, python.dll, cg.dll и другие
Все вышеперечисленные файлы устанавливаются в подкаталог bin.

Кроме того, в подкаталог lib устанавливаются плагины для работы с файлами изображений (*.imageo.dll) и генераторы конвертирования различных форматов описания трехмерных сцен (*.generator.dll). Дело в том, что "родным" языком описания сцен для Gelato является C++ и для чтения других форматов используется механизм так называемых генераторов. Для любого стороннего формата описания может быть написан генератор, который будет отвечать за преобразование. Собственно преобразование форматов выполняется программой topyg.exe, которая использует представленные в каталоге lib генераторы для "узнавания" преобразуемых форматов. Стандартно поставляется только pyg.generator.dll, поэтому сразу после инсталляции Gelato может читать и рендерить сцены формата pyg. В настоящее время имеется еще один готовый генератор - rib.generator.dll, который позволяет Gelato рендерить сцены в формате RIB. Получить этот генератор можно на сайте NVIDIA(http://film.nvidia.com/page/gelato_download.html#plugin). В дополнение к RIB-генератору идет утилита rsl2gsl, которая позволяет конвертировать шейдеры renderman в шейдеры Gelato.
Аналогичным образом могут быть созданы системы конвертирования для любого другого языка описания сцен, например, для mental ray. Создание того или иного генератора возлагается на пользователей, для этой цели предусмотрены специальные API-функции. Таким образом, в NVIDIA пошли по пути стандартизации инструментов создания плагинов конвертирования, вместо поставки готовых утилит преобразования, что несомненно придает дополнительную гибкость всей системе.

В состав поставки Gelato входит библиотека готовых шейдеров материалов, дисплейсмента, источников света, камер и объемных эффектов, файлы подготовленных к рендерингу примеров, и документация.

Для программирования шейдеров Gelato обладает собственным специализированным языком GSL - Gelato Shading Language. Создание кода шейдеров полностью описано в документации. После кодирования шейдера, он должен быть скомпилирован при помощи утилиты gslc.exe. По принятым соглашениям файл с исходным кодом имеет расширение gsl, скомпилированный файл шейдера получает расширение gso.

Дополнительно, для проверки успешности инсталляции и верификации переменных операционной системы, предусмотрена утилита Check Gelato, при запуске которой появляется информационное DOS-окно с различной информацией о системе и Gelato.

Второй, необязательный, этап предусматривает установку Python. Как мы уже знаем, Gelato не привязывается к какому-либо определенному формату описания сцен, оставляя решение этой задачи специализированным генераторам. Наиболее типичный рабочий сценарий в этом случае предполагает чтение генератором описания сцены в конкретном формате с одновременным вызовом API функций для рендеринга. Все же, поскольку часто гораздо удобнее сохранять описание сцен в файлах для самых разных целей (например, для их "ручного" редактирования и просмотра), в состав Gelato включен генератор для работы с описанием сцен на языке Python - pyg.generator.dll. Файлы описания сцен на Phyton имеют расширение pyg - Python for Gelato и в определенной степени могут считаться базовым языком описания трехмерных сцен для Gelato. Более того, плагин - коннекторы для Maya и 3ds max сначала экспортируют описание сцен в pyg-формат и лишь затем вызывают Gelato для рендеринга.

Phyton сам по себе является интерпретируемым языком программирования, поэтому помимо описания сцен, на нем также можно писать исполняемые программы, как и на C++. Такие программы будут компилироваться "на лету" и это является одной из основных причин использования Python. Только для рендеринга pyg-сцен Python не нужен, поскольку всю необходимую работу в этом случае выполняет генератор pyg.generator.dll. Пример исполняемой программы на Phyton для Gelato можно найти в каталоге примеров (coloredquads.pyg).

Наконец, на завершающих этапах могут быть установлены плагин - коннекторы для рендеринга сцен из Maya 6/6.5/7 (плагин Mango) и 3ds max 6/7/8(Amaretto). Эти коннекторы чуть позднее будут рассмотрены подробно.

Таким образом, сразу после установки, Gelato готово к рендерингу без всяких дополнительных настроек - либо файлов сцен в формате pig, либо через коннекторы из Maya или 3ds max.

Насколько существенно ускорение расчетов видеокартой в Gelato? Для ответа на этот вопрос было выполнено небольшое тестирование производительности нескольких игровых видеокарт на задачах рендеринга из командной строки примеров сцен, предлагаемых на сайте NVIDIA. Все сцены представлены в файлах формата pig или rib и поставляется вместе с .bat - файлами для запуска рендеринга из командной строки. К сожалению, архив тестовых сцен более недоступен для загрузки, но описание тестов можно почитать здесь: (ссылка на pdf). Ниже приведены данные, полученные при тестировании трех игровых видеокарт: GF FX 5200, 5700 и 6600 GT.

Тестирование проводилось на AMD Athlon 2500, 500 RAM под WinXP SP2 с установленными драйверами ForceWare 81.95.

Краткое описание тестов:

  • ambocc.bat - расчет ambient occlusion
  • hairymonster.bat - расчет системы волос, тест требует установки rib.generator.dll
  • DOF.bat - depth of field
  • killeroo-mb.bat - простой односегментный motion blur
  • MSMB.bat - многсегментный motion blur
  • killerooparty-1920.bat - сцена с NURBS-моделями компьютерных персонажей (кенгуру-мутанты), картами displacement и цвета
  • trooperoo-1024.bat - тест на просчет сцены, содержащей большое количество геометрии (8000 кенгуру)
  • SloppySam.mb - тест расчета подповерхностного рассеяния
  • caustics.bat - расчет каустик - эффекта

Во всех сценах используются растровые карты теней, без ray tracing. Полное описание сцен и изображения, полученные в результате рендеринга можно посмотреть в EvalNotes-Gelato0605.pdf. Там же приводятся тестовые данные NVIDIA и описание системы, на которой они были получены.

Тестовая таблица 1,
время рендеринга указано в секундах

Тестовая сцена (файл)GF FX 5200GF FX 5700GF FX 6600 GT
ambocc.bat60,160,160,1
hairymonster.bat270825112300
DOF.bat137110611035
killeroo-mb.bat36,7623,2622,9
MSMB.bat1110,835,8
killerooparty-1920.bat797372
trooperoo-1024.bat123712321213
SloppySam.mb(Maya 7)190190190
caustics.bat29,729,328,2

Таблица 2,
Cравнительный прирост производительности (%) относительно GF FX 5200

Тестовая сцена GF FX 5700GF FX 6600 GT5700/6600 GT
ambocc.bat000
hairymonster.bat7,315,17,8
DOF.bat22,624,52
killeroo-mb.bat36,737,71
MSMB.bat1,647,345,7
killerooparty-1920.bat7,88,91,3
trooperoo-1024.bat0,41,91,5
SloppySam.mb(Maya 7)000
caustics.bat1,453,7

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

Как мы видим, наибольший прирост производительности достигнут в расчетах motion blur (размывание изображения в движении) и depth of field (размывание, связанное с фокусным расстоянием камеры). Существенен также и прирост в расчетах системы волос (hair). Расчеты каустики (caustics), ambient occlusion (ao) и подповерхностного рассеяния (sss) почти не подвержены ускорению. Во всех тестах использовались растровые карты теней, кроме caustics, ao и sss, расчет которых основан на ray tracing и без трассировки лучей просто невозможен. Полученные данные позволяют предположить, что Gelato не использует аппаратные возможности видеокарт для ускорения расчетов ray tracing. Поэтому, наибольшую выгоду от использования Gelato можно получить в задачах без использования трассировки лучей, либо в сценах, где применение этого метода незначительно. Ярким примером является тестовая сцена с расчетом волос, где использование depth map для расчета теней волосков позволяет Gelato проявить себя с очень выгодной стороны.

Перейдем к рассмотрению плагин - коннекторов Gelato для Maya (Mango) и 3ds max (Amaretto). Mango

Mango представляет собой набор плагинов, скриптов и шейдеров, выполняющих интеграцию Maya и Gelato. Процесс установки проходит в автоматическом режиме без каких-либо проблем и по его завершении Gelato становится доступен в Maya как один из возможных рендеров. Mango способен правильно обрабатывать большинство сцен Maya без каких-либо дополнительных настроек геометрии, материалов, источников света и камер. Тем не менее, не все возможности Maya поддерживаются Gelato, хотя этот список постоянно расширяется.

Основные возможности Mango

Рендеринг сцен может быть выполнен непосредственно в Maya Render View (MRV) или в iv - собственном фрейм буфере Gelato. Последняя возможность кажется наиболее предпочтительной, поскольку, по состоянию для текущей версии Mango, отмена рендеринга в MRV не всегда завершает соответствующий системный процесс. Это обстоятельство может привести к тому, что повторный запуск рендера создаст нескольких работающих одновременно копий Gelato. В то же время, iv имеет специальную кнопку "kill process" , которая гарантированно завершает процесс. Кроме того, iv обладает рядом других дополнительных преимуществ.

Экспорт сцен Maya в pyg-файлы, как в ASCII, так и в двоичном виде. Такие сцены могут быть затем запущены на рендеринг из командной строки, без необходимости запуска самой Maya. Возможность сохранять pyg-файлы сцен имеет целый ряд преимуществ: более экономное использование памяти (не требуется Maya), экономия времени трансляции (которая может быть существенной для больших сцен), возможность ручного редактирования pyg-сцен и другие.

Mango поставляется с набором шейдеров, дублирующих основные Hypershade node, и автоматически подставляет их при рендеринге с Gelato. Перечень таких шейдеров постоянно расширяется. Поэтому, многие сцены Maya могут быть просчитаны Gelato безо всякой предварительной настройки. Многие, но не все. В настоящее время Mango поддерживает три основных материала Maya: lambert, blinn и phong. Если объектам назначены другие типы материалов, это потребует дополнительного редактирования и настройки материалов.
Полный перечень поддерживаемых типов материалов, карт, шейдеров источников света и камер приводится в документации Mango.

Если потребуется назначать шейдеры Gelato материалам, сделать это довольно просто через закладку Gelato на материале типа lambert, blinn или phong.



Интерфейс назначения материалам шейдеров Gelato

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

Все материальные шейдеры Gelato условно делятся на три группы - шейдеры свойств поверхности, displacement-шейдеры и шейдеры объемных эффектов. Материальные шейдеры могут быть назначены через материал Maya указанием его имени в группе Gelato>Override shader, либо стандартным для Maya способом - через построение shading network.

Mango обеспечивает возможность работы с основными типами источников света Maya: ambient, point, spot, directional. Объемные и area источника пока не поддерживаются. Это означает, что настраивать поддерживаемые источники можно самым обычным образом. В дополнение к этому, можно воспользоваться собственными световыми шейдерами Gelato, среди которых четыре основных: ambient, point, spot, directional и два дополнительных: indirectlight, позволяющий рассчитывать непрямое освещение в сцене (GI), и uberlight, обладающий большим количеством различных настроек. Кроме того, в настройках источника света представлена закладка Gelato, через которую можно определить каустик - свойства освещения и ambient occlusion.



Интерфейс свойств и световых шейдеров
Gelato источника света в Maya

Здесь же может быть назначен и расчет объемных теней. Mango позволяет рассчитывает тени следующих типов: стандартные Depth Map, shadow map с использованием Woo trick, ray trace и объемные тени. Растровые тени можно сохранять в файл для повторного использования. Gelato довольно интенсивно использует кэширование (сохранение в файл) сэмплов в расчетах освещения. Так, сохранять можно расчеты вторичного освещения, фотонную карту для каустики, сэмплы ambient occlusion, sss и другие и Mango позволяет этим пользоваться.

Что касается расчета непрямого освещения, оно выполняется методом Монте - Карло с интерполяцией. Mango обладает некоторыми особенностями в настройке непрямого освещения - требуется наличие в сцене, как минимум, двух источников света: один для прямого освещения, второй для непрямого освещения - ему должен быть назначен световой шейдер indirectlight. Доступна также возможность освещения сцены при помощи HDRI посредством шейдера envsurf.

Расчет ambient occlusion может быть выполнен несколькими различными способами. Можно назначить шейдер источнику света, либо назначить шейдер поверхности объекта, либо просчитать пасс для последующего монтажа заданием глобального ambient шейдера в Render Globals.

Каустика рассчитывается с использованием метода фотонных карт и выполняется в два прохода - сначала создается фотонная карта, затем выполняется финальный рендеринг с ее использованием.

Также, Mango обеспечивает одну из интересных возможностей Gelato - быстрый рендеринг сцен в режиме предварительного просмотра. При этом, возможна настройка соотношения качества и времени.
Примечание: мне не удалось "завести" этот режим на игровых видеокартах в Maya.

Одно из наиболее существенных новшеств второй версии Gelato - кэширование расчетов освещения (relighting) при помощи технологии Sorbetto. Sorbetto позволяет очень быстро пересчитывать освещение сцен, если были сделаны изменения в настройках источников света, а также при их удалении/добавлении или перемещении. Mango позволяет использовать Sorbetto в рендерах из Maya, но в basic mode количество рендеров ограничено.

Панель настроек рендеринга позволяет указывать пользовательские скрипты на языке Python, которые будут выполняться в процессе рендеринга

Загрузка Mango происходит автоматически во время запуска Maya, поэтому все, что остается сделать - назначить Gelato текущем рендером.
Среди стандартно доступных возможностей Mango, назначать и настраивать которые можно в панели Render Globals представлены: настройка качества суперсэмплинга и трассировки лучей, motion blur, непрямое освещение и ambient occlusion, подповерхностное рассеяние и стерео рендеринг.



Настроечные параметры Gelato

Повышение качества суперсэмплинга в Gelato почти не увеличивает времени рендеринга. Основным параметром настройки качества рендеринга является Sahding Quality из Default per Object Attributes. Этот же параметр сильно влияет и на время рендеринга. Удобно то, что им можно управлять по-объектно. Его значение по умолчанию равно 1 (высокое качество), для быстрого предварительного просмотра это значение можно уменьшать. Другой способ быстрого предварительного просмотра - включить режим Preview в Raytracing Quality.

Расчет Global Illumination, подповерхностного рассеяния, Ambient Occlusion (который на самом деле есть occlusion с интерполяцией), каустики требует дополнительной поддержки со стороны шейдеров материалов и источников света.
Материальный шейдер можно назначить и в Render Globals (слот Special Shaders), в этом случае он переписывает все объектные материальные шейдера. Это можно использовать, например, для просчета отдельного рендер-пасса.

В отношении типов геометрии Mango поддерживает следующие возможности Maya: NURBS, полигонную геометрию, subdivision - поверхности (кроме hierarchical), системы частиц (только основные примитивы формы частиц - сферы), частично - Paint Effects и не поддерживает Maya Hair, Fur и Cloth. Во время рендеринга полигонных поверхностей можно задавать их рендеринг как subdivision поверхности, устанавливая тип интерполяции Catmull- Clark в атрибутах (Shape) геометрического объекта.



Caustics



Подповерхностное рассеяние

Настройка всех типов рендеринга сцен из Maya с использованием Mango хорошо и полно документирована и не вызывает вопросов. Дополнительную информацию о технических деталях работы конкретных шейдеров можно также получить из techref.pdf, который входит в состав справочной системы Gelato. Amaretto версия 0.6.11

Amaretto -плагин - коннектор Gelato для 3ds max 6/7/8, разрабатываемый Frantic Films Software, представляет собой гибрид C++ и MAXScript функций. В настоящее время еще не полностью завершен и находится в стадии бета - тестирования. Тем не менее, Amaretto вполне работоспособен и с его помощью можно использовать большинство возможностей Gelato. Для тех, кто хорошо знает с MAXScript, не составит труда при необходимости внести какие-либо изменения, дополнения или исправления в интерфейс программы.



Интерфейс Amaretto

Установка Amaretto также выполняется в автоматическом режиме и трудностей не вызывает. Единственная дополнительная настройка, которая должна быть выполнена вручную - указание пути к шейдерам Gelato в Amaretto: Path Configuration (последние версии Amaretto делают автоматически и это).

После установки вызов интерфейса Amaretto для настройки рендеринга стандартен: его нужно выбрать в качестве текущего рендера в панели Render Scene > Assign Render. И далее, на выбор, можно использовать Amaretto для просмотра образцов материалов в Material Editor, либо оставить эту функцию для Scanline Renderer. Оба способа имеют ряд преимуществ и недостатков. Основной недостаток использования Amaretto для этой функции - в его относительной медленности и некоторой недоработанности.



Amaretto может быть использован
для отображения шейдеров в Material Editor

Геометрия Amaretto может работать с полигонными объектами 3ds max (Mesh и Poly), Subdivision surfaces, системами частиц (в стадии разработки). Поддержка NURBS и Bezier Patches пока не завершена. При экспорте геометрии для Gelato, доступны два режима: TriMesh, поверхности представляются треугольниками, и PolyMesh, поверхности представляются n-угольниками, n>3. Этот режим наиболее предпочтителен, поскольку работает быстрее и качественнее. В составе Amaretto идут несколько модификаторов, среди них - Amaretto Attributes, который позволяет по-объектно определить тип представления геометрии, представить полигонную поверхность как subdivision surfaces (Catmull-Clark SDS), определить качество шейдинга поверхности, каустик - свойства объекта и использовать PYG-архивы. Последнее означает, что объект может быть использован как proxy и заменяется при рендеринге геометрией из указанного PYG-файла, либо может быть экспортирован в pyg-файл.



Модификатор
Amaretto Attributes

Освещение

Поддерживаются основные источники освещения 3ds max: omni, directional, spot, ambient, поддержка остальных типов источников в процессе разработки. Для настройки каустик-свойств освещения имеется модификатор Amaretto Light.



Модификатор
Amaretto Light

Расчет теней может быть выполнен как при помощи карт теней (в стадии разработки, объемные тени пока недоступны), так и методом трассировки лучей, поддерживается тип теней advanced raytraced. Выбор метода выполняется в свойствах источников света или глобально в настройках рендеринга



Выбор метода расчета теней в настройках рендеринга

Материалы и шейдеры Перечень поддерживаемых материалов и карт 3ds max довольно широк и включает: стандартный материал в режиме шейдинга Blinn, Phong, Strauss, Anisotropic, Oren-Nayar-Blinn, Metal. Зеркальные подсветки пока работают некорректно.
Кроме стандартного, поддерживаются материалы типа Blend, multi/sub, composite и более 30 текстурных и процедурных карт (полный список приводится в документации). Этот список будет расширяться в последующих версиях.

Amaretto обеспечивает автоматическую и прозрачную трансляцию материалов и карт max в shading network для Gelato (при помощи специальных connection shaders), так что вмешательство в этот процесс практически не требуется - их настройка выполняется обычным для 3ds max способом. Поддерживается 4 текстурных канала (из 100, доступных в max) и один канал цвета вершин. Помимо этого, Amaretto предоставляет новый тип материала - GSO Base.



Новый тип материала GSO Base

GSO Base может использоваться как основной для построения материалов на основе собственных шейдеров Gelato. Все шейдеры могут быть разделены на три большие группы: шейдеры поверхности, displacement и объемные шейдеры. GSO Base может быть использован в Multi/Sub material, стандартные материалы max могут быть назначены в слот GSO Base > Surface для определения свойств поверхности. Типичная схема построения материала может выглядеть следующим образом:



Пример shading network на основе GSO
Base и шейдера поверхности GSO sur_oakplank



Материал на основе GSO Base с назначенным
для поверхности стандартным материалом max
с текстурой и шейдером рельефа поверхности GSO disp_dented



Рендер с материалами Gelato

В редакторе материалов шейдеры Gelato представлены как материалы GSO с префиксом, идентифицирующим их назначение: surf_ - шейдеры поверхности, disp_ - шейдеры дисплейсмента, vol_ - объемные шейдеры.

Удобным моментом является возможность редактирования кода любого представленного шейдера прямо из Material Editor, компиляции кода и перестройки GUI.



Редактирование, компиляция и
перестройка GUI доступны прямо из Material Editor

Дополнительные возможности рендеринга

Depth of field и motion blur Gelato позволяет рассчитывать как простой, так и multisegmented motion blur, когда траектория движения разбивается на несколько сегментов с расчетом промежуточных положений объекта или камеры вдоль пути.



DOF, время расчета 1мин 20 сек



многосегментный motion blur



Трехсегментный mb с растровыми тенями, 1 мин45 сек

Настройка и depth of field и motion blur очень проста, а расчет быстр и может быть ускорен видеокартой, если используются растровые карты теней.

Ambient occlusion Для расчета ao необходимо назначить шейдер surf_ambocclude как материал поверхности объекта и в параметре шейдера occlusionname указать имя geometry set: "shadow" или "reflection". Настройку расчета можно осуществлять либо через параметры шейдера, либо через соответствующие настройки на панели рендеринга.



Ambient occlusion, 1мин. 45 сек
.

Global Illumination Расчет вторичных переотражений света настраивается на панели Amaretto: Ray tracing, Global Illumination and Subsurface Scattering. Все, что нужно сделать - это разрешить расчет и подобрать требуемые значения параметров. Gelato реализует классический расчет глобального освещения методом Монте - Карло с интерполяцией. Смысл параметров очевиден и понятен: величина ошибки интерполяции, количество сэмплов для расчета освещения одной точки, минимальное количество точек интерполяции и максимальный радиус поиска точек для интерполяции. Алгоритм не самый быстрый и не самый изощренный, по сравнению с другими программами рендеринга, но обеспечивает вполне приемлемый результат.



Расчет глобального освещения, тени - advanced raytraced, время - 1 час 20 минут

Подповерхностное рассеяние (SSS) В разных версиях Amaretto реализовывалось по-разному. В настоящее время (версия Amaretto 0.6.11) расчет подповерхностного рассеяния в материалах задается при помощи назначения специальной карты Amaretto SSS Map, которая должна быть назначена для определения диффузных свойств материала:



Пример конструкции материала для расчета sss

Алгоритм расчета довольно интересен - реализована физическая модель простого (без использования фотонных карт) подповерхностного рассеяния, требующая указания для определения рассеивающих свойств материала шести коэффициентов: три для рассеяния и три для поглощения (RGB).



Панель настроечных параметров расчета SSS

Здесь же присутствует список готовых наборов коэффициентов для некоторых материалов - мрамора, кожи, молока и другие, всего 12 материалов. Нужно отметить, что подбор правильных коэффициентов физической модели подповерхностного рассеяния для новых материалов является очень непростой задачей, что может серьезно ограничить использование такого метода расчета SSS.

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



Расчет SSS, ray trace тени, время 22 минуты

Каустика в текущей версии Amaretto не реализована (не работоспособна), исправлений стоит ждать только к следующему релизу. Пока не реализована в Amaretto и система кэширования расчетов освещения Sorbetto.

Расчеты GI, sss, ambient occlusion не ускоряются видеокартой (сравнительное тестирование времени расчетов проводилось для GF FX 5700 и GF FX 6600 GT на той же системе ), кроме, может быть, этапа сборки сэмплов в финальное изображение. Напомню, что все из этих алгоритмов интенсивно используют трассировку лучей.

Рендеринг может быть выполнен в трех различных режимах:

  • Direct to Gelato, сцена транслируется в pyg "на лету" и передается Gelato для рендеринга
  • Export and Render, сцена транслируется в pyg-файл, затем вызывается Gelato. При этом на диске создаются и сохраняются сам файл описания сцены, все необходимые файлы текстур, кэш-файлы и пакетный .bat файл, который может быть использован для рендеринга только с Gelato из командной строки, без необходимости запуска 3ds max
  • Export Only, выполняется только экспорт файлов, без вызова Gelato для рендеринга. Для работы наиболее предпочтителен второй режим, Export and Render, поскольку он работает более стабильно и удобен для повторного рендеринга без 3ds max. Кроме того, в этом режиме рендеринг идет как независимый от 3ds max процесс, что позволяет совершенно спокойно продолжить работу со сценой в 3ds max

Вывод изображения в процессе расчета выполняется в iv, собственный фрейм буфер Gelato. Форматом сохранения изображения по умолчанию является exr в реальном числовом представлении с плавающей запятой (не RGB), что также очень удобно, поскольку позволяет гибко и без потерь выполнять гамма - коррекцию и экспозицию изображения, например в Adobe Photoshop.

Подведем итоги.

Потенциально, как программируемая рендер - система, Gelato может все то же, что могут и mental ray, и renderman. А практически, реализация этого потенциала зависит от наличия и качества библиотеки готовых к использованию шейдеров. Прямо сейчас, Gelato является быстрой и качественной альтернативой стандартному скан-лайн методу рендеринга в сценах, не требующих использования трассировки лучей. Именно в таких сценах вычислительная мощь видеокарты будет полностью востребована. Кроме того, не нужно забывать, что base - версия Gelato, в отличие от mental ray и renderman, является бесплатной, а значит, ее посредством мы получаем бесплатную возможность выполнения расчетов ao, sss, gi, caustics. Несомненным плюсом является также полная открытость и документированность возможностей Gelato. Будущее Gelato выглядит довольно перспективно, как благодаря расширению и улучшению возможностей самой системы в последующих релизах, так и благодаря тому, что производительность видеокарт и спектр их возможностей со временем будут только возрастать.

Пользователи Maya получают все выгоды использования Gelato, "без купюр", поскольку Mango реализует их в полной мере, и к тому же, хорошо документирован. Бета-версия Amaretto пока "сыровата" и потому несколько недружелюбна в отношении пользователя. Тем не менее, уже сейчас в 3ds max с Gelato вполне можно работать. Я думаю, выход полноценной версии не заставит себя долго ждать.

8 июня 2006 Г.

Gelato

Gelato

NVIDIA Gelato , Quadro FX.

, , , , - . , , Gelato , , .

Gelato . , .

- , Gelato :

  • ,
  • C++ API . Gelato , - . API , -
  • - Gelato . Gelato Mango, Gelato Maya, Amaretto, Gelato 3ds max

Gelato , . , Gelato , mental ray renderman.

, Maya 3ds max, Gelato .
? Gelato , , motion blur DOF (depth of field), , , NURBS subdivision surfaces, , , , , .

. , . , , Gelato.

Gelato, : (basic mode) Pro. , - . : http://www.nvidia.com/page/gelato_download.html

Pro- :

  • Sorbetto
  • 64-
  • DSO shadeops
  • -

Gelato Quadro FX, GeForce FX, GF FX 5200. Gelato NVIDIA.

Gelato Microsoft Windows XP 32 ( Service Pack 2) 64, RedHat Linux 7.2 Pentium III , AMD Athlon AMD Opteron. , , NVIDIA GeForce 5200 NVIDIA Quadro FX Pro 81.67 (XP) .

Win XP. Gelato - , Python - - Mango Amaretto. , , .

, :

  • gelato.exe: pyg
  • gslc.exe:
  • iv: , , frame buffer
  • maketx.exe: .tx, Gelato
  • topyg.exe: Pyg,
  • libgelato.dll: Gelato (shared library)
  • .dll , - pthread.dll, python.dll, cg.dll
bin.

, lib (*.imageo.dll) (*.generator.dll). , "" Gelato C++ . , . topyg.exe, lib "" . pyg.generator.dll, Gelato pyg. - rib.generator.dll, Gelato RIB. NVIDIA(http://film.nvidia.com/page/gelato_download.html#plugin). RIB- rsl2gsl, renderman Gelato.
, , mental ray. , API-. , NVIDIA , , .

Gelato , , , , , .

Gelato GSL - Gelato Shading Language. . , gslc.exe. gsl, gso.

, , Check Gelato, DOS- Gelato.

, , Python. , Gelato - , . API . , (, "" ), Gelato Python - pyg.generator.dll. Phyton pyg - Python for Gelato Gelato. , - Maya 3ds max pyg- Gelato .

Phyton , , , C++. " " Python. pyg- Python , pyg.generator.dll. Phyton Gelato (coloredquads.pyg).

, - Maya 6/6.5/7 ( Mango) 3ds max 6/7/8(Amaretto). .

, , Gelato - pig, Maya 3ds max.

Gelato? , NVIDIA. pig rib .bat - . , , : ( pdf). , : GF FX 5200, 5700 6600 GT.

AMD Athlon 2500, 500 RAM WinXP SP2 ForceWare 81.95.

:

  • ambocc.bat - ambient occlusion
  • hairymonster.bat - , rib.generator.dll
  • DOF.bat - depth of field
  • killeroo-mb.bat - motion blur
  • MSMB.bat - motion blur
  • killerooparty-1920.bat - NURBS- (-), displacement
  • trooperoo-1024.bat - , (8000 )
  • SloppySam.mb -
  • caustics.bat - -

, ray tracing. , EvalNotes-Gelato0605.pdf. NVIDIA , .

1,

() GF FX 5200 GF FX 5700 GF FX 6600 GT
ambocc.bat 60,1 60,1 60,1
hairymonster.bat 2708 2511 2300
DOF.bat 1371 1061 1035
killeroo-mb.bat 36,76 23,26 22,9
MSMB.bat 11 10,83 5,8
killerooparty-1920.bat 79 73 72
trooperoo-1024.bat 1237 1232 1213
SloppySam.mb(Maya 7) 190 190 190
caustics.bat 29,7 29,3 28,2

2,
C (%) GF FX 5200

GF FX 5700 GF FX 6600 GT 5700/6600 GT
ambocc.bat 0 0 0
hairymonster.bat 7,3 15,1 7,8
DOF.bat 22,6 24,5 2
killeroo-mb.bat 36,7 37,7 1
MSMB.bat 1,6 47,3 45,7
killerooparty-1920.bat 7,8 8,9 1,3
trooperoo-1024.bat 0,4 1,9 1,5
SloppySam.mb(Maya 7) 0 0 0
caustics.bat 1,4 5 3,7

, . , .

, motion blur ( ) depth of field (, ). (hair). (caustics), ambient occlusion (ao) (sss) . , caustics, ao sss, ray tracing . , Gelato ray tracing. , Gelato , , . , depth map Gelato .

- Gelato Maya (Mango) 3ds max (Amaretto).

Mango

Mango , , Maya Gelato. - Gelato Maya . Mango Maya - , , . , Maya Gelato, .

Mango

Maya Render View (MRV) iv - Gelato. , , Mango, MRV . , Gelato. , iv "kill process" , . , iv .

Maya pyg-, ASCII, . , Maya. pyg- : ( Maya), ( ), pyg- .

Mango , Hypershade node, Gelato. . , Maya Gelato . , . Mango Maya: lambert, blinn phong. , .
, , Mango.

Gelato , Gelato lambert, blinn phong.



Gelato

- .

Gelato - , displacement- . Maya Gelato>Override shader, Maya - shading network.

Mango Maya: ambient, point, spot, directional. area . , . , Gelato, : ambient, point, spot, directional : indirectlight, (GI), uberlight, . , Gelato, - ambient occlusion.




Gelato Maya

. Mango : Depth Map, shadow map Woo trick, ray trace . . Gelato ( ) . , , , ambient occlusion, sss Mango .

, - . Mango - , , : , - indirectlight. HDRI envsurf.

ambient occlusion . , , ambient Render Globals.

- , .

, Mango Gelato - . , .
: "" Maya.

Gelato - (relighting) Sorbetto. Sorbetto , , / . Mango Sorbetto Maya, basic mode .

Python,

Mango Maya, , - Gelato .
Mango, Render Globals : , motion blur, ambient occlusion, .



Gelato

Gelato . Sahding Quality Default per Object Attributes. . , -. 1 ( ), . - Preview Raytracing Quality.

Global Illumination, , Ambient Occlusion ( occlusion ), .
Render Globals ( Special Shaders), . , , -.

Mango Maya: NURBS, , subdivision - ( hierarchical), ( - ), - Paint Effects Maya Hair, Fur Cloth. subdivision , Catmull- Clark (Shape) .



Caustics



Maya Mango . techref.pdf, Gelato.

Amaretto 0.6.11

Amaretto - - Gelato 3ds max 6/7/8, Frantic Films Software, C++ MAXScript . - . , Amaretto Gelato. , MAXScript, - , .



Amaretto

Amaretto . , - Gelato Amaretto: Path Configuration ( Amaretto ).

Amaretto : Render Scene > Assign Render. , , Amaretto Material Editor, Scanline Renderer. . Amaretto - .



Amaretto
Material Editor

Amaretto 3ds max (Mesh Poly), Subdivision surfaces, ( ). NURBS Bezier Patches . Gelato, : TriMesh, , PolyMesh, n-, n>3. , . Amaretto , - Amaretto Attributes, - , subdivision surfaces (Catmull-Clark SDS), , - PYG-. , proxy PYG-, pyg-.




Amaretto Attributes

3ds max: omni, directional, spot, ambient, . - Amaretto Light.




Amaretto Light

( , ), , advanced raytraced.



3ds max : Blinn, Phong, Strauss, Anisotropic, Oren-Nayar-Blinn, Metal. .
, Blend, multi/sub, composite 30 ( ). .

Amaretto max shading network Gelato ( connection shaders), - 3ds max . 4 ( 100, max) . , Amaretto - GSO Base.



GSO Base

GSO Base Gelato. : , displacement . GSO Base Multi/Sub material, max GSO Base > Surface . :



shading network GSO
Base GSO sur_oakplank



GSO Base
max
GSO disp_dented



Gelato

Gelato GSO , : surf_ - , disp_ - , vol_ - .

Material Editor, GUI.



,
GUI Material Editor

Depth of field motion blur Gelato , multisegmented motion blur, .



DOF, 1 20



motion blur



mb , 1 45

depth of field motion blur , , .

Ambient occlusion ao surf_ambocclude occlusionname geometry set: "shadow" "reflection". , .



Ambient occlusion, 1. 45
.

Global Illumination Amaretto: Ray tracing, Global Illumination and Subsurface Scattering. , - . Gelato - . : , , . , , .



, - advanced raytraced, - 1 20

(SSS) Amaretto -. ( Amaretto 0.6.11) Amaretto SSS Map, :



sss

- ( ) , : (RGB).



SSS

- , , , 12 . , , SSS.

, .



SSS, ray trace , 22

Amaretto ( ), . Amaretto Sorbetto.

GI, sss, ambient occlusion ( GF FX 5700 GF FX 6600 GT ), , , . , .

:

  • Direct to Gelato, pyg " " Gelato
  • Export and Render, pyg-, Gelato. , , - .bat , Gelato , 3ds max
  • Export Only, , Gelato . , Export and Render, 3ds max. , 3ds max , 3ds max

iv, Gelato. exr ( RGB), , - , Adobe Photoshop.

.

, - , Gelato , mental ray, renderman. , . , Gelato - , . . , , base - Gelato, mental ray renderman, , , ao, sss, gi, caustics. Gelato. Gelato , , , .

Maya Gelato, " ", Mango , , . - Amaretto "" . , 3ds max Gelato . , .