1. Стандартный рендерер MAYA должен быть лучше, чем его предшественники - рендереры от TDI, Alias и Wavefront. В то же время, на начальных стадиях разработки нового рендерера вместо него использовалось проверенное старое решение - Alias Renderer - которое затем, по мере разработки, заменялось готовыми частями нового рендерера.
2. Стандартный рендерер должен быть максимально удобным в использовании и предоставлять пользователю максимум возможностей для настройки и доступа к “внутренностям”. Поскольку в качестве системы представления внутренних данных в MAYA выбран DAG (прямой незамкнутый граф), стандартный рендерер также должен быть привязан к этой системе, предоставлять для нее свои собственные ноды для настройки самого процесса рендеринга и использовать ноды от HyperShade для настройки свойств материалов.
3. Качество изображения должно быть высоким и предсказуемым.
4. Должно быть сделано асе возможное, чтобы ускорить рендеринг.
5. Поскольку рендерер является встроенным в MAYA, в большинстве случаев он будет выполняться одновременно со своим материнским приложением, что означает необходимость для рендерера быть гибким и нетребовательным по отношению к объему необходимой для работы памяти (просто потому, что память нужна и самой MAYA).
6. Новый рендерер должен быть по возможности универсальным и допускать расширение в будущем - без необходимости полного переписывания.
Что же, в результате, получилось у авторов MAYA Software Renderer? Опять-таки, не углубляясь в ненужные детали, укажем на основные особенности готового продукта:
• Стандартный рендерер MAYA - это адаптивный иерархический сканлайн-рендерер с возможностью использования рейтрейсинга. В нем, однако, не реализованы модные и потихоньку начинающие использоваться в производстве Global Illumination, Final Gathering, Ambient Occlusion Mapping. Данный рендерер - триангулирующий. To бишь в процессе подготовки к рендерингу он разбивает сцену на части, и каждая часть оценивается по количеству входящих в нее треугольников
- так рендерер пытается не выйти за обозначенные для него рамки доступной памяти.
Хотя было объявлено о наличии у рендера необходимой в работе гибкости, его оказалось невозможно расширять за счет плагинов, написанных пользователями. Все, что можно сделать, это реализовать собственные генераторы геометрии и дописать свои материалы для HyperShade
- доступ же к другим возможностям рендерера не обеспечивается (не говоря о, например, замене модулей или о встраивании в его собственный пайплайн(технологический конвейер). Впрочем, это
- мелкая неприятность: ведь многие современные рендереры не позволяют даже такой гибкости. Увы, дальше начинаются неприятности покрупнее.
• Для получения сколько-нибудь гладкой поверхности на любых поверхностях - кроме полигонов - этому рендереру требуется достичь очень высокого уровня тесселяции (разбиения на полигоны), что сказывается на общей производительности рендерера. Попросту говоря, любая попытка получить сколько-нибудь качественную картинку с использованием NURBS или Subdivision Surfaces обречена на долгое ожидание результата.