16+
ComputerPrice
НА ГЛАВНУЮ СТАТЬИ НОВОСТИ О НАС




Яндекс цитирования


Версия для печати

Модуль поиска не установлен.

История 3D-графики в PC-играх

29.07.2006

Лев Симонов
aka LEVel

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

Естественно, тогда трехмерной графикой даже и не пахло: первые игрушки были абсолютно плоскими и создавались в основном для игровых автоматов. Затем появилась изометрия, которой, кстати, до сих пор находят применение в играх. Но о трехмерной графике, с которой знакомы мы с вами, задумались где-то в 80-х годах XX века. Хотя, правда, точную дату появления первой игры с использованием простейшей "трехмерности" назвать невозможно, говорят, уже в 70-х некоторые энтузиасты работали с wireframe-каркасами (это когда рисуются только ребра трехмерной модели, а грани попросту отсутствуют). В дальнейшем же появились реализации, работающие с затенением граней, правда, по скорости они здорово уступали спрайтам, и их использование могло быть оправдано только в случае, когда полигональных моделей было совсем немного. Так в середине 80-х появилась первая игра линейки Microsoft Flight Simulator, что вполне закономерно: рисовать надо только несколько самолетиков и плоскую землю. Зато вовсю используется третье измерение. Нужно ли говорить, что игра пользовалась большой популярностью? Идею играбельного 3-го измерения динамично расширила небезызвестная Elite, сочетавшая полигональные модели и векторную графику. Вообще чисто полигональные движки тогда практически не использовались, наряду с полигональными моделями широко применялись спрайты, так что "полного 3D" еще не существовало. Наиболее ярким примером сочетания полигональных и спрайтовых объектов является игра Alone in the Dark (это уже 1992 год), впрочем, эта технология применяется и сегодня (хотя уже достаточно редко).

Да здравствует Рррреволюция!

В том же 1992 году стараниями небезызвестной компании id Software свет увидел первый шуттер от первого лица (FPS) - Wolfenshtein 3D. Хотя на самом деле Wolfenshtein"у предшествовала игра Catacomb Abyss, но почему-то она оказалась забыта игроками. Впервые была применена перспектива, благодаря чему объекты уменьшались, отдаляясь от игрока. Впервые (в отличие от Microsoft Flight Simulator или F-19) в этих играх применяется текстурирование - вместо однотонных граней используются масштабируемые растровые изображения. Сердцем тогдашних компьютеров был 386-й процессор, а видеокарты отвечали только за вывод на экран монитора непосредственно кадра, не проводя никаких дополнительных вычислений. Через год происходит очередной прорыв: появляется DOOM (опять-таки id Software). Теперь игрок перемещается по полностью трехмерному уровню, правда при этом монстры по-прежнему остаются спрайтовыми, но все-таки "эффект присутствия" становится достаточно ощутимым, игра на самом деле "затягивает". А настоящий переворот в области игровой трехмерной графики происходит в 1996 году - выходит Quake, причем, если кто не знает, разработана эта игра все той же id Software. Теперь полностью полигональный движок становится реальностью (именно такой используется в Quake), появляется множество новых технологий, например Z-буфер, а текстурирование уже подразумевается как нечто само собой разумеющееся. Правда, впервые Z-буфер был опробован еще в DOOM, но теперь он становится стандартом. Кстати говоря, незадолго до этого (1995), свои первые неуверенные шаги делает Game SDK, разработанный Microsoft для Windows 95. По сути, Game SDK - первенец в линейке DirectX. В это же время получает распространение среди программистов графический стандарт OpenGL (Silicon Graphics совместно с Sun Microsystems), изначально разработанный для CAD-систем еще в 1992 году.

Тогда же (точнее, немного позднее - в 1997 году) появляются первые видеокарты с 3D-ускорением - VooDoo Graphics от 3Dfx (представитель первого поколения видеокарт). Наряду с DirectX (в 1996 выходит уже DX 2) для написания игр с аппаратным ускорением трехмерной графики используется интерфейс Glide все той же 3Dfx. Надо ли говорить, какой популярностью среди игроков (и разработчиков игр) пользовался новый (первый!) 3D-ускоритель: адаптер мог обрабатывать до 1 миллиона треугольников и 45 миллионов пикселей в секунду, полностью брал на себя вычисления, относящиеся к 3D-сцене. Достаточно интересным было подключение VooDoo к компьютеру: так как 2D-часть на акселераторе полностью отсутствовала, для работы была необходима еще и обычная видеокарта, которая подключалась к ускорителю. Совместное использование 3D- и 2D-карт было существенным недостатком, поэтому сразу после VooDoo Graphics выходит VooDoo Rush, сочетающая в себе оба модуля. Впрочем, качество этой карты оставляло желать лучшего, поэтому она не смогла завоевать признание игроков.

Вскоре (1998 год) выходит игра Unreal (Epic Megagames). Все более и более изощренные технологии используются в играх (например, микрофактурные текстуры и прозрачность в той же Unreal), рынок видеокарт с 3D-ускорением резко расширяется: на арену выходят nVidia, Maxtor, S3, а через некоторое время и ATI. Например, еще в конце 1997-го nVidia выпускает первый видеоадаптер, сочетающий в себе 2D- и 3D-ускорители, и при этом превосходящий по производительности VooDoo - nVidia Riva128.

В конце того же 1998 года выходит уже DirectX 6, позволяющий разработчикам использовать все новые и новые технологии: стенсил, W-буфер, мультитекстурирование и многое другое. 3D-технологии развиваются с невообразимой скоростью, революция следует за революцией. В конце 1999 года выходит DirectX 7 - очередной прорыв. На этот раз появляется аппаратный T&L (Transforms and Lighting) - модуль, отвечающий за преобразование геометрии и аппаратный обсчет освещения. За ускорение 3D-графики отвечают видеокарты третьего поколения. Постепенно оттесняя 3Dfx, лидером в производстве 3D-ускорителей становится nVidia. С появлением RivaTNT2 в 1999 году nVidia отказывается от поддержки API Glide, а если учесть, что последний ускоритель от 3Dfx (VooDoo3) оказался далеко не таким качественным, как ожидалось, неудивительно, что в следующем (четвертом) поколении продукции 3Dfx, способной конкурировать с видеокартами nVidia или S3, уже не было (почему же, выпускались и VooDoo 4 и даже VooDoo5).

Итак, подводя итог XX столетия, можно вспомнить слова Джона Кармака из неоднократно упомянутой id Software, который назвал этот кусочек истории "золотой эрой в компьютерной графике".

"Миллениум"

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

Итак, для чего же были разработаны шейдеры? Дело в том, что в предыдущих поколениях за поддержку того или иного эффекта (например, тумана) отвечало ядро видеокарты, а точнее его TCL-блок (Transforms Clipping Lighting - трансформация, отсечение и освещение), поэтому введение новых эффектов происходило очень медленно - было необходимо ждать очередного поколения видеокарт, в которых этот эффект поддерживается. Кроме того, нужно было постоянно расширять сам графический чип и переписывать драйвера, что добавляло хлопот производителям "железа". Вполне логичным шагом была замена фиксированного TCL-блока программируемым. Если точнее, то TCL заменяется вершинным шейдером, а кроме него существуют также пиксельные шейдеры, которые изменяют процесс обработки текстур. Это значит, что каждый разработчик может контролировать процесс обработки видеокартой данных о 3D-сцене и изменять его, чтобы добавить какой-нибудь новый визуальный эффект.

Именно версия поддерживаемых шейдеров становится основным отличием между видеокартами следующих поколений: шейдеры появляются в 3D-ускорителях четвертого поколения, например nVidia GeForce 4 или ATI Radeon 8500, и поддерживаются DirectX 8. Следующее поколение - вершинный и пиксельный шейдеры версии 2.0 и DirectX 9.0. Примерами видеокарт этого поколения являются ATI Radeon 9600 или nVidia GeForce FX 5800. С появлением новых возможностей увеличиваются объемы программ-шейдеров, что сильно усложняет их написание (раньше шейдеры писались на языке, подобном Ассемблеру), поэтому были разработаны специальные языки программирования шейдеров: Cg (не заработавший, правда, особой популярности), HLSL от Microsoft (впоследствии ставший частью DirectX 9) и GLSL от SGI, являющийся аналогом HLSL, разработанным для OpenGL. Самые же свежие ускорители поддерживают DirectX 9.0c и шейдеры 3.0 серии (например nVidia GeForce 6800GT). Основным отличием этого поколения является поддержка DFC - динамического управления потоком, что позволяет ускорить выполнение приложений, использующих шейдеры.

DirectX 10?

Не секрет, что Microsoft уже выпустила DirectX SDK для десятой версии DX, однако приложения, использующие этот API, должны выполняться на новой операционной системе Корпорации - Windows Vista, выход которой не планируется раньше 2007 года, Поэтому сейчас самой свежей версией является DirectX 9.0c, который постоянно обновляется уже на протяжении нескольких лет. Что ждет нас впереди?

Вернемся немного назад. Что мы видим? Много раз новые шаги в развитии 3D-технологий были спровоцированы деятельностью id Software, всегда немного опережающей свое время по технологиям, впрочем, и сейчас они держат планку: DOOM 3 демонстрирует потрясающую графику. Итак, что же ждет нас впереди? Спросите у Кармака.



статьи
статьи
 / 
новости
новости
 / 
контакты
контакты