http://ixbt.stack.nethttp://ixbt.stack.nethttp://ixbt.stack.net

Процессоры | Системные платы | Видеосистема | Носители информации | Мультимедиа | Периферия | Коммуникации | Поиск по сайту

Эпоха 3Dfx

iXBT Banner Network

Многие из вас, любителей компьютерных игр, наверняка слышали эту загадочную аббревиатуру - "3Dfx". В разговорах о новых играх встречались упоминания каких-то "патчей", с которыми игры становятся красивее и идут быстрее. Но что есть такое "3Dfx" - конкретно узнать у вас так и не получилось. Пришло время рассказать вам об этом.

Каменный век игровой индустрии.

Самые первые игры для персональных компьютеров условно можно разделить на два типа - плоские и векторные. К первому относились незабвенные "Digger", "Alley Cat", "Space commander", "Arcanoid", "Тетрис". Все они предоставляли игроку поле для действия, размер которого обычно соответствовал размеру графического экрана, и все происходило в двух измерениях. Спрайты с изображением движущихся объектов "перемещались" по экрану. Технология этого довольно проста. Запоминаем небольшой участок экрана, затем на этом участке рисуем спрайт. Как только требуется передвинуть спрайт - восстанавливаем старую картинку, запоминаем новый участок, рисуем наш спрайт на нем.

Другие же игры - "F-19", "Elite Plus",- гордо назывались "трехмерными", и в них виртуальность представляла собой конструкцию из линий и многоугольников, координаты которой обсчитывались с изменением игровой ситуации, и затем вся она проецировалась на плоскость, совпадавшую с плоскостью экрана.

Два этих типа игр были просты в написании, а главное - были по силам тогдашним процессорам и видеокартам.

Бронзовый век.

С появлением 386 процессоров программы начали использовать так называемый "защищенный" режим, обеспечивающий простой доступ к объемам памяти, большим чем пресловутый 640 килобайт. В связи с этим игры получили возможность создавать более сложные виртуальные миры.

Немного опередила развитие компьютеров фирма Id Software, которая выпустила сначала "Catacomb Abyss", а затем и "Wolfenstein 3D" - игры, которые считаются основоположниками жанра 3D-action. Игры эти шли еще на 286 процессорах, и являются ярким примером нового способа изображения виртуальности - текстурирование.

Во-первых, при этом способе, стены коридора, по которым бегает главный герой - это не просто одноцветные прямоугольники, а прямоугольные растровые картинки (то есть, состоящие из точек), например, рельеф кирпичной стены, или чей-нибудь портрет. Во-вторых, изображения врагов, которых игрок видел "глазами" персонажа, также были растровыми. Эффект присутствия в игре создавало масштабирование - при приближении к стене ее изображение увеличивалось, и соответствующим образом масштабировался рисунок ее текстуры. Но в этом же содержится и большой минус, который можно пояснить так: предположим, мы стоим лицом к стене на таком расстоянии от нее, на котором одна точка текстуры равняется одной точке экрана. Так как обычно для текстур использовались массивы 64х64 точки, в данном случае текстура на экране будет квадратом 64х64. Если уменьшать это расстояние, "подходить" к стене, точки текстуры должны "увеличиваться" - то есть, текстура должна занимать уже больший квадрат, прорисовывая одну и ту же точку несколько раз. Если уменьшить расстояние в два раза - каждая точка превратится в квадрат 2х2 пикселя, чтобы заполнить на экране квадрат 128х128. Ну а если подойти к стене вплотную, на экране мы увидим несколько больших разноцветных квадратов.

Из-за этого и при удалении от стены или от любого монстра тот превращался в несколько маленьких квадратиков, что выглядело не очень красиво.

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

Со временем появлялись новые типы процессоров. 486 уже предъявляли повышенные требования к видеокартам, и те также начали развиваться в сторону увеличения быстродействия.

Появлялись новые типы игр - полутрехмерный "DOOM", полностью трехмерный "Descent", игры с другими методами изображения реальности, типа "Voxel Space" из "Comanche". Появилось понятие "z-buffer".

Это метод удаления невидимых поверхностей при изображении сложных трехмерных сцен. Работает примерно так: есть два массива, в одном из которых хранится изображение, выводимое на экран (буфер кадра), в другом - расстояние до объектов от плоскости экрана (буфер глубины). Каждый предмет в сцене разлагается в растр (представляется набором точек), и для каждой точки считается расстояние до нее от экрана. И в буфер кадра заносятся, естественно, те точки, расстояние от которых до экрана минимально. После этого буфер кадра выводится на экран, и цикл повторяется. Метод прост в реализации, и потому используется почти во всех трехмерных играх.

При всем при этом, компьютеры все же не успевали за растущими потребностями игрового населения. Что самое обидное - игровые телеприставки типа SEGA или 3DO намного обгоняли PC по быстродействию, поскольку изначально были ориентированы на производство игр.

Железный век.

В один прекрасный для любителей IBM PC день, фирма 3Dfx Interactive, которая успешно делала видеочипы для игровых автоматов, решила расширить свой рынок, и перейти на PC. Это у нее получилось - да так хорошо, что только через полгода после выхода первого 3D-ускорителя, на выставке E3 этого года, некоторые фирмы смогли показать проекты своих ускорителей, которые только приближались по быстродействию к карте от 3Dfx. Настал век аппаратной поддержки игр.

Что дает карта, использующая чип 3Dfx? Судите сами. Любая трехмерная игра, которая была написана с поддержкой этого ускорителя, автоматически идет в режиме 640x480 и в 65 тысячах цветов, и при этом на среднем пентиуме 120 дает 25-30 кадров в секунду! Невероятно? Но это факт.

Итак, 3Dfx.

Каким же образом эта карточка работает? Все очень просто. Для примера рассмотрим карту Diamond Monster 3D, выпускаемую фирмой Diamond Multimedia. Эта карта вставляется в PCI-слот вашего компьютера (кстати, работает она только на современных пентиумных материнских платах - на 486 компьютерах и на старых Pentium-платах, типа Pentium 60 она не заработает), и в нее вставляется шнур от монитора. А от нее к видеокарте идет так называемый passthrough-cable. Когда происходит вывод обычного изображения, карта 3Dfx бездействует. В тот момент, когда программа посылает команду карте 3Dfx на включение, обычная видеокарточка просто показывает последний экран перед включением 3Dfx (например, desktop Windows 95), а вывод основного изображения берет на себя 3Dfx. Для этого у нее есть два процессора, обрабатывающих изображение, и своя собственная оперативная память. Такой метод дает еще один плюс - вы можете использовать в паре с 3Dfx любую видеокарту.

Почему же игра, использующая эту карту, начинает идти так быстро - быстрее, чем даже на Pentium 200 с обычной видеокартой? Потому, что основные процедуры обсчета изображений 3Dfx реализует аппаратно - что по понятным причинам, происходит гораздо быстрее.

В основном, 3Dfx занимается просчетом двух главных задач - один процессор занят процедурой z-buffer, в то время, как второй - наложением текстур. Полученную картинку карта сама и выводит на монитор. В результате, игре остается только давать несложные команды на обсчет, и представлять структуру виртуального мира в целом.

Давайте немного посчитаем.

Карточка эта может показывать игры в трех разрешениях (на полном экране) - 400х300, 512х384, 640x480 или 800x600.

Картинка отображается в 65 тысячах цветов - по 2 байта на пиксел, но для расчета z-buffer нужно два буфера кадра (один показываем, а второй в это время просчитываем) - то есть, 4 байта на пиксел. Кроме того, еще и сам буфер глубины 16-битный - и это еще плюс 2 байта на пиксел. Итого - 6 байт на пиксел.

640*480*6 = 1843200 байт, и текстурам остается 2Мб памяти

800*600*6 = 2880000 байт, и в 2 Мб он не помещается. Это мало - и в таком высоком разрешении игры могут идти только, если отключить аппаратный z-buffer. То есть, игра считает z-buffer, а карта только размазывает текстуры. Это медленнее - но все равно красиво. По слухам, в новых Glide-драйверах такое будет возможно.

Итак, если вы раньше играли только в обычную версию игры, получающийся с помощью 3Dfx эффект потрясает: кроме удивительной скорости, исчезают проблемы с масштабированием текстур. Если вы подходите к стене - пикселов на ней не видно! Если вы приближаетесь или удаляетесь от монстра - он не превращается в груду квадратов.

Кроме этого, карта 3Dfx занимается такими спецэффектами, как:

  • эффект освещения текстур
  • быстрая анимация текстур
  • сглаживание изображения
  • "размазывание" текстур
  • специальные световые эффекты (Гуро)
  • пиксельное альфа-смешивание (то есть, эффект полупрозрачности - например стекло, туман, вода).

Для примера, взгляните на картинки, взятые из "Quake" и "Tomb Raider".

quake img
Обычный Quake
 
quake GL image
GLQuake
 
 
tomb rider img
Обычный Tomb Raider
 
tomb rider GL img
Tomb Raider на Diamond Monster 3D

Таким образом, игра работает с невероятной скоростью, с такими эффектами, которые при нынешней мощности процессора для данной скорости программно достичь нельзя, и к тому же без ошибок (помните, какие неприятные эффекты с текстурами наблюдались в "Tomb Raider").

Железо для программ, и программы для железа.

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

Постоянно обновляемый список игр смотрите в разделе "Железо" на сайте http://sly.home.ml.org.

Разные игры используют разные программные интерфейсы для общения с 3Dfx-картой - Glide обычно используют игры под ДОС, Direct3D - это интерфейс, входящий в стандартную поставку Microsoft DirectX, и потому этот интерфейс используется исключительно под Windows 95, и OpenGL - это многоплатформенный графический интерфейс, который изначально был написан для графических станций типа SUN. Quake специально был написан для него, чтобы сделать удобным портирование этой игры под другие, не PC-платформы.

Как можно увидеть из из списка, очень много игр уже поддерживают этот чип, и новые игры для него постоянно выходят.

И другие...

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

Проведем краткий обзор производителей чипов и карт.

Во-первых, стандарт 3Dfx реализован в двух чипах - они называются Voodoo Graphics и Voodoo Rush. Отличия в быстродействии нет - зато Rush, более новый чип, имеет собственный 2D-ускоритель, и может поэтому воспроизводить картинку не только на полном экране, но и в окне Windows 95. Кроме того, из-за наличия 6Мб памяти, этот чип может воспроизводить картинку 800х600 с аппаратным z-buffer. Но есть и минус - эта карта работает только со специальными графическими процессорами, производства компании Alliance Semiconductors.

Интерфейс Glide был разработан так, чтобы игры, которые написаны под него, шли как под Voodoo, так и под Rush - но пока, к сожалению, из-за недоработанных драйверов для Rush полной совместимости нет.

На чипе Voodoo построено на данный момент четыре видеокарты - Diamond Monster 3D, Orchid Righteous 3D, Deltron RealVision Flash 3D, и карточка фирмы A-Trend.

На чипе Rush - Hercules Stingray 128/3D, Intergraph Intense 3D Voodoo.

Перспективный чип под названием Verite1000 выпустила компания Rendition. На нем были собраны такие карточки, как 3D Blaster PCI (от известной фирмы Creative), Sierra Screaming 3D, и др.

На сайте Creative находится список игр, для которых были выпущены патчи под 3D Blaster - его можно также посмотреть в разделе "Железо" на сайте http://sly.home.ml.org.

Совсем недавно Rendition выпустила новый чип, Verite2200, который по тестам, опубликованным на различных интернетовских сайтах, обгоняет Voodoo, но пока карточки на этом чипе в России не появились, и с уверенностью что-то говорить об этом сложно.

Фирма NEC производит свои собственные чипы - NEC PowerVR PCX1 и PCX2. На последнем собраны такие карты, как VideoLogic Apocalypse 5D и Apocalypse 3Dx.

Существует также очень много узко специализированных чипов и карточек, рассчитанных на конкретные приложения - например, AutoCAD, программы для анимации, и др.

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

Неплохой ускоритель реализован в карте известной фирмы Matrox под названием Matrox Mystique. Наряду с очень хорошим 2D, в карте реализованы некоторые 3D-функции, которые поддерживают Direct3D.

Последнее слово - за будущим.

Как видно, на сегодняшний день 3Dfx является любимой карточкой всех фанатов трехмерных игр. Проводятся конкурсы, посвященные программированию для 3Dfx, есть официальный Software Development Kit для 3Dfx, и несмотря на выход новых чипов, компания 3Dfx не сдает своих позиций, и надеюсь, будет еще долго радовать игроманов новыми разработками.

Дополнительные ссылки

Сайты, на которых можно найти много интересного по 3Dfx и другим 3D-картам:

 
SLY,
"Навигатор Игрового Мира"
 
 
Комментарии?  Поправки?  Дополнения? pavel@ixbt.com

 

Процессоры | Системные платы | Видеосистема | Носители информации | Мультимедиа | Периферия | Коммуникации | Поиск по сайту


Copyright (c) by iXBT, 1998. Produced by pavel@ixbt.com & gavric@ixbt.com
Дизайн (с) 1998 студия РусАрт