"Дышите глубже..." |
Как-то летом довелось мне новую версию 3DStudioMAX попробовать. Ох и навозилась я, ох и намоталась... То памяти ей не хватает, то процессор не нравится. С обменом дисков проблем не было - приходи в любой день и меняй. Наши продавцы - люди честные, но в товаре не сведущие. А так как живу я далече от рынка, то денег на моталки ушло немало. А уж сколько полезной информации, сколько мыслей дорожных в голову лезло... И вот, наконец, запустилась програмка... Да Бог с ним, с диском. Вот мысль дорожная запала. Обычно ведь как: нарисуешь чего, текстурку применишь, анимацию, если надо, эффектов там разных, а там и кофе заваришь, пока машинка считает - переводит геометрию в растровые образы. Долго ли коротко так было, но кофе нынче дорого, да и вредно оно, окаянное. И вспомнилась мне тут же Станция графическая (O2 зовется), что давно без дела стоит - программ нет, дорогие они и достать их можно не ближе, чем в Москве. А мысль все не покидала меня... И Москва эта не так уж далеко, с другой стороны, и к нам дошло. И вот дело-то в чем. Ведь кто у нас знает что-нибудь об этих Графических станциях? Разве только те, кто работает на них (мало их), причем только то, что быстрей они да подороже будут и что совсем это другие машины. А чем они лучше и что делать умеют? Вот такую информацию найти сложно. Даже книжек про них нет, а уж про отличие внутренностей их от PC так и вовсе не говорят.
И к нашему давешнему разговору это прямо относится, так как использование мощных машин приводит к реализму и потому художнику интересно, чего такого ему видеть нигде не приходилось. А ведь каждый из них стремится к реализму, потому и учится он в своих кульках.
Урок 2. Визуализация.
Итак, снова за дело! И прежде чем говорить о результатах визуализации и о том, как их получать, неплохо бы узнать, что представляют из себя графические объекты и как с ними машина общается, когда они в виде потоков информации бродят.
Концепция трехмерных объектов такова, что физические объекты, изображения которых воспроизводятся на экране, представляются в виде программных объектов, размещаемых в ОЗУ компьютера. Эти объекты посредством ПО преобразуются в совокупность многоугольников и сортируются в зависимости от их удаленности от наблюдателя. Процессор, именуемый сборщиком (compositor), в реальном времени осуществляет наложение текстур на многоугольники и направляет поток значений пикселов на цифро-аналоговый преобразователь. Но плотность графических данных такова, что для ее обработки нужен целый конвейер аппаратных средств. Различия между персоналками и графическими станциями как раз и заключаются в количестве и качестве устройств, принимающих данные в период между процессором и цифро-аналоговым преобразователем, то есть фактическим выводом на экран. Конвейер этот обычно состоит из этапов:
- Управление геометрией объекта
- Преобразование координат
- Освещенность (просчет разрешений и глубины)
- Просчет элементов изображения (то есть превращение векторов в растровые образы)
Теперь дело за реализацией сиих мотивов. Каждый из вас может написать программу, управляющуюся с той или иной функцией конвейера, например эффект дымки или сжатие текстур, однако практически функции эти просты и реализуются аппаратно. Так, основными для адаптеров трехмерной графики являются функции 3D-фильтрации, множественное разрешение текстур, эффект перспективы, дымки, наложение текстур и уже упомянутое сжатие этих же текстур.
Но все это можно реализовать как на станции, так и на персоналке. Различия же заключаются в том, что развитие тех и других идет по принципиально разным ветвям.
Обычная станция строится на основе нескольких, почти стандартных блоков или секций. Первой идет геометрическая секция, где сконцентрированы геометрические акселераторы. Они помогают на этапе построения, масштабирования и трансформаций объекта. Так же здесь находятся адаптер шины и геометрический концентратор. Последний... Хотя постойте, давайте сначала о различиях. А для этого предлагаю устремиться за потоком данных по всем этапам машинной обработки.
На этапе ввода данных различий практически нет. Причем, начальную обработку данных обе технологии делают с помощью центрального процессора. Далее, уже на этапе передачи данных для геометрических преобразований (фактически работы с векторами), применяются разные технологии и реализации шин. Так, у персоналок следующим этапом будет передача данных на AGP-порт, после чего данные двигаются к акселератору. На станции начальный поток попадает сразу на специальную шину, предназначенную только для начальной загрузки на конвейер. Далее попадают в геометрическую секцию. Здесь координаты вершин всех треугольников переводятся из трехмерных в двумерные. Делается это путем перемножения матриц размерности 4Х4, главным образом в формате с плавающей запятой. Это требует большого числа операций умножения с накоплением. (Поскольку обрабатываются числа с плавающей запятой, то данный процесс не может быть ускорен командами Intel MMX.)
Главные отличия тех и других в том, что в графических станциях процессы разделены на секции, каждая из которых имеет свой процессор и выполняет только свою задачу, независимо от своих соседей, то есть это параллельные процессы. Параллелизм - это основная стратегия разработчиков аппаратуры графических станций. В персоналке же блоков раздельно как таковых нет. Большинство вычислений выполняется центральным процессором, связанным с графической системой через AGP, обращения к которой сильно тормозят ход вычислений.
Вперед, уважаемые, ударим рендерингом по потоку данных!!!
Сначала информация из центрального процессора поступает на вход графической системы, где первым ее встречает геометрическая секция. Здесь станция предоставляет целый набор специальных геометрических процессоров, которые работают параллельно, что значительно повышает продуктивность на этом этапе. А конкретно здесь производится преобразование вершин в пиксельные отрезки прямых. Кроме того, станция на уровне микрокоманд поддерживает процедуры свободной деформации объектов. То есть в геометрическую секцию зашиты алгоритмы просчета поверхности модели при выполнении наиболее характерных движений. А это уже интересно. Предположим, человек умеет повернуть головой или поднять руку, и все это не потребует пересчета каждый раз, так как система уже знает и "может помочь" ему это сделать.
У Intel большинство 3D-чипов рассчитано на работу с пикселами, а операции с геометрией предоставлялись центральному процессору. Но не надо забывать о том, что эти самые их процессоры слабы на операциях с плавающей точкой, необходимых для задания многоугольников, а также в проверке границ производной на последнем этапе задания многоугольников.
Перейдем в растровую секцию.
Здесь наши данные, которые до сих пор представляли из себя набор формул и данных, должны преобразоваться в растровую карту, то есть в матрицу чисел. Станция предоставляет нам здесь специальный растровый процессор, процессор пикселов, ну и можно сюда отнести процессор текстур, хотя на некислородных машинах этот блок представляется как независимый. Работка здесь идет погорячее. Здесь находятся блоки деления чисел с плавающей запятой, а потом преобразования в числа с фиксированной запятой. Все это для того, чтобы получить ту самую растровую карту, а также обсчитать Z-буфер, А-канал, устранить искажения квантования, а потом произвести текстурное наложение. Вот, и все это реализовано отдельно, в отличие от персоналки. И к тому же процессоры Intel не сильны в преобразовании чисел с плавающей запятой в целые, что очень важно на данном этапе.
О текстурном наложении тоже нужно отдельно сказать. Здесь информация из предварительно записанных файлов накладывается на отрезки пиксельных прямых с учетом освещенности. В идеале, текстура должна распределяться по каждому отрезку пиксельной обработки так, чтобы сохранялась перспектива, и текстура была видна с нужного расстояния. У Intel загрузка текстур мешает передаче геометрии в очередь на растровый блок. На "Силиконе" эта проблема решена за счет введения специального фонового режима - текстуры загружаются в обход геометрической секции. Тракт фоновой загрузки происходит по специальным каналам SCSI, пропускная способность которых позволяет динамически подкачивать данные из дисковых файлов, что не исключает и традиционного способа подкачки через основную магистраль (это шина треугольников, относится, как вы понимаете, к станциям). Ну, а раз есть такое, то и в реальном времени не грех подкачать текстурку, а значит, и с игрушками проще.
Дальше у нас идет видеосекция. Здесь располагается знаменитый буфер кадров. Он связан с процессором пикселов, и на моем "Кислороде" содержит 80 Мегов. Хотя, по правде сказать, на этом типе графических станций буфер кадров не выделен в видеосекцию - будем считать это исключением. Задача этой секции - подготовка изображения и вывод его на экран. Под словом "подготовка" я имею в виду определение параметров системного монитора, предоставление пользователю возможности выбрать режим корректировки искажений и, наконец, возможность балансировки параметров растровой секции с нагрузкой на выходе. Последнее означает согласование разрешений выходного устройства и желаемой реалистичности.
У станций существует средство динамического изменения разрешения, что обеспечивает формирование кадров с фиксированной скоростью. Тем самым нагрузка на буфер кадров снижается и приложения с большими требованиями к системе выводятся с той же скоростью (но со снижением качества - этого в документации не упоминают). Хочу еще заметить, что в понятие "большие требования" входит высокая интенсивность рендеринга, заведомо превышающего возможности средств конвейера. А также станция предоставляет выбор режима коррекции искажений квантования. Квантование связано с понятием связности, когда значение цвета пиксела вычисляется путем усреднения подпозиций (соседних 4-х или 8-ми пикселов) при генерации видеосигнала.
Еще станция предоставляет преимущество на выходе данной секции. Здесь находятся несколькоканальные карты генератора видеосигнала, каждый из которых поддерживает некоторое количество форматов видеоданных. Пользователь, в зависимости от типа своего монитора и конфигурации системы, сам выбирает требуемое соотношение качество/скорость. Например, можно подключить стереодисплеи (виртуальный шлем) с разрешением до 1920х1080 и частотой 72 Гц или перчатки... Для этого в системе сосуществуют цифровые и композиторные порты.
У Intel в этом плане свои хитрости по прозвищу RAMDAC. Так, при работе с 24-разрядными образами он предоставляет возможность задействовать механизм гамма-коррекции, компенсирующий логарифмическую характеристику цветности ЭЛТ-дисплеев. При передаче пикселов на вход формирователей RGB-видеосигнала этот режим весьма полезен. Например, для визуализации трехмерных объектов с нелинейной раскраской поверхности. (Помните на НТВ шар, освещенный разноцветными источниками?) Это, конечно, уже давно реализуется на станциях, только организовано по-другому.
Немаловажную роль играет и способ передачи данных от секции к секции. Так как у станций много секций, то и шины между ними должны быть что надо... Здесь на все своя шина. Она одна знает, что нужно для передачи на данном этапе. Ее создали для специального применения, а значит ей можно доверять. С центральным процессором, например, подсистему связывает одна шина, геометрическую секцию с растровой - другая ("шина треугольников"), а загрузка текстур, как уже отмечалось, вообще имеет два пути. Пока проблем нет и даже большое их количество не дает такой задержки данных, как обращение к далекому процессору. То есть и здесь позиции станций довольно сильны.
Ну вот и прошли мы вместе с данными по всем этапам рендеринга. В какой архитектуре это было более удобно и безбольно? можно измерять количеством выпитого кофе и качеством получившейся картинки.
А теперь хочу отметить, что в последнее время станции переживают очередной кризис, несмотря на то, что по-прежнему оставляют за бортом персоналки по многим параметрам. Компания SGI, по слухам, увольняет сотрудников, а Intel не перестает демонстрировать миру свою фактически не состоявшуюся победу. Хотя, надо признать, что основные достоинства рабочих станций превосходно реализованы - не подкопаешься. Появившаяся в свое время архитектура Talisman позволила сократить разрыв в производительности машин разных категорий, классов и, если хотите, разных ориентаций. Но нельзя сказать, что это будет продолжаться вечно. Такая стратегия уже привела к тому, что в одном месте машину распирает от количества данных, а в другом месте этот блок данных не успевает перерабатываться. Да, шина стала для настольной архитектуры головной болью, и появление AGP - лишнее тому подтверждение. Но кто может утверждать, что это не есть начало и что персоналка не задохнется в собственных преимуществах? Выглядит эта вся конкуренция мировых гигантов как абсурд, направленный на уничтожение. А кто же создавать будет? Кому-то понадобилось перенести лабораторию кинематографии на стол, почти кухонный, где люди настроены поесть и поспать... Простите, а работать когда будем?..
Ирина АЛЬТ,
IrenALT@rfe.bsu.by
Горячие темы