Профессиональные OpenGL-акселераторы |
||
Что такое OpenGL Прежде чем переходить к описанию и причинам появления API OpenGL, давайте прольем немного света на само понятие "API". Итак, API (Application Program Interface) -- интерфейс прикладных программ. Некий стандартизованный разработчиком набор функций, предназначенный для выполнения определенных задач в заданной предметной области. Если говорить о нашей теме, любой графический API (к которым относится и OpenGL) -- это набор функций для манипулирования графическими примитивами и эффектами. Привлекательность любого 3D API для разработчика состоит в том, что создание драйвера, который преобразует вызовы функций API в коды "графического ассемблера" конкретного чипа, является исключительной заботой его авторов. Программист просто использует вызовы OpenGL, не заботясь о том, каким именно образом они приведут к формированию "картинки", -- этим занимается уже сам драйвер видеокарты. Следовательно, можно сосредоточиться на основной задаче (к примеру, создании программы для 3D-моделирования), используя готовый набор стандартных процедур для вывода изображения на экран. Появление API OpenGL, как это ни покажется странным сегодняшнему поколению игроков, практически не связано с их фаворитом -- компанией id Software и ее детищем -- Quake. Перед его разработчиками стояли совершенно другие и отнюдь не "игрушечные" вопросы. Основной целью создания OpenGL была необходимость дать в руки людям, занимающимся написанием программ, удобный инструмент для решения их задач. Именно эти цели преследовала компания Silicon Graphics, когда приступала к разработке этого стандарта. И лишь потом авторы игр, заметив исключительную эффективность OpenGL при моделировании 3D-объектов, взяли его на вооружение. Профессиональный OpenGL vs. игровой Прежде всего следует однозначно разграничить так называемый "игровой" OpenGL и используемый в профессиональных приложениях. Казалось бы, само понятие API не предусматривает разделения по области применения, однако, как это часто бывает, реальность вносит определенные коррективы. Фактически "игрового OpenGL" действительно не существует. Употребляя этот термин, мы имеем в виду просто-напросто некую урезанную версию этого API, реализованную в большинстве "пользовательских" 3D-акселераторов. Это означает, что основное внимание уделяется функциям OpenGL, использующимся в играх. Прочие функции, поддержкой которых "интересуются" только профессиональные приложения, либо не реализуются вовсе (к чести производителей стоит сказать, что такой подход в последнее время все более редок), либо реализуются, что называется, "спустя рукава" -- зачастую не совсем корректно или не лучшим с точки зрения быстродействия и/или качества способом. Качество или скорость? Привыкшие к полному господству fps (frames per second -- кадры в секунду) игроки, как правило, не слишком сильно интересуются качеством рендеринга каждого отдельного кадра. И это вполне объяснимо: в современных 3D-шутерах, которые составляют большинство наиболее сильно "нагружающих" 3D-акселераторы приложений, попросту нет времени для разглядывания красот интерьеров, облачения и лиц соперников. Тактика этих игр проста: выигрывает тот, кто быстрее, тот, у кого лучше реакция, тот, у кого рефлексы доведены до автоматизма. Тут уж не до восхищения графикой. Поэтому как разработчики, так и игроки вполне могут себе позволить пожертвовать качеством рендеринга, детализацией персонажей и их окружения. Совершенно другая ситуация при профессиональном 3D-моделировании. Здесь на первый план выходит точность воспроизведения отдельно взятого объекта в сцене, качество рендеринга каждого кадра в ролике. Чем точнее воспроизведена задумка дизайнера, тем лучше, скорость при этом отходит на второй план. Главное, чтобы окончательный продукт получился наиболее похожим на "не смоделированную" реальность, т. е. имел то самое пресловутое "фотографическое качество" рендеринга, которое, несмотря на все многочисленные заявления разработчиков игр, до сих пор остается уделом именно профессионального моделирования. Конечно, скорость тоже нельзя совершенно не учитывать, однако если художнику предложить выбор между скоростью и качеством воспроизведения его идеи, он выберет, скорее всего, именно качество. Fillrate vs. Polygons Также заслуживает внимания одно весьма существенное различие между игровыми и профессиональными OpenGL-приложениями, состоящее в разных требованиях к скорости акселератора относительно конкретных аспектов 3D-рендеринга. Как правило, в играх повышенное внимание уделяется так называемой "реалистичности" изображения, что в конечном итоге в условиях быстрой смены кадров сводится к их большей "цветастости", т. е. текстурной наполненности. Действительно, если невозможно оценить (за счет динамичности игры) каждую отдельную деталь интерьера или фигуры противника, можно либо отрисовать более "реально" ту часть, которая находится в данный момент времени ближе всего к игроку (к примеру, лицо), либо восполнить недостаток реалистичности более насыщенной, "мультипликационной" гаммой текстур (Quake III). Как первый, так и второй способы предъявляют повышенные требования к одной и той же функции 3D-акселератора -- fillrate -- скорости наложения текстур. Это означает, что внешняя "красивость" модели однозначно приносится в жертву фактической ее четкости и прорисовке мелких, незаметных в игровых условиях деталей. Однако всегда ли и для всех ли приложений этот параметр является основополагающим? Нет, не всегда. Возьмем, к примеру, ситуацию, когда на месте игрока оказывается инженер, моделирующий фюзеляж истребителя. Так ли ему важно, текстурой какого качества будет обтянута его окончательная модель? Нет, качество текстур здесь отступает на второй план. Ему гораздо важнее получить точную копию фюзеляжа, т. е. модель, описанную как можно большим количеством полигонов. Поэтому в профессиональном OpenGL количество графических примитивов (полигонов), которыми описывается модель, зачастую намного больше, размер же накладываемых текстур -- меньше. Учитывая то, что за оба действия в 3D-акселераторах (даже в игровых) отвечают совершенно разные аппаратные части чипа, неудивительна часто видимая "беспомощность" игровых чипов в профессиональном OpenGL, и наоборот. Оконный рендеринг Как ни странно, очень многие игровые 3D-акселераторы испытывают довольно большие трудности при выполнении такой элементарной операции, как рендеринг трехмерной сцены с использованием OpenGL API в окне. Опять же это связано именно с игровой направленностью этих карт и соответствующей оптимизацией драйверов. Действительно, вряд ли кто-то предпочтет для 3D-шутера оконный режим, так как сама специфика подобной игры предусматривает полное сосредоточение именно на процессе ее прохождения и ни на чем более, поэтому все "отвлекающие" моменты начинают играть роль лишнего раздражителя. Таким образом, в драйверах игровых акселераторов наибольшее внимание уделяется именно полноэкранному режиму. Многопроцессорная оптимизация На сегодняшний день только Quake III обладает способностью частично задействовать второй процессор системы. И то, поддержка эта несколько "странная": при использовании низких разрешений она действительно дает прирост производительности, а при использовании высоких ситуация меняется "с точностью до наоборот" -- включение SMP не только не повышает производительность, а наоборот, уменьшает ее. Объяснение этому довольно простое -- еще нет игр, полностью использующих преимущества SMP. Да их и не может появиться в ближайшем обозримом будущем по той простой причине, что слишком уж дорога мультипроцессорная платформа даже для серьезного геймера. Существует распространенное заблуждение, что запуск приложения под управлением ОС, поддерживающей SMP, автоматически обеспечивает его задействование самим приложением. Однако это в корне неверно. Для того чтобы обеспечить полноценное использование этой технологии, необходимым условием является ее поддержка как со стороны ОС, так и со стороны программы, так называемая "мультипоточность" кода (multi-threads). Игры на сегодняшний день не относятся к классу приложений, использующих SMP. А как обстоит дело в стане профессиональных OpenGL-приложений? Здесь ситуация противоположная -- как приложения, так и драйверы видеокарт обеспечивают полноценную поддержку мультипроцессорности, так что пользователи смогут ощутить в полной мере преимущества от применения полного спектра ПО и hardware, использующего SMP. Довольно типичный пример -- драйверы Power Threads OpenGL ICD от 3Dlabs, "официально" оптимизированные под задействование до восьми CPU, и программа 3D Studio Max, ускорение рендеринга в которой при переходе от одного CPU к двум достигает 1,7 раза! Профессиональные OpenGL-ускорители 3Dlabs Весь ассортимент ускорителей, выпускаемый этой фирмой, можно разделить на три группы. 1. Недорогие ускорители начального уровня, ориентированные на не слишком требовательных пользователей, для которых большое значение при выборе карты имеет цена, но в то же время необходима полная поддержка стандарта OpenGL. Сюда входят карты серии Oxygen VX. 2. Ускорители среднего класса, рассчитанные на пользователя, который готов платить за скорость. В этот ряд входят высокопроизводительные карты серии Oxygen GVX. 3. И наконец, настоящий high-end -- высочайшая производительность. Это акселераторы серий Wildcat и Wildcat II. Oxygen VX. Все карты, относящиеся к данному семейству акселераторов, построены на основе процессора растеризации GLINT R3 и поставляются с драйвером Power Threads OpenGL, поддерживающим мультипроцессорность. Также в комплект поставки этих карт входят: программа Vibrant Soft Engine 4, повышающая производительность в AutoCAD, и утилита Colorific, служащая для цветовой калибровки дисплея и принтера. Ввиду отсутствия в картах этой серии встроенного геометрического процессора ускорение таких операций осуществляется через все тот же драйвер Power Threads OpenGL. В акселераторах Oxygen VX1-1600SW реализована поддержка плоскопанельных мониторов Silicon Graphics 1600SW через встроенный LVDS-разъем, а серия VX1-Stereo оборудована адаптером и стереоочками от StereoGraphics Corporation. Oxygen GVX. Карты среднего ценового диапазона, обладающие на порядок большей, чем серия Oxygen VX1, производительностью за счет наличия полноценного геометрического процессора GLINT Gamma G1. По информации производителя, данный процессор дает 300%-ную прибавку в скорости при обработке полигональных моделей и источников освещения. Отличие Oxygen GVX1 и GVX1 Pro состоит в том, что в последнем используется растеризационный процессор GLINT R4, а в качестве геометрического процессора -- чип следующего поколения GLINT Gamma G2. Еще один представитель этой линейки -- Oxygen GVX210, также использующий в качестве геометрического сопроцессора GLINT Gamma G2, оборудован уже не одним, а двумя GLINT R3. И наконец, Oxygen GVX420 -- два процессора GLINT R4, геометрический процессор GLINT Gamma G2, два стандартных и два DVI-выхода. Таким образом, Oxygen GVX210 является дальнейшим развитием GVX1, а Oxygen GVX420 -- GVX1 Pro. Wildcat. Ускорители этого семейства основаны на новейшей технологии Wildcat II и предоставляют широкому кругу пользователей максимальную мощность для достижения нового, более высокого уровня работы с графикой и сложными визуальными данными. Они признаны сегодня экспертами и профессионалами в компьютерной графике одними из самых передовых графических ускорителей, использующихся в настольных системах. Основная особенность архитектуры Wildcat -- перепрограммируемый геометрический процессор, который позволяет, по словам производителя, реализовывать новые функции аппаратных геометрических расчетов просто путем выпуска обновленных версий драйверов. Другая фирменная технология -- SuperScene antialiasing -- позволяет добиться непревзойденного качества при рендеринге сложных сцен, благодаря тому что эффект антиалиасинга применяется не к отдельным OpenGL-примитивам, а ко всей сцене целиком. FGL Graphics Семейство ускорителей под общей маркой FireGL состоит из четырех моделей: от самой младшей FireGL1 до высокоуровневого FireGL4. FireGL1. Модель построена на базе 256-битового растрового процессора от IBM, а геометрическая акселерация осуществляется программно. Чип оснащен встроенным RAMDAC с частотой 300 MHz, поддерживает шины AGP 2X и PCI. В комплект поставки всех карт входят драйверы для Windows NT/2000 и Linux, оптимизированные под наборы SMD-инструкций SSE и 3DNow!. FireGL2. Этот акселератор позиционируется производителем как идеальное решение в областях MCAD и Game development. Карта построена на базе растрового процессора IBM RC1000 и геометрического процессора IBM GT1000. В отличие от предыдущей модели FireGL2 оснащается не SGRAM, а более быстродействующей DDR-памятью, объем которой увеличен в два раза (с 32 до 64 MB). Кроме того, данный акселератор оборудован разъемом DVI-I, что позволяет ему выводить изображение на цифровые мониторы. FireGL3/FireGL4. Самые высокоуровневые карты в линейке FireGL, которые обеспечивают, по заявлению производителя, "непревзойденную мощь и качество в CAD-приложениях и при создании анимации". Обе карты имеют растровый процессор IBM RC1000 и геометрический процессор IBM GT1000, оборудованы 128 MB DDR SGRAM и поддерживают подключение до двух цифровых мониторов. E&S (Evans & Sutherland) В настоящий момент наиболее распространены акселераторы этой компании Tornado 3000 на базе чипа REALimage 3000 и Lightning 1200 на базе REALimage 1200. Графические чипы REALimage обладают очень внушительным списком возможностей: аппаратное затенение по Гуро, полный антиалиасинг, коррекция перспективы, попиксельная коррекция глубины. Кроме того, в акселераторах Evans & Sutherland используется редкая в настоящее время архитектура раздельной организации памяти: фрейм-буфер и текстуры хранятся в отдельных банках, причем даже тип используемой памяти у них разный. Для фрейм-буфера применяется 3DRAM -- двухпортовая память, имеющая свою собственную встроенную логику, которая оптимизирует обращения к ней. Для хранения текстур служит CDRAM -- фактически обычная SDRAM-память со встроенным в сами чипы дополнительным кэш-буфером. В результате такого подхода карты от E&S являются чрезвычайно удачным выбором для создания различных насыщенных эффектами компьютерных роликов, анимации и пользуются заслуженной популярностью в среде дизайнеров, работающих в кинематографии, а также... военных -- на их основе создано множество различных тренажеров, применяющих эффект "виртуальной реальности". NVidia Компания NVidia, ранее известная только своими игровыми акселераторами, с выходом чипа GeForce 256 принялась всерьез за разработку профессиональных. По крайней мере, такое сложилось впечатление. Однако бытует и другое мнение, что на самом деле начиная с GeForce 256 компания изначально разрабатывает именно профессиональные чипы, из которых потом искусственно "удаляются" некоторые функции, после чего они превращаются в игровые (вспомним примеры из другой области -- Intel Pentium III --> Celeron, AMD Athlon --> Duron и т. п.). Так или иначе, но с появлением каждого нового чипа серии GeForce, как правило, некоторое время спустя выпускается и весьма похожий на него по большинству технических характеристик чип профессиональной серии Quadro. На данный момент эта линейка состоит из трех чипов, которые мы и рассмотрим подробнее. Quadro. Этот чип был анонсирован после выхода GeForce 256, но до появления GeForce2 GTS, поэтому многие называют его функциональным аналогом первого. Пожалуй, даже на данный момент времени Quadro уже можно считать несколько устаревшим (опять-таки, как и GeForce 256). Quadro2 Pro/Quadro2 MXR. С известной долей вероятности можно считать, что в основу Quadro2 Pro лег чип GeForce2 GTS, а в основу Quadro2 MXR -- "облегченная" версия GeForce2 MX. Впрочем, как уже говорилось выше, трудно судить, что первично, а что вторично и являются ли профессиональные Quadro расширенными вариантами игровых GeForce или наоборот, GeForce -- это искусственно ограниченные Quadro. Фактически "братские" чипы действительно очень похожи -- DDR-память на 128-битовой шине у Quadro2 Pro и GeForce2 GTS, обычная SDRAM у Quadro2 MXR и GeForce2 MX, поддержка TwinView у двух последних и так далее. Пожалуй, из особенностей профессиональных чипов NVidia следует отметить только 32-битовый Z/Stencil Buffer (максимум 24-битовый у всей серии GeForce) и поддержку Hardware Antialiased Line Engine у Quadro2 Pro (у любого GeForce она отсутствует как таковая). Заключение Мир профессиональных OpenGL-акселераторов -- довольно замкнутое пространство. Привычные нам по игровому 3D постоянные новации, громкие анонсы и не менее громкие провалы доходят до обитателей этого мира с довольно большим опозданием и в очень "приглушенной" форме. И, в принципе, это естественно -- любой профессионал десять раз подумает, прежде чем менять хорошо знакомое и известное своей надежностью аппаратное решение на какой-то очередной "писк моды". С другой стороны, пользователи профессиональных OpenGL-ускорителей, как правило, гораздо менее стеснены в средствах, по крайней мере те, кто занимается этим серьезно (справедливости ради следует заметить, что "менее стесненными в средствах" чаще всего оказываются не конкретные дизайнеры, а фирмы, в которых они работают). Поэтому такое понятие, как соотношение цена/качество/производительность, привычное нам опять-таки по миру игрового 3D, в данном случае не является решающим фактором -- главное, чтобы не страдали качество и производительность, а цена -- заведомо очень и очень высока . Несомненно, профессиональный OpenGL -- очень интересная и своеобразная область применения 3D-ускорителей и совершенно отличная по основным требованиям, предъявляемым к компьютерному "железу", от игрового 3D.
|