`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

RenderMonkey -- важное звено в 3D-эволюции

0 
 

В мире компьютерной графики конференции Siggraph -- что-то вроде ежегодных землетрясений. Их результаты во многом определяют исследовательские приоритеты и расстановку сил между конкурентами, поэтому каждый участник стремится сделать все возможное, чтобы привлечь внимание к своим разработкам. Однако удается это лишь немногим.
Виюне прошлого года на Siggraph 2002 компания ATI Technologies на своем стенде организовала публичную демонстрацию относительно несложного (созданного в течение нескольких месяцев усилиями трех программистов) и довольно узкоспециализированного программного продукта под названием RenderMonkey. Казалось бы, с формальной точки зрения описание этой презентации выглядит безнадежно тускло. Ведь RenderMonkey был просто обречен затеряться в выставочных джунглях, сотрясаемых воплями монстров из Doom III и прочими громкими мультимиллионными акциями, проводимыми в рамках Siggraph 2002. Однако, как это ни парадоксально, обозреватели изданий, посвященных компьютерной графике, не только сочли появление RenderMonkey одним из знаковых событий прошлого года, но и продолжают пристально следить за развитием этого проекта.

RenderMonkey -- важное звено в 3D-эволюции
Пользовательский интерфейс RenderMonkey: нечто среднее между редактором материалов в программе 3D-моделирования и современной оконной средой IDE
RenderMonkey позволяет создавать и редактировать в интерактивном режиме множество сгруппированных в древовидную структуру параметров и блоков программного кода, управляющих внешним видом и анимацией трехмерных объектов, которые предполагается визуализовать с помощью программируемых 3D-ускорителей. Здесь и лежит ключ к пониманию указанного парадокса: RenderMonkey и другие подобные продукты актуальны постольку, поскольку они дают основание рассматривать программируемость новейших графических чипов не как рядовое технологическое усовершенствование, а как радикальное новшество, открывающее революционные возможности в области интерактивной 3D-визуализации. В настоящее время эти возможности во многом продолжают оставаться невостребованными, неопределенными и даже неисследованными. Один из наиболее перспективных инструментов, призванных исправить эту ситуацию, -- RenderMonkey.

Разумеется, никакая революция не осуществима без должным образом вызревшей революционной ситуации, т. е. без того, чтобы верхи (производители чипов) перестали быть в состоянии, а низы (потребители) перестали хотеть жить по-старому. Дело в том, что на определенном этапе традиционные (непрограммируемые) 3D-ускорители начали играть не столько стимулирующую, сколько тормозящую роль в развитии компьютерной графики. Вспомните игровую индустрию до 1995--1998 гг., когда право на жизнь имели не только традиционные Quake-подобные "движки", но и авангардные проекты вроде Ecstatica от Psygnosis, в рамках которых все анимированные объекты моделировались из эллипсоидов или Comanche от Novalogic, где впервые нашла применение "воксельная" техника визуализации сложных ландшафтов. Возможно, альтернативные миры этих игр не отличались фотореалистичностью, но они, безусловно, были очень разнообразны.

RenderMonkey -- важное звено в 3D-эволюции
Heaven7. Эти типичные изображения, просчитанные методом трассировки лучей, обладают одной уникальной особенностью: они были получены в реальном времени на обычном ПК класса Pentuim 4
RenderMonkey -- важное звено в 3D-эволюции
RenderMonkey -- важное звено в 3D-эволюции
RenderMonkey -- важное звено в 3D-эволюции
После 1998 г. в мире игровых и мультимедийных приложений воцарился удушающий диктат традиционных, исключительно аппаратных ускорителей. Для описания сложившейся ситуации уместно перефразировать знаменитые слова Генри Форда: "Ваша программа может оперировать графическими примитивами любого типа -- при условии, что это будут треугольники; для визуализации объектов она может использовать любой алгоритм -- при условии, что это алгоритм Гуро; для удаления невидимых поверхностей можно выбрать любой метод -- при условии, что это метод z-буферизации, и т. д.". Трудно представить, сколько оригинальных дизайнерских и программистских идей оказались отсеченными с помощью прокрустова ложа графического конвейера, намертво прошитого в ПЗУ видеоадаптеров! В результате даже наиболее технически изощренные игры становились похожими друг на друга, словно ножки одного стула. Не случайно в стане независимых программистов, работающих в области видеоарт, нарастал ропот: некоторые из них принципиально отказывались пользоваться возможностями традиционных аппаратных 3D-ускорителей. К этому их подталкивало не только инстинктивное желание противостоять потоку массовых решений, но и опасение за свою творческую свободу.

В 2000--2001 гг. произошел ряд неприметных, но важных событий, показавших, что эволюция 3D-акселераторов в их традиционном виде основательно зашла в тупик и что вряд ли дальнейшее наращивание мегагерц и мегабайт на борту адаптеров сможет ее из этого тупика вывести. А именно: в академической среде завершились успехом несколько проектов, нацеленных на создание многопроцессорных программно-аппаратных комплексов, позволяющих использовать в интерактивных приложениях алгоритм трассировки лучей. Кроме того, венгерская группа видеоарт-программистов Exceed (http://warp.exceed.hu) создала программу Heaven7, демонстрирующую возможность полноценной и полноэкранной трассировки лучей в реальном времени на современных процессорах с тактовыми частотами в несколько гигагерц.

Для показа этой замечательной программы в рамках Siggraph 2002 в павильоне Intel была устроена особая художественная инсталляция из множества мониторов. Здесь необходимо отметить что, в отличие от маргинальной техники эллипсоидального моделирования трассировка лучей обеспечивает бескомпромиссный фотореализм и характеризуется при этом безнадежной несовместимостью с традиционными концепциями аппаратного 3D-ускорения. Заметим, что в последнее время всплеск интереса к трассировке лучей наблюдается не только в области интерактивных приложений. Этим методом было полностью просчитано несколько коммерчески успешных полнометражных мультфильмов; один из них -- The Ice Age.

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

Этим изменением стала программируемость, т. е. поддержка вершинных и пиксельных шейдеров в чипах GeForce3 от NVidia и Radeon 8500 от ATI (обе карты появились в 2001 г.). В данном контексте под шейдером понимается программа, написанная на специальном языке ассемблерного типа. Его команды оптимизированы для широко распространенных в практике графических вычислений операций над 4-местными векторными регистрами. Различаются входные, выходные и временные регистры, а также регистры, предназначенные для хранения констант. Одного 4-местного регистра достаточно для хранения информации о цвете и прозрачности тексела (текстурного пиксела) или же для всех компонент кватерниона (x, y, z, w), задающего ориентацию объекта в пространстве. Благодаря этому ассемблерные выражения могут записываться в очень компактной и вычислительно эффективной форме.

В качестве примера рассмотрим небольшой фрагмент типичного вершинного шейдера:

dp3 r0, c0, v2
max oD0, r0, c1,

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

r0.x = r0.x = r0.z = r0.w = c0.x* *v2.x + c0.y*v2.y + c0.z*v2.z;

Предполагается, что константный регистр c0 содержит направление на источник света, а все компоненты регистра c1 обнулены (установка значений константных регистров производится центральным процессором перед регенерацией очередного кадра).

Во входном регистре v2 находятся компоненты нормали к поверхности объекта (значения входных регистров автоматически определяются для каждой связанной с шейдером вершины).

Действие команды max в данном случае может быть описано следующим образом:

oD0.x = (r0.x >= c1.x) ? r0.x : c1.x;
oD0.y = (r0.y >= c1.y) ? r0.y : c1.y;
oD0.z = (r0.z >= c1.z) ? r0.z : c1.z;
oD0.w = (r0.w >= c1.w) ? r0.w : c1.w;

Результатом выполнения шейдера является присвоение вычисленных значений ряду выходных регистров. Один из таких регистров -- oD0 -- предназначается для хранения диффузного компонента светового потока, рассеиваемого поверхностью объекта в данной вершине.

Для программирования 3D-ускорителей существуют и языки высокого уровня, например Cg (C for Graphics), разработанный в компании NVidia, или HLSL (High Level Shading Language) от Microsoft. Вот какой вид может приобрести рассмотренный нами фрагмент ассемблерного кода в переложении на HLSL:

float4 lightdirection =
constant[0];
OUT.Diffuse = max(dp3(IN.Normal,
lightdirection), 0);

Хоть это выражение и не столь компактно, зато более читабельно. Предполагается, что высокоуровневые языки приобретут актуальность в скором времени, когда будет смягчена жесткость нынешних ограничений, налагаемых на длину ассемблерного кода, а также отменен запрет на применение циклов и ветвлений. Впрочем, RenderMonkey поддерживает HLSL уже сейчас.

RenderMonkey -- важное звено в 3D-эволюции
Одним из последних достижений, представленных ATI на Siggraph 2002, стала технология визуализации меха в реальном времени...
Наиболее прямолинейным примером использования возможностей, предоставляемых шейдерами в их нынешнем виде, служит анимация водной поверхности, выполняющаяся безо всякого участия центрального процессора: вершинные шейдеры в этом случае реализуют волнообразное движение вершин многогранника, аппроксимирующего водную поверхность, а пиксельные -- отклоняют поверхностные нормали в каждом пикселе с целью имитации мелкой ряби.

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

RenderMonkey -- важное звено в 3D-эволюции
...и теперь с помощью RenderMonkey всякий желающий может встроить эту технологию в свое приложение
PRMan, созданный Pixar более 10 лет назад, использовался для просчета знаменитых мультфильмов этой компании, включая The Toy Story, а также множество фильмов с компьютерными спецэффектами (например, Terminator 2). Отсутствие поддержки трассировки лучей в PRMan зачастую затрудняло визуализацию сцен, изобилующих преломляющими и отражающими материалами. Несколько лет назад появление очередной версии PRMan (v.3.8), которая к тому времени уже обрела способность работать с очень сложными шейдерами, позволило найти остроумное решение этой проблемы. В качестве шейдеров к нему стали подключать полноценные трассировщики лучей, например BMRT. Именно такой подход был применен для просчета некоторых сцен в мультфильме The Bug's Life (вспомните муравьев, застигнутых дождем, а также другие кадры, где крупным планом показаны капли воды).

Кстати, еще одна причина, по которой первый renderman-совместимый модуль PRMan достоин упоминания в этой статье, состоит в том, что термины renderman и RenderMonkey объединены отнюдь не случайным созвучием: отличительной чертой обеих технологий визуализации является ориентация на использование программируемых шейдеров.

Текущая версия RenderMonkey (v.0.93 Beta Release) предназначена для работы в новейшей среде Direct3D 9.0. Получить программу можно бесплатно по адресу www. ati.com/developer/sdk/radeonSDK/html/Tools/RenderMonkey.html. Объем инсталляционного файла, включающего документацию в формате PDF, составляет около 20 MB. Отрадно, что наличие программируемого 3D-ускорителя не входит в перечень обязательных требований программы, поскольку библиотека DirectX 9.0 предусматривает возможность обсчета как вершинных, так и пиксельных шейдеров на центральном процессоре. Впрочем, эмуляция делает работу с RenderMonkey в интерактивном режиме весьма затруднительной: длительность регенерации изображения возрастает катастрофически и может достигать нескольких секунд, а в особо сложных случаях -- и минут.

Интерфейс RenderMonkey интуитивен и совместим со стандартом MS Visual Studio. Рабочее пространство разделено на три основные зоны: броузера эффектов, служебных сообщений и визуализации. Согласно терминологии, которой придерживаются разработчики из ATI, совокупность элементов древовидной структуры, отображаемой в окне броузера, называется эффектом. В комплект поставки входят 11 готовых эффектов, позволяющих визуализовать поверхности мыльных пузырей, воды, древесины, металла с анизотропными характеристиками отражения, меха и т. д. Двойной щелчок левой клавишей мыши по любому из элементов дерева приводит к вызову соответствующих инструментов его редактирования. Синтаксические конструкции исходного кода шейдеров выделяются разными цветами. Всякое изменение любого элемента приводит к мгновенному перерисовыванию содержимого окна визуализации. Для сохранения результатов используется стандартный формат XML, позволяющий разработчикам легко организовывать импорт настроек эффекта в свои приложения.

Впечатления от RenderMonkey напоминают нечто среднее между опытом создания материалов в соответствующем модуле 3ds max или Maya и опытом программирования в современной оконной среде IDE. Впрочем, здесь необходимо учесть возможность переключения между двумя режимами: Programmer и Artist. Предполагается, что это будет способствовать организации тесного и продуктивного взаимодействия специалистов разного профиля в рамках единого проекта (если "программист" имеет доступ ко всем листьям дерева, то "художник" -- лишь к тем, к которым его, по мнению "программиста", целесообразно допустить).

Несмотря на оригинальность общей идеи и множество неоспоримых частных достоинств RenderMonkey, прежде всего, является оружием конкурентной борьбы в руках ATI. Поэтому нет ничего удивительного в том, что наиболее эффективно и устойчиво она работает с чипами серии Radeon, и вряд ли в будущем нам стоит надеяться на исправление этого перекоса. Однако подождем выхода официальной версии...

А в заключение хотелось бы признаться, что первым обстоятельством, поразившим мое воображение при знакомстве со вновь инсталлированной программой, стало обнаружение в верхней строке окошка About следующего неожиданного буквосочетания: Natasha Tatarchuk. Рад сообщить читателям-патриотам, что предчувствия меня не обманули: одним из трех программистов проекта RenderMonkey оказалась наша бывшая соотечественница, некогда проживавшая в славном городе Виннице!
0 
 

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT