Теперь примерим задачи трехмерной графики к возможностям рядового PC-совместимого компьютера. Реализация рендеринга требует значительного объема вычислений и оперирования с большими объемами информации, причем конечная цель потока обработанных данных — видеопамять графического адаптера. Еще с 2В-графикой стало ясно, что центральный процессор х86 (даже с расширением ММХ) не способен быстро формировать движущиеся изображения, а шина расширения (даже PCI) является «узким горлышком» для потоков данных, участвующих в видеопостроениях. Решением проблемы вывода трехмерной графики, как и раньше, явилось усиление «интеллекта» графической карты — появились 3B-акселераторы, реализующие значительную часть графического конвейера. На долю центрального процессора (возможно, с графическим сопроцессором) обычно выпадает начало конвейера (от трансформации до тесселяции), а его окончание (растеризация) выполняется акселератором графической карты.
Как ни странно, основным двигателем прогресса 3B-технологий являются игры — именно любители компьютерных игр являются главными (самыми массовыми) потребителями 3В-акселераторов. Более «серьезные» применения движущейся трехмерной графики — различные тренажеры-имитаторы полетов и езды — по сути тоже являются играми, только для серьезных людей. Трехмерная анимация, применяемая в современном телевидении и кинематографии, пока что реализуется не на массовых персональных компьютерах, а на более мощных рабочих станциях, но и там используются практически все вышеописанные элементы технологии.
Технологии построений, выполняемых 3B-акселераторами, постоянно совершенствуются, и описать все применяемые приемы в данной главе просто невозможно. Все новшества нацелены на достижение фотореалистических изображений игровых сцен с большой скоростью смены кадров (до 100 кадров/с), на экранах с большим разрешением (до 2048 х 1536) и в полноцветном режиме (True Color, 32 бита на пиксел). Конечно же, эти цели достигаются не ускорением «честных» расчетов для каждого элемента модели, а разными «обманными» приемами вроде текстур. Новинки технологий, применяемых в акселераторах, будут давать видимый (в прямом смысле) эффект, если их будут знать и использовать соответствующие приложения (игры) и поддерживать драйверы, через которые приложения взаимодействуют с аппаратными средствами графической карты. Именно драйверы отвечают за распределение обязанностей между центральным процессором и графическим процессором акселератора, и их корректность определяет качественные и количественные параметры графического конвейера. Много интересных подробностей работы 3B-акселераторов можно узнать на сайте iXBT.com, где публикуются обзоры новинок, а также статьи по теории трехмерных построений. Мощность акселератора определяется списком реализуемых функций рендеринга и качеством их выполнения, а также производительностью, измеряемой как по входу, так и по выходу. Поскольку на входе акселератор оперирует многоугольниками-тесселями, то интерес представляет их количество, обсчитываемое за единицу времени. Для определенности (и более внушительного абсолютного значения) берут параметр Mts (Mega Triangle per Second — миллионов треугольников в секунду). По выходу определяют скорость формирования пикселов в видеопамяти Mps (Mega Pixel per Second — миллионов пикселов в секунду).
Для работы акселератору требуется довольно много памяти: это пара буферов экрана (во время отображения одного буфера в другом строится новый кадр), Z-буфер, α-буфер (может вписываться в видеопамять), и память для хранения текстур (да еще и во многих экземплярах для MlPmap). Специализированный процессор акселератора, типовая разрядность которого 128 бит (а начинали с 32-64-битных), должен иметь доступ к памяти со скоростью, измеряемой единицами гигабайт в секунду. Такая производительность достижима для локальной памяти, установленной на графическом адаптере, — ни шина PCI, ни порт AGP не предоставят акселератору регулярный доступ к системной памяти на столь высоких скоростях. Даже у AGP пиковая производительность составляет всего 2,132 Гбайт/с в режиме 8х. Но это пиковая производительность в середине пакета при условии отсутствия обращений к памяти со стороны центрального процессора (а ему тоже ведь надо работать). Порт AGP позволяет акселератору пользоваться системной памятью для хранения текстур, что тоже неплохо. При этом снимается ограничение на размер описания текстур, которые без AGP приходилось держать в ограниченном объеме видеопамяти. На решение проблемы «тесноты» в свое время была нацелена и архитектура однородной памяти UMA, но в AGP, в отличие от UMA, сохраняется локальный видеобуфер на графическом адаптере и расширение доступной памяти не отзывается снижением производительности.
Трехмерные акселераторы для компьютерных игр на PC первой внедрила фирма 3dfx, до того занимавшаяся игровыми приставками, и 3dfx стало нарицательным именем 3B-акселератора. За несколько лет эта фирма выпустила серию акселераторов, большинство из которых называется Voodoo с различными номерами и добавлениями. Когда в требованиях к аппаратным средствам ПК в аннотациях к играм указывается «3dfx», это означает необходимость применения 3D-акселератора (может и не обязательно фирмы 3dfx). Никакие программные средства тут уже не помогут — достичь реализации замыслов разработчиков игры они не позволят.