Blackkiller
История видеокарт: 90-е ( 31 фото + 2 гиф + 7 видео )
В компьютерном железе сильно развита система наследования: что-то сделали, оно стало популярным и сколько бы устаревшей технология не была, еще много лет она будет аукаться всему миру...
К чему я это? Да к тому, что как только речь заходит об архитектуре, рассказать об изменениях в ней, не касаясь прошлых продуктов, становится очень сложно. Порой железо несет в себе темное наследие неудачных решений прошлого, а полностью осознавать всю величину изменений (и влияние всяких legacy-костылей) очень тяжело — приходится отматывать время все дальше и дальше. И некоторые вещи в современных видеокартах тянутся аж от истоков трехмерной графики в играх. Так что начнем издалека.
Современный 3D
Если вы посмотрите на видеоролики или геймплей того же Battlefield 1 на максимальной графике — у вас челюсть отвиснет. Потрясающе реалистичные взрывы, сложная анимация лиц, имитация погодных условий, физика, все-все-все — и наше с вами железо показывает эти красоты много раз в секунду. Топовые ПК вываливают на экран почти 50млн точек за секунду (3840*2160*6= 497 664 000), а ведь за каждой точкой изображения стоят расчеты, притом непростые.
С чего все начиналось
Не будем уходить во времена совсем дремучие, когда видеоадаптер мог отображать разве что буквы да точки на черно-белом (а затем и цветном) экране. В 1983 году Intel iSBX 275, типичная плата для вывода информации на дисплей, стоила $100(в пересчете на 2017-й — $2500) и могла выводить «умопомрачительную» картинку 256х256 точек с 8 цветами или монохромную, но 512х512. Об ускорении 3D-расчетов и речи не шло, тогда проблема была в самом выводе информации.
За точку отсчета можно взять 1989 год — выход на рынок первого 2D-ускорителя S3 Graphics 86C911. 1 Мб видеопамяти, поддержка разрешения 800х60и 16-битного цвета. Можно сказать, эта железка открыла PC-миру комфортную работу с графикой, а компьютер перестал быть скучным: на таком железе уже можно было более-менее работать с графикой. Началась первая гонка графического железа: очень скоро вышли модели с 24-битным цветом (его мы используем до сих пор), спустя год появились и 32-битные системы с поддержкой альфа-канала (прозрачности).
За рынок 2D-ускорителей сражались S3, ATI, Matrox, Cirrus Logic, Trident и другие компании, а продолжалось это веселье до января 1992 года, когда компания Silicon Graphics Inc. (SGI) выпустила первый в мире открытый API для работы с 2D и 3D графикой — OpenGL 1.0.
Софт решил вопрос железа
Хитрость заключалась в том, что SGI уже имела неплохие проприетарные наработки в этой области, в первую очередь нацеленные на рынок профессионального ПО и UNIX-систем, и на горизонте уже начали появляться конкуренты со своими API. На тот момент идея отвязать обработку графики от остального программного кода была инновационной и, открыв свои спецификации, SGI попросту торпедировала разработку чужих графических библиотек. Большие корпорации не понимали, зачем платить за разработку нового ПО, когда было уже работающее, открытое и не привязанное к вендору: проще было найти подходящее железо.
Уловка сработала, и OpenGL быстро распространился не только на профессиональный софт, но и на игры.
А что было до OpenGL? По-настоящему трехмерных игр, использующих современные технологии, попросту не существовало. Wolfenstein 3D, игра, подарившая миру жанр шутера от первого лица, использовала код на ассемблере/C и упрощенную трассировку лучей, разворачивающую двухмерный лабиринт в псевдо-3D, а все враги и объекты были обычными спрайтами — двухмерными картинками с набором состояний, через которые и реализовывалась анимация.
Подобный подход работал с удивительной для тех времен скоростью и позволял выводить настоящие трехмерные казематы, которые на самом деле не сильно отличались от уровней Pac-Man. Игра легко вычисляла видимые и невидимые (перекрытые другими стенами) поверхности, могла оценить по длине луча расстояние до стены и соответствующим образом исказить отображаемую текстуру, выполняя базовое текстурирование и моделирование мира одном флаконе.
Посмотреть
Подобные хитрости использовались во многих играх того времени: других вариантов адекватно отобразить достаточно сложные 3D-объекты просто не было. Написание платформозависимого, но быстрого кода, использование двухмерных элементов везде, где возможно и всяческие уловки позволяли добиться динамичного геймплея и неплохой картинки, не прибегая к аппаратному ускорению. И продолжалось это аж до самого 1996 года.
Первые спецэффекты
Достаточно простой в визуальном плане Wolfenstein 3D уже содержал первые наметки на применение спецэффектов.
Конечно, они были реализованы грубо, в виде перемещающихся по экрану двухмерных спрайтов: свет от каждой люстры был всего-навсего текстурой на полу. Куда интереснее было смотреть на первый DOOM, вышедший в 1993. Он оставался все таким же псевдотрехмерным: в игре были лифты, ступени, подъемы и спуски, в том числе интерактивные, но на самом деле уровень был плоский, и вы не найдете ни одного места в игре, где одна комната располагалась бы над другой. Куда важнее была проработка артов и первые зачатки динамического освещения. Выстрелы освещали вспышками окружающее пространство. В зависимости от окружения и уровня менялась тональность тех или иных объектов.
Еще дальше эффекты освещения ушли в DOOM 2 (1994): там вы могли встретить по-настоящему темные комнаты, которые менялись при открытии двери в освещенное пространство и на мгновение подсвечивались при выстрелах. В остальном же даже продвинутый 2.5D-движок Duke Nukem 3D в 1996 году использовал примерно те же спецэффекты: спрайтовые арты там, где они выглядели лучше, простенькие 3D-модели в мире, базовое освещение и затенение. Вместе с тем в Duke Nukem была куда более продвинутая схему отрисовки уровней, что позволило разработчикам создать вагонетки, лифты, разрушаемые стены и другие новшества, которые были невозможны в играх id Software того времени.
К будущему наперегонки
Представьте себе рынок консолей лет десять назад: есть Nintendo с ее странными штуками, сравнительно свежие PS3 и Xbox 360, уходящие на покой PS2 и первый Xbox. А еще PC со старыми карточками на DirectX 9 и новым поколением железа с поддержкой DirectX 10. У всех разная архитектура, вычислительные возможности, инструменты разработки. В 90-е весь этот бардак творился на одном только рынке 3D-ускорителей и их API, которые требовалось учитывать при разработке игр и софта!
У S3 был S3d, SGL использовала PowerVR (живая и поныне, кстати, но в мобильниках), NVIDIA — собственную nvlib, ATI — C interface и так далее. Да, отдельные реализации (или их элементы) были хороши и имели уникальные фичи, которых не было у конкурентов. Аппаратный антиалиасинг (сглаживание), поддержка высоких разрешений и полноцветной картинки у всех были реализованы по-своему, что выливалось в соответствующие проблемы для разработки софта.
При таком-то зоопарке конкурирующих технологий ни о каком активном развитии индустрии и речи идти не могло. С одной стороны, агрессивная конкуренция и борьба за рынок, с другой — давление открытых технологий в лице OpenGL и потихоньку растущего детища Microsoft. Неудивительно, что проприетарные и завязанные на конкретную железку варианты начали потихоньку умирать, а их создатели — уступать интеллектуальные права на разработку своим конкурентам.
OpenGL и DirectX
Войну OpenGL негласно объявила компания Microsoft, не в последнюю очередь этому способствовал выход Windows 95.
Вот суть проблемы вкратце. DOS позволяла общаться с железом напрямую, что, учитывая мощности железа тех времен было удобно для разработчиков игр. Неудобство доставляли вышеописанные зоопарки из железа и софта. В Windows 95 общение с железом прибрала к рукам система: да, интерфейс и удобство решали, но производительность графических операций сильно упала, а терять рынок игр (плавно переползавших с 16-битных консолей на ПК) не хотелось. Так родился DirectX. Простенький, несуразный, во многом отстающий в развитии от других API, но зато свой и родной.
А на OpenGL редмондцы, что называется забили и особо не парились над ее внедрением в Windows: основной идеей было переманивание пользователей профессиональных САПР, необходимый минимум для работы софта реализовали, а остальное Microsoft не волновало. Масла в огонь подлил отказ в лицензировании мини-драйвера OpenGL для Windows 95. SGI, создатель OpenGL, отчаиваться не стала и выпустила полный драйвер, который позволял не только производить растеризацию, но и работать с базовыми 3D-функциями: трансформацией и освещением, чего у DirectX не было.
Спустя несколько месяцев случился фэйл: вышли первые видеокарты с аппаратной реализацией некоторых трехмерных функций, которые с самого начала были заложены в OpenGL 1.— а DirectX умел только 2D-ускорение. Такое положение дел не устраивало создателей Windows, и те быстро нашли финансовые ресурсы и подходящую для покупки компанию. Ей оказалась RenderMorphics, а программный продукт Reality Labs API стал ядром для Direct3D. Кое-какие наработки были включены из совместного с 3Dfx проекта Talisman, который применялся в Glide API и DirectX для вывода текстур по частям. Все вместе это худо-бедно, но работало: производительность 3D в играх под Windows вплотную приблизилась к написанию нативного кода, который использовался в DOS.
Проблем у DirectX хватало: отставание от OpenGL по части фич вылилось в спешку при разработке и интеграции, в результате разработчикам игр пришлось терпеть отвратительные инструменты для разработки, нечитабельный код и всякого рода глюки.
OpenGL изначально имел преимущество: рабочие станции и куча софта отлично работали с имеющимися технологиями, да и некоторые разработчики успешно применяли новую библиотеку для отрисовки. id Software и Джон Кармак встали на сторону OpenGL: Direct3D был назван «несуразным мусором», все игры от id выходили с поддержкой открытых технологий.
Первые ласточки современного 3D
Первая видеокарта в современной интерпретации была выпущена компанией ATI на рубеже 1994-1995-х и называлась Mach64. Она соединяла в себе устройство вывода картинки на дисплей и аппаратный декодер видеосигнала. В зависимости от версии видеокарта имела 2 или 4 Мб памяти. Оценивать ее с точки зрения сегодняшних спецификаций сложно: у нее не было шейдерных процессоров (поскольку самого понятия шейдеров еще не было), а многие аппаратно-ускоренные операции заключались в быстрых преобразованиях над двумя участками памяти. Но и этого было достаточно: Windows 3.1 и Windows 95 на ней буквально летали.
В ответ выстрелили сразу несколько продуктов конкурентов. GLINT 300SX от 3DLabs поддерживала OpenGL-рендеринг, имела 1 Мб видеопамяти для операций над вершинами и текстурами и еще 1 Мб в качестве кадрового буфера: в него попадали уже отрисованные части изображения. S3 выпустила OEM-чипы Trio64 и Trio32 с набором уникальных возможностей, но главной архитектурной особенностью была объединенная память, распределением которой можно было управлять из приложения. В мае 1995 года вышла первая видеокарта от NVIDIA — NV1. NVIDIA с самого начала ориентировалась на возможности OpenGL, поэтому их карточка была одной из передовых: поддерживала мультитекстурирование (которое, правда, не поддерживалось DirectX, да и многими другими видеокартами тоже, поэтому почти нигде не применялось), работала на запредельных для того времени скоростях и вообще была крутой… Если бы не одно «но».
При создании NV1 разработчики ориентировались на трансформирование квадратных текстурных кусочков, собирая из них трехмерную модель. Это решение понятнее для человека, который пишет игровой движок: мы привыкли оперировать с прямоугольниками, нам так проще, и разработчики ориентировались на эту особенность восприятия. Проблемы начинаются, когда ваш условный прямоугольник начинает изгибаться не по одной оси, превращаясь в трапецию для стороннего наблюдателя, а сразу по двум. Он делится на две базовые фигуры: треугольники, которые могут быть наклонены друг относительно друга.
На рендеринг таких примитивов и был ориентирован Direct3D от Microsoft, а NVIDIA попросту не поддерживала такой режим. Так NV1 стала лучшей карточкой на рынке для никого: потрясающие железные возможности попросту не использовались софтом, а обертка над Direct3D, написанная чуть позже NVIDIA, работала не так хорошо, как нативные решения от конкурентов. В итоге на NV1 можно было играть только в порты игр с Sega Saturn через специальную плату-переходник.
К концу 1995 года ATI выпустила Mach64 GT с чипом 3D RAGE. Она также не полностью реализовывала функциональность Direct3D и имела некоторые проблемы с драйверами под Windows 95, но общее качество работы было лучше, чем у враппера NVIDIA, к тому же Mach64 GT умела воспроизводить видео MPEG-1. Спустя девять месяцев появилась Rage II, исправляющая все косяки предшественника и поддерживающая MPEG-2: игры на ней работали неплохо, но 2 Мб видеопамяти на тот момент было уже недостаточно.
Вслед за Rage II на рынок вышло еще несколько продуктов, и одной из самых интересных карт была Rendition Vérité V1000.
Для 1995 года она действительно была прорывной: RISC-процессор, использовавшийся в качестве универсального GPU, работал над 3D-операциями и выдавал команды для блока растеризации, который умел и 3D рендерить, и 2D ускорять. Именно на базе возможностей V100тестировалась работа Direct3D и DirectX 5.в самой Microsoft. Существовали и другие интересные карточки, но все они меркнут по сравнению со взошедшей звездой PC-гейминга. Гонка производительности закончилась, едва успев начаться: видеокарта Voodoo от 3Dfx при всем своем несовершенстве стала настоящим проклятием для S3, NVIDIA и ATI.
Прорыв в графике: применение OpenGL в играх
Quake от id Software стал одной из первых полноценных трехмерных игр, в которых не только мир имел три измерения, а все остальное было представлено спрайтами. И уж точно Quake был первым полностью трехмерным шутером с видом от первого лица. Вы могли играть как с софтверным рендерингом, который был визуально четче (хотя по текущим меркам и выглядит как хоррор-ретекстур Minecraft), либо использовать OpenGL, если ваша видеокарта позволяла такую роскошь: фильтрация текстур и улучшенные спецэффекты были к вашим услугам.
Первые наметки динамического освещения, покадрово анимированные 3D-модели (именно поэтому Quake и Quake 2 кажутся такими дерганными), использование аппаратного ускорения… В общем, прорыв по всем фронтам. Больше спецэффектов можно было увидеть разве что в Need for Speed 2 и Need for Speed 3, вышедших через год и два спустя: там добавились первые отражения на кузовах автомобилей и имитация работающих фар в ночных гонках.
Магия Voodoo
Технически 3Dfx Voodoo был именно 3D-ускорителем, а не видеокартой: выводить изображение на дисплей не умел, требовал отдельный видеоадаптер. Но это не помешало перевернуть рынок буквально за один год.
Представьте: до 1996 около 50% на рынке занимали видеоускорители S3, а спустя год почти в 80% новых компьютеров стояла графика от 3Dfx. В чем секрет столь ошеломительного успеха? 3Dfx Voodoo один из первых реализовал современный подход к отрисовке кадра, который применяется до сих пор и называется «отсроченный рендеринг».
Как вы уже знаете, для бесперебойной и быстрой работы в современных видеокартах используется уйма технологий-обманок, которые всеми силами стараются выдавить из себя результат, близкий к физически правильному, задействуя минимум ресурсов: честные расчеты слишком дороги.
А самая большая экономия ресурсов достигается, когда ничего не делаешь, и для вычислительной техники середины 90-х это было как нельзя кстати. Компания VideoLogic изобрела такой процесс отрисовки, который устранял необходимость в огромном Z-буфере для определения видимости того или иного пикселя. Все, что было скрыто от глаз наблюдателя, отсекалось на этапе построения геометрии, и текстуры наносились только на полученную усеченную картинку, а не на весь кадр даже там, где пользователь ничего не увидит. Voodoo работала именно по такой схеме, и это маленькое улучшение позволило разбить всех конкурентов в пух и прах: в 3D-операциях еще целый год никто не мог ничего противопоставить магии Voodoo. Динамичные игры воспроизводились так круто, как никогда раньше:
Нативная реклама
Собственный софт
Единственным живым конкурентом для OpenGL и DirectX стал фирменный Glide API от 3Dfx, который позволял переложить многие операции на фирменный ускоритель. Во многом он был похож на OpenGL, от которого и произошел, но содержал крайне ограниченный набор инструментов: размещение треугольников, заполнение их текстурами, отрисовка готового кадра. Этот минимум, в отличие от многообразия функций «больших библиотек» удалось реализовать аппаратно, и игры с поддержкой Glide щеголяли сглаженными текстурами, новыми на тот момент спецэффектами, связанными с динамическим освещением некоторых объектов и стабильно высоким FPS.
Вот так ограничения, разумная простота и возможность ее реализации в железе сделали Voodoo доминирующей 3D-картой на рынке. По большому счету, именно монструозность библиотеки OpenGL с ее сотнями различных вызовов API (половину из которых использовали раз в сто лет), а также медлительность консорциума-разработчика привели к доминированию Glide и DirectX на PC-платформе.
Ответы от ATI и NVIDIA
Конкуренты старались поспевать за дерзким новичком и в чем-то даже преуспели, но каждая видеокарта не-Voodoo была в то время экзотикой, так как все знали: хочешь крутые игры на PC — бери «Вуду», а если финансы позволяют — второй «Пентиум» к ней.
Да, топовая ATI 3D Rage была мощнее, чем Voodoo в 3D-режиме, так как использовала новую на тот момент шину AGP с двумя линиями и имела на борту 8 Мб видеопамяти, умела применять сглаживание к граням, аппаратно фильтровать текстуры, встроенный сопроцессор для операций с плавающей точкой и даже имела встроенный видеодекодер MPEG2 для DVD. За эту сумму качеств ее нежно любили профессионалы, и OEM-продажи для сборщиков рабочих станций стали спасением ATI.
Правда, это требовало современную материнскую плату, и не каждый мог позволить себе такой апгрейд. К тому же куда более дешевая версия со старым интерфейсом PCI и 2/4 Мб видеопамяти, увы, не дотягивала до конкурента, и народ все также брал Voodoo для игр.
«Зеленые» не стали повторять своих ошибок с Microsoft и тщательно ознакомились со спецификациями Direct3D. Новая видеокарта от NVIDIA называлась Real-time IntercATIve Video and AnimATIon Accelerator или попросту RIVA, а для красоты добавили цифру 128 (у ATI было 64!). Она умела работать с треугольными полигонами и понимала Direct3D «из коробки» (хотя NVIDIA и были приверженцами OpenGL в то время). Тесное сотрудничество с Texas Instruments позволило создать чипы на базе передового 350-нм техпроцесса, да еще и отбраковывать неудачные экземпляры перед установкой на плату. К концу 1997 года RIVA 128 и ее производные позволили NVIDIA занять около 20% рынка и натурально спасли компанию, которую некоторые расценивали как готовую к поглощению более успешными игроками.
Voodoo2 и Scan-Line Interleaving
Выход второго поколения успешного 3D-ускорителя не заставил себя ждать. Несмотря на некоторые недостатки (низкое рабочее разрешение плюс дизеринг 16-битного цвета в трехмерном режиме) и унаследованные от первой Voodoo архитектурные особенности (вторая версия по-прежнему не была видеокартой в полной мере) железку ожидал коммерческий успех. Отдел маркетинга 3Dfx сумел обратить почти все недостатки в достоинства. Связка из Voodoo2 и сравнительно недорогого, но качественного 2D легко уделывала интегрированные одноплатные решения конкурентов, которые работали хуже либо в одном из режимов, либо сразу в обоих.
Видели монструозные сборки с водянкой, 2-3-4 видеокартами, подсветкой и всем таким? Выглядит красиво, стоит безумно дорого. А началось все это в далеком 1998-м, когда 3Dfx представила технологию SLI (Scan-Line Interleaving, чередование строк). Два 3D-ускорителя Voodoo2 (одинаковых или специальный комплект из материнской плюс дочерней плат, соединенных внутренним шлейфом) работали как единое целое, рисуя четные/нечетные строки изображения и соединяя их в одну большую картинку перед выводом на монитор. К сожалению, о внутренней красоте ПК тогда мало заботились, и красивых фото из прошлого не будет: бутерброд из 3D-ускорителей и видеоплаты выглядел примерно так:
Подобная связка натурально удваивала производительность в трехмерном режиме (не то что современные AMD Crossfire или SLI от NVIDIA) и позволяла достичь более высоких разрешений. Обычные Voodoo поддерживали картинку 800х60с 16-битным цветом, пара таких карт уже могла работать с 1024х768. Стоила такая сборка от $190до $2500. Еще ~$150пришлось бы выложить за остальное компьютерное железо.
Для сравнения: в 1998-м ~$100долларов стоила Nokia 811(та самая, из «Матрицы»), за $250можно было взять вполне живую «Волгу» или дачный домик с участком в ~100-12км от Санкт-Петербурга, а за $400стать крутым владельцем пусть и б/у, но иномарки:
Минусом SLI стал первый в истории CPU Bottleneck: процессор попросту не успевал загружать видеокарты работой, так что связки из Voodoo2 в SLI некоторые использовали по 5 лет, меняя остальное оборудование.
Скелетная анимация
Игры получали более высокое разрешение текстур, улучшенные спецэффекты взрывов и освещения, более сложные, наполненные деталями модели — в общем, все сводилось к количественному росту разрешения и детализации (но не качественному). И многое было суждено изменить одной игре. Half-Life в 1998 году поражал вниманием к деталям, новаторским геймплеем, кат-сценами на движке игры и неотрывным повествованием с видом от первого лица.
Главное, что там было с точки зрения графики — скелетная анимация. Внутри каждой модели был своеобразный скелет из костей, и группы полигонов на руках, ногах, туловище и так далее были привязаны к костям. Больше не требовалось создавать отдельные виды моделей для каждого из состояний, можно было анимировать основу, а полигоны сами следовали за ней. Именно поэтому первая «Халфа» выглядела так свежо и необычно: движения персонажей и их поведение были «как в кино». По крайней мере, для того времени.
Sony PlayStation
Не удивляйтесь, что мы вспомнили первую «Плойку» только к 1997-1998 годам. Да, она вышла еще в конце 1994-го, но реально популярной стала к 1997 году, с выходом Gran Turismo и Final Fantasy VII.
Обе показывали неплохую для того времени графику, и именно на этих играх разработчики полностью научились задействовать возможности железа PS1, а ведь оно было весьма скромным: 33 МГц процессор в паре с 2 Мб оперативной памяти и 66 МГц видеоконтроллер с 1 Мб видеопамяти, который мог обрабатывать до 18тыс. полигонов в секунду.
С точки зрения той же Voodoo железо было полным шлаком, но у разработчиков были инструменты с прямым доступом к процессору, памяти и видеоядру, а, значит, движок игры мог использовать все доступные ресурсы, ведь прослойки в лице операционной системы у консоли не было.
Первые три-четыре года жизни консоли графика и производительность игр были ограничены не аппаратными возможностями, а мастерством и опытом разработчиков: то же отсечение невидимых полигонов, которое обеспечило Voodoo прорывную производительность, здесь закладывалось на этапе создания игрового движка, а не в само железо. Да, создавать игры было сложнее, чем на ПК, но и железо продержалось десять лет: последняя игра на PS1 (FIFA 2005) вышла в конце 2004 года, хоть и с упрощенной графикой. В конце концов решал геймплей, а не нажористый графон.
Закат эпохи 3Dfx
«А где 3Dfx сейчас, если она была так успешна?» — спросите вы. Поглощена компанией NVIDIA. Одна стратегическая ошибка или, скорее, неудача, пара-тройка тактических просчетов — и лидер индустрии достается своему более успешному конкуренту.
С выходом Voodoo3 компания 3Dfx решила, что она перестанет кормить ОЕМ-производителей, как делала раньше, и будет заниматься разработкой, созданием и продажей видеокарт сама. Для этого был приобретен производитель железа STB Systems, чьи заводы находились в Мексике. Конкурировать по качеству и ценам с азиатскими производителями-партнерами NVIDIA (которая все также OEM’ила и не стеснялась этого) не вышло по ряду причин. И дело даже не в банальной стоимости производства.
NVIDIA выиграла эту войну за счет ушлых маркетологов, грамотного планирования и… бюджетных карточек. Да, флагманский Voodoo3 было тяжело побить в играх, но его производитель абсолютно честно указывал на коробке характеристики работы видеокарты — 16-битный цвет в трехмерном режиме, максимальное разрешение дисплея 2048х1536, максимальный размер текстур 256х256 точек. У стоявшей рядом на полке RIVA TNT2 имелась поддержка текстур 2048х2048 и 32-битный режим работы в 3D. И покупатели повелись на цифры: им было плевать, что Voodoo работает быстрее, а игры, способные использовать преимущества RIVA TNT2 можно было пересчитать по пальцам одной руки.
У 3Dfx попросту нечем было заткнуть средний сегмент! Архитектура чипов Voodoo изначально выстрелила за счет двух блоков текстурирования: видеокарта работала быстрее конкурентов в примитивных операциях, а API Glide, нежно любимый некоторыми разработчиками динамичных игр, позволял творить настоящие чудеса. Это была не консольная производительность в вычислениях и близость к железу, но что-то около того. Удешевленные Voodoo2 в первую очередь лишались второго блока текстурирования, что выглядело так себе на бумаге и еще хуже в игровой производительности, при этом себестоимость производства падала не так уж и сильно. В результате карточка была плоха по балансу производительности и цены, не пользовалась спросом и бросала тень на свою старшую сестру. В Voodoo3 обрезать карту не стали, разные версии отличались в первую очередь тактовыми частотами и объемами памяти.
Если флагман мог потягаться с продуктами конкурентов, то его ослабленные варианты были не так хороши, а финальным аккордом, добившим менеджмент компании (да и кучу других конкурентов) стал внезапный выход GeForce 256, первой настоящей и полноценной видеокарты во второй половине 1999-го.
Последний из могикан
Еще одной видеокартой, способствовавшей свержению 3Dfx с вершин игровой графики стала Matrox G400. Несмотря на то что это была не последняя карточка от Matrox и сама компания продержалась на рынке видеоускорителей аж до 2003 года, именно G40была последней успешной картой. И на то был ряд причин, как архитектурных, так и финансовых.
Во-первых, это видеокарта была пионером поддержки полноценного бамп-маппинга: он добавлял текстурам объема и рельефа практически бесплатно для производительности. Во-вторых, G40мог работать с двумя мониторами, как с одним большим, что ценилось некоторыми игроками и профессионалами. В-третьих, Matrox ревностно относились к качеству аналогового тракта и ЦАП’ов, и G40долгое время (вплоть до выхода GeForce 4) был эталоном по части четкости и скорости отображения информации. Не обошлось и без минусов: платы первого поколения не поддерживали в полной мере AGP x4, работая только с двумя линиями передачи данных. Кроме того, производительность драйверов в OpenGL режиме из-за политики Microsoft была ужасной: по сути, все OpenGL вызовы на лету оборачивались в функции Direct3D, что не лучшим образом отражалось на скорости работы. Полноценный OpenGL-драйвер вышел только через год после начала продаж.
Тем не менее вплоть до выхода GeForce 256 производительность карточки в 2D и Direct3D режимах была на уровне топовых решений конкурентов: Matrox G40успешно противостоял 3Dfx Voodoo3, NVIDIA RIVA TNT2 Ultra и ATI RAGE 128 Pro. Каждая из видеокарт была в чем-то лучше остальных, из-за чего 1999 год был достаточно напряженным для потребителей, ведь выбирать было из чего. Первая показывала лучшие результаты в тех играх, которые поддерживали низкоуровневый API Glide, вторая была признанной королевой OpenGL, а Rage 128 Pro хоть и был не так быстр, но и стоил меньше и уверенно прописался в среднем сегменте.
Настоящий GPU
GeForce 256 можно считать одним из родителей концепции видеокарт, продержавшейся следующие пять-шесть лет, аж до конца эпохи железа DirectX 9.0c и начала DirectX 10. Это была первая видеокарта, полностью обеспечивающая ваш компьютер всем необходимым для работы с графикой. Она имела полностью аппаратный блок T&L (трансформации и освещения), на 90% снимающий с CPU нагрузку по расчету геометрии. Видеоролик с презентацией возможностей GeForce 256 захватывал дух в свое время:
С виду ничего сложного? Дело в том, что до GeForce 256 геометрией занимался центральный процессор, и эта трава отбирала все ресурсы CPU. Сама же видеокарта использовала интегрированную структуру: 2D и 3D операции выполнял один чип, впервые использовалась память типа DDR, которая была распаяна непосредственно на плате и обеспечивала быстрый доступ к необходимым ресурсам. Поддержка мультитекстурирования и пиксельных конвейеров давала высокую производительность и потрясающие спецэффекты.
Ответить 3Dfx было нечем: денег на столь быструю и качественную разработку параллельно с внедрением продуктов в производство не хватало, бюджетный сектор поделили ATI и NVIDIA, вытеснив почти всех конкурентов, а топовые карточки значительно уступали в производительности флагманам «красных» и «зеленых». Voodoo4 и Voodoo5 не смогли спасти компанию: на рынок они попали слишком поздно, проигрывали конкурентам в производительности, цены из-за политики «сами производим, сами продаем» были высоки, чипы довольно часто выходили из строя, а разработать что-нибудь уровня первой Voodoo в 3Dfx не успели, хотя работы в этом направлении и велись.
Была запущена процедура банкротства, все активы и большая часть кадров (работавших над новым поколением GPU, который так и не увидел свет) досталась NVIDIA, а разработчики, ответственные за создание технологии SLI и сопутствующей обвязки, ушли в ATI.
Архитектура следующего десятилетия
Из всех разработчиков видеооборудования к 2001 году в живых остались S3 (правда, уже в составе VIA), 3Dlabs и Matrox, ушедшие в производство специфического железа для рабочих станций, а также NVIDIA, ATI и SiS, занимавшихся десктопной графикой. Остальные компании если и присутствовали на рынке, то либо лицензировали чужие разработки, либо довольствовались low-end-сегментом и рабочими станциями на экзотических ОС.
Выход GeForce 3 окончательно определил общий дизайн GPU: геометрический T&L процессор с собственным кэшем, блок текстурирования, шейдерный блок, блок растеризации, кадровый буфер и сравнительно большой объем внутренней памяти для хранения и обработки моделей и текстур...
К чему я это? Да к тому, что как только речь заходит об архитектуре, рассказать об изменениях в ней, не касаясь прошлых продуктов, становится очень сложно. Порой железо несет в себе темное наследие неудачных решений прошлого, а полностью осознавать всю величину изменений (и влияние всяких legacy-костылей) очень тяжело — приходится отматывать время все дальше и дальше. И некоторые вещи в современных видеокартах тянутся аж от истоков трехмерной графики в играх. Так что начнем издалека.
Современный 3D
Если вы посмотрите на видеоролики или геймплей того же Battlefield 1 на максимальной графике — у вас челюсть отвиснет. Потрясающе реалистичные взрывы, сложная анимация лиц, имитация погодных условий, физика, все-все-все — и наше с вами железо показывает эти красоты много раз в секунду. Топовые ПК вываливают на экран почти 50млн точек за секунду (3840*2160*6= 497 664 000), а ведь за каждой точкой изображения стоят расчеты, притом непростые.
С чего все начиналось
Не будем уходить во времена совсем дремучие, когда видеоадаптер мог отображать разве что буквы да точки на черно-белом (а затем и цветном) экране. В 1983 году Intel iSBX 275, типичная плата для вывода информации на дисплей, стоила $100(в пересчете на 2017-й — $2500) и могла выводить «умопомрачительную» картинку 256х256 точек с 8 цветами или монохромную, но 512х512. Об ускорении 3D-расчетов и речи не шло, тогда проблема была в самом выводе информации.
За точку отсчета можно взять 1989 год — выход на рынок первого 2D-ускорителя S3 Graphics 86C911. 1 Мб видеопамяти, поддержка разрешения 800х60и 16-битного цвета. Можно сказать, эта железка открыла PC-миру комфортную работу с графикой, а компьютер перестал быть скучным: на таком железе уже можно было более-менее работать с графикой. Началась первая гонка графического железа: очень скоро вышли модели с 24-битным цветом (его мы используем до сих пор), спустя год появились и 32-битные системы с поддержкой альфа-канала (прозрачности).
За рынок 2D-ускорителей сражались S3, ATI, Matrox, Cirrus Logic, Trident и другие компании, а продолжалось это веселье до января 1992 года, когда компания Silicon Graphics Inc. (SGI) выпустила первый в мире открытый API для работы с 2D и 3D графикой — OpenGL 1.0.
Софт решил вопрос железа
Хитрость заключалась в том, что SGI уже имела неплохие проприетарные наработки в этой области, в первую очередь нацеленные на рынок профессионального ПО и UNIX-систем, и на горизонте уже начали появляться конкуренты со своими API. На тот момент идея отвязать обработку графики от остального программного кода была инновационной и, открыв свои спецификации, SGI попросту торпедировала разработку чужих графических библиотек. Большие корпорации не понимали, зачем платить за разработку нового ПО, когда было уже работающее, открытое и не привязанное к вендору: проще было найти подходящее железо.
Уловка сработала, и OpenGL быстро распространился не только на профессиональный софт, но и на игры.
А что было до OpenGL? По-настоящему трехмерных игр, использующих современные технологии, попросту не существовало. Wolfenstein 3D, игра, подарившая миру жанр шутера от первого лица, использовала код на ассемблере/C и упрощенную трассировку лучей, разворачивающую двухмерный лабиринт в псевдо-3D, а все враги и объекты были обычными спрайтами — двухмерными картинками с набором состояний, через которые и реализовывалась анимация.
Подобный подход работал с удивительной для тех времен скоростью и позволял выводить настоящие трехмерные казематы, которые на самом деле не сильно отличались от уровней Pac-Man. Игра легко вычисляла видимые и невидимые (перекрытые другими стенами) поверхности, могла оценить по длине луча расстояние до стены и соответствующим образом исказить отображаемую текстуру, выполняя базовое текстурирование и моделирование мира одном флаконе.
Посмотреть
Подобные хитрости использовались во многих играх того времени: других вариантов адекватно отобразить достаточно сложные 3D-объекты просто не было. Написание платформозависимого, но быстрого кода, использование двухмерных элементов везде, где возможно и всяческие уловки позволяли добиться динамичного геймплея и неплохой картинки, не прибегая к аппаратному ускорению. И продолжалось это аж до самого 1996 года.
Первые спецэффекты
Достаточно простой в визуальном плане Wolfenstein 3D уже содержал первые наметки на применение спецэффектов.
Конечно, они были реализованы грубо, в виде перемещающихся по экрану двухмерных спрайтов: свет от каждой люстры был всего-навсего текстурой на полу. Куда интереснее было смотреть на первый DOOM, вышедший в 1993. Он оставался все таким же псевдотрехмерным: в игре были лифты, ступени, подъемы и спуски, в том числе интерактивные, но на самом деле уровень был плоский, и вы не найдете ни одного места в игре, где одна комната располагалась бы над другой. Куда важнее была проработка артов и первые зачатки динамического освещения. Выстрелы освещали вспышками окружающее пространство. В зависимости от окружения и уровня менялась тональность тех или иных объектов.
Еще дальше эффекты освещения ушли в DOOM 2 (1994): там вы могли встретить по-настоящему темные комнаты, которые менялись при открытии двери в освещенное пространство и на мгновение подсвечивались при выстрелах. В остальном же даже продвинутый 2.5D-движок Duke Nukem 3D в 1996 году использовал примерно те же спецэффекты: спрайтовые арты там, где они выглядели лучше, простенькие 3D-модели в мире, базовое освещение и затенение. Вместе с тем в Duke Nukem была куда более продвинутая схему отрисовки уровней, что позволило разработчикам создать вагонетки, лифты, разрушаемые стены и другие новшества, которые были невозможны в играх id Software того времени.
К будущему наперегонки
Представьте себе рынок консолей лет десять назад: есть Nintendo с ее странными штуками, сравнительно свежие PS3 и Xbox 360, уходящие на покой PS2 и первый Xbox. А еще PC со старыми карточками на DirectX 9 и новым поколением железа с поддержкой DirectX 10. У всех разная архитектура, вычислительные возможности, инструменты разработки. В 90-е весь этот бардак творился на одном только рынке 3D-ускорителей и их API, которые требовалось учитывать при разработке игр и софта!
У S3 был S3d, SGL использовала PowerVR (живая и поныне, кстати, но в мобильниках), NVIDIA — собственную nvlib, ATI — C interface и так далее. Да, отдельные реализации (или их элементы) были хороши и имели уникальные фичи, которых не было у конкурентов. Аппаратный антиалиасинг (сглаживание), поддержка высоких разрешений и полноцветной картинки у всех были реализованы по-своему, что выливалось в соответствующие проблемы для разработки софта.
При таком-то зоопарке конкурирующих технологий ни о каком активном развитии индустрии и речи идти не могло. С одной стороны, агрессивная конкуренция и борьба за рынок, с другой — давление открытых технологий в лице OpenGL и потихоньку растущего детища Microsoft. Неудивительно, что проприетарные и завязанные на конкретную железку варианты начали потихоньку умирать, а их создатели — уступать интеллектуальные права на разработку своим конкурентам.
OpenGL и DirectX
Войну OpenGL негласно объявила компания Microsoft, не в последнюю очередь этому способствовал выход Windows 95.
Вот суть проблемы вкратце. DOS позволяла общаться с железом напрямую, что, учитывая мощности железа тех времен было удобно для разработчиков игр. Неудобство доставляли вышеописанные зоопарки из железа и софта. В Windows 95 общение с железом прибрала к рукам система: да, интерфейс и удобство решали, но производительность графических операций сильно упала, а терять рынок игр (плавно переползавших с 16-битных консолей на ПК) не хотелось. Так родился DirectX. Простенький, несуразный, во многом отстающий в развитии от других API, но зато свой и родной.
А на OpenGL редмондцы, что называется забили и особо не парились над ее внедрением в Windows: основной идеей было переманивание пользователей профессиональных САПР, необходимый минимум для работы софта реализовали, а остальное Microsoft не волновало. Масла в огонь подлил отказ в лицензировании мини-драйвера OpenGL для Windows 95. SGI, создатель OpenGL, отчаиваться не стала и выпустила полный драйвер, который позволял не только производить растеризацию, но и работать с базовыми 3D-функциями: трансформацией и освещением, чего у DirectX не было.
Спустя несколько месяцев случился фэйл: вышли первые видеокарты с аппаратной реализацией некоторых трехмерных функций, которые с самого начала были заложены в OpenGL 1.— а DirectX умел только 2D-ускорение. Такое положение дел не устраивало создателей Windows, и те быстро нашли финансовые ресурсы и подходящую для покупки компанию. Ей оказалась RenderMorphics, а программный продукт Reality Labs API стал ядром для Direct3D. Кое-какие наработки были включены из совместного с 3Dfx проекта Talisman, который применялся в Glide API и DirectX для вывода текстур по частям. Все вместе это худо-бедно, но работало: производительность 3D в играх под Windows вплотную приблизилась к написанию нативного кода, который использовался в DOS.
Проблем у DirectX хватало: отставание от OpenGL по части фич вылилось в спешку при разработке и интеграции, в результате разработчикам игр пришлось терпеть отвратительные инструменты для разработки, нечитабельный код и всякого рода глюки.
OpenGL изначально имел преимущество: рабочие станции и куча софта отлично работали с имеющимися технологиями, да и некоторые разработчики успешно применяли новую библиотеку для отрисовки. id Software и Джон Кармак встали на сторону OpenGL: Direct3D был назван «несуразным мусором», все игры от id выходили с поддержкой открытых технологий.
Первые ласточки современного 3D
Первая видеокарта в современной интерпретации была выпущена компанией ATI на рубеже 1994-1995-х и называлась Mach64. Она соединяла в себе устройство вывода картинки на дисплей и аппаратный декодер видеосигнала. В зависимости от версии видеокарта имела 2 или 4 Мб памяти. Оценивать ее с точки зрения сегодняшних спецификаций сложно: у нее не было шейдерных процессоров (поскольку самого понятия шейдеров еще не было), а многие аппаратно-ускоренные операции заключались в быстрых преобразованиях над двумя участками памяти. Но и этого было достаточно: Windows 3.1 и Windows 95 на ней буквально летали.
В ответ выстрелили сразу несколько продуктов конкурентов. GLINT 300SX от 3DLabs поддерживала OpenGL-рендеринг, имела 1 Мб видеопамяти для операций над вершинами и текстурами и еще 1 Мб в качестве кадрового буфера: в него попадали уже отрисованные части изображения. S3 выпустила OEM-чипы Trio64 и Trio32 с набором уникальных возможностей, но главной архитектурной особенностью была объединенная память, распределением которой можно было управлять из приложения. В мае 1995 года вышла первая видеокарта от NVIDIA — NV1. NVIDIA с самого начала ориентировалась на возможности OpenGL, поэтому их карточка была одной из передовых: поддерживала мультитекстурирование (которое, правда, не поддерживалось DirectX, да и многими другими видеокартами тоже, поэтому почти нигде не применялось), работала на запредельных для того времени скоростях и вообще была крутой… Если бы не одно «но».
При создании NV1 разработчики ориентировались на трансформирование квадратных текстурных кусочков, собирая из них трехмерную модель. Это решение понятнее для человека, который пишет игровой движок: мы привыкли оперировать с прямоугольниками, нам так проще, и разработчики ориентировались на эту особенность восприятия. Проблемы начинаются, когда ваш условный прямоугольник начинает изгибаться не по одной оси, превращаясь в трапецию для стороннего наблюдателя, а сразу по двум. Он делится на две базовые фигуры: треугольники, которые могут быть наклонены друг относительно друга.
На рендеринг таких примитивов и был ориентирован Direct3D от Microsoft, а NVIDIA попросту не поддерживала такой режим. Так NV1 стала лучшей карточкой на рынке для никого: потрясающие железные возможности попросту не использовались софтом, а обертка над Direct3D, написанная чуть позже NVIDIA, работала не так хорошо, как нативные решения от конкурентов. В итоге на NV1 можно было играть только в порты игр с Sega Saturn через специальную плату-переходник.
К концу 1995 года ATI выпустила Mach64 GT с чипом 3D RAGE. Она также не полностью реализовывала функциональность Direct3D и имела некоторые проблемы с драйверами под Windows 95, но общее качество работы было лучше, чем у враппера NVIDIA, к тому же Mach64 GT умела воспроизводить видео MPEG-1. Спустя девять месяцев появилась Rage II, исправляющая все косяки предшественника и поддерживающая MPEG-2: игры на ней работали неплохо, но 2 Мб видеопамяти на тот момент было уже недостаточно.
Вслед за Rage II на рынок вышло еще несколько продуктов, и одной из самых интересных карт была Rendition Vérité V1000.
Для 1995 года она действительно была прорывной: RISC-процессор, использовавшийся в качестве универсального GPU, работал над 3D-операциями и выдавал команды для блока растеризации, который умел и 3D рендерить, и 2D ускорять. Именно на базе возможностей V100тестировалась работа Direct3D и DirectX 5.в самой Microsoft. Существовали и другие интересные карточки, но все они меркнут по сравнению со взошедшей звездой PC-гейминга. Гонка производительности закончилась, едва успев начаться: видеокарта Voodoo от 3Dfx при всем своем несовершенстве стала настоящим проклятием для S3, NVIDIA и ATI.
Прорыв в графике: применение OpenGL в играх
Quake от id Software стал одной из первых полноценных трехмерных игр, в которых не только мир имел три измерения, а все остальное было представлено спрайтами. И уж точно Quake был первым полностью трехмерным шутером с видом от первого лица. Вы могли играть как с софтверным рендерингом, который был визуально четче (хотя по текущим меркам и выглядит как хоррор-ретекстур Minecraft), либо использовать OpenGL, если ваша видеокарта позволяла такую роскошь: фильтрация текстур и улучшенные спецэффекты были к вашим услугам.
Первые наметки динамического освещения, покадрово анимированные 3D-модели (именно поэтому Quake и Quake 2 кажутся такими дерганными), использование аппаратного ускорения… В общем, прорыв по всем фронтам. Больше спецэффектов можно было увидеть разве что в Need for Speed 2 и Need for Speed 3, вышедших через год и два спустя: там добавились первые отражения на кузовах автомобилей и имитация работающих фар в ночных гонках.
Магия Voodoo
Технически 3Dfx Voodoo был именно 3D-ускорителем, а не видеокартой: выводить изображение на дисплей не умел, требовал отдельный видеоадаптер. Но это не помешало перевернуть рынок буквально за один год.
Представьте: до 1996 около 50% на рынке занимали видеоускорители S3, а спустя год почти в 80% новых компьютеров стояла графика от 3Dfx. В чем секрет столь ошеломительного успеха? 3Dfx Voodoo один из первых реализовал современный подход к отрисовке кадра, который применяется до сих пор и называется «отсроченный рендеринг».
Как вы уже знаете, для бесперебойной и быстрой работы в современных видеокартах используется уйма технологий-обманок, которые всеми силами стараются выдавить из себя результат, близкий к физически правильному, задействуя минимум ресурсов: честные расчеты слишком дороги.
А самая большая экономия ресурсов достигается, когда ничего не делаешь, и для вычислительной техники середины 90-х это было как нельзя кстати. Компания VideoLogic изобрела такой процесс отрисовки, который устранял необходимость в огромном Z-буфере для определения видимости того или иного пикселя. Все, что было скрыто от глаз наблюдателя, отсекалось на этапе построения геометрии, и текстуры наносились только на полученную усеченную картинку, а не на весь кадр даже там, где пользователь ничего не увидит. Voodoo работала именно по такой схеме, и это маленькое улучшение позволило разбить всех конкурентов в пух и прах: в 3D-операциях еще целый год никто не мог ничего противопоставить магии Voodoo. Динамичные игры воспроизводились так круто, как никогда раньше:
Нативная реклама
Собственный софт
Единственным живым конкурентом для OpenGL и DirectX стал фирменный Glide API от 3Dfx, который позволял переложить многие операции на фирменный ускоритель. Во многом он был похож на OpenGL, от которого и произошел, но содержал крайне ограниченный набор инструментов: размещение треугольников, заполнение их текстурами, отрисовка готового кадра. Этот минимум, в отличие от многообразия функций «больших библиотек» удалось реализовать аппаратно, и игры с поддержкой Glide щеголяли сглаженными текстурами, новыми на тот момент спецэффектами, связанными с динамическим освещением некоторых объектов и стабильно высоким FPS.
Вот так ограничения, разумная простота и возможность ее реализации в железе сделали Voodoo доминирующей 3D-картой на рынке. По большому счету, именно монструозность библиотеки OpenGL с ее сотнями различных вызовов API (половину из которых использовали раз в сто лет), а также медлительность консорциума-разработчика привели к доминированию Glide и DirectX на PC-платформе.
Ответы от ATI и NVIDIA
Конкуренты старались поспевать за дерзким новичком и в чем-то даже преуспели, но каждая видеокарта не-Voodoo была в то время экзотикой, так как все знали: хочешь крутые игры на PC — бери «Вуду», а если финансы позволяют — второй «Пентиум» к ней.
Да, топовая ATI 3D Rage была мощнее, чем Voodoo в 3D-режиме, так как использовала новую на тот момент шину AGP с двумя линиями и имела на борту 8 Мб видеопамяти, умела применять сглаживание к граням, аппаратно фильтровать текстуры, встроенный сопроцессор для операций с плавающей точкой и даже имела встроенный видеодекодер MPEG2 для DVD. За эту сумму качеств ее нежно любили профессионалы, и OEM-продажи для сборщиков рабочих станций стали спасением ATI.
Правда, это требовало современную материнскую плату, и не каждый мог позволить себе такой апгрейд. К тому же куда более дешевая версия со старым интерфейсом PCI и 2/4 Мб видеопамяти, увы, не дотягивала до конкурента, и народ все также брал Voodoo для игр.
«Зеленые» не стали повторять своих ошибок с Microsoft и тщательно ознакомились со спецификациями Direct3D. Новая видеокарта от NVIDIA называлась Real-time IntercATIve Video and AnimATIon Accelerator или попросту RIVA, а для красоты добавили цифру 128 (у ATI было 64!). Она умела работать с треугольными полигонами и понимала Direct3D «из коробки» (хотя NVIDIA и были приверженцами OpenGL в то время). Тесное сотрудничество с Texas Instruments позволило создать чипы на базе передового 350-нм техпроцесса, да еще и отбраковывать неудачные экземпляры перед установкой на плату. К концу 1997 года RIVA 128 и ее производные позволили NVIDIA занять около 20% рынка и натурально спасли компанию, которую некоторые расценивали как готовую к поглощению более успешными игроками.
Voodoo2 и Scan-Line Interleaving
Выход второго поколения успешного 3D-ускорителя не заставил себя ждать. Несмотря на некоторые недостатки (низкое рабочее разрешение плюс дизеринг 16-битного цвета в трехмерном режиме) и унаследованные от первой Voodoo архитектурные особенности (вторая версия по-прежнему не была видеокартой в полной мере) железку ожидал коммерческий успех. Отдел маркетинга 3Dfx сумел обратить почти все недостатки в достоинства. Связка из Voodoo2 и сравнительно недорогого, но качественного 2D легко уделывала интегрированные одноплатные решения конкурентов, которые работали хуже либо в одном из режимов, либо сразу в обоих.
Видели монструозные сборки с водянкой, 2-3-4 видеокартами, подсветкой и всем таким? Выглядит красиво, стоит безумно дорого. А началось все это в далеком 1998-м, когда 3Dfx представила технологию SLI (Scan-Line Interleaving, чередование строк). Два 3D-ускорителя Voodoo2 (одинаковых или специальный комплект из материнской плюс дочерней плат, соединенных внутренним шлейфом) работали как единое целое, рисуя четные/нечетные строки изображения и соединяя их в одну большую картинку перед выводом на монитор. К сожалению, о внутренней красоте ПК тогда мало заботились, и красивых фото из прошлого не будет: бутерброд из 3D-ускорителей и видеоплаты выглядел примерно так:
Подобная связка натурально удваивала производительность в трехмерном режиме (не то что современные AMD Crossfire или SLI от NVIDIA) и позволяла достичь более высоких разрешений. Обычные Voodoo поддерживали картинку 800х60с 16-битным цветом, пара таких карт уже могла работать с 1024х768. Стоила такая сборка от $190до $2500. Еще ~$150пришлось бы выложить за остальное компьютерное железо.
Для сравнения: в 1998-м ~$100долларов стоила Nokia 811(та самая, из «Матрицы»), за $250можно было взять вполне живую «Волгу» или дачный домик с участком в ~100-12км от Санкт-Петербурга, а за $400стать крутым владельцем пусть и б/у, но иномарки:
Минусом SLI стал первый в истории CPU Bottleneck: процессор попросту не успевал загружать видеокарты работой, так что связки из Voodoo2 в SLI некоторые использовали по 5 лет, меняя остальное оборудование.
Скелетная анимация
Игры получали более высокое разрешение текстур, улучшенные спецэффекты взрывов и освещения, более сложные, наполненные деталями модели — в общем, все сводилось к количественному росту разрешения и детализации (но не качественному). И многое было суждено изменить одной игре. Half-Life в 1998 году поражал вниманием к деталям, новаторским геймплеем, кат-сценами на движке игры и неотрывным повествованием с видом от первого лица.
Главное, что там было с точки зрения графики — скелетная анимация. Внутри каждой модели был своеобразный скелет из костей, и группы полигонов на руках, ногах, туловище и так далее были привязаны к костям. Больше не требовалось создавать отдельные виды моделей для каждого из состояний, можно было анимировать основу, а полигоны сами следовали за ней. Именно поэтому первая «Халфа» выглядела так свежо и необычно: движения персонажей и их поведение были «как в кино». По крайней мере, для того времени.
Sony PlayStation
Не удивляйтесь, что мы вспомнили первую «Плойку» только к 1997-1998 годам. Да, она вышла еще в конце 1994-го, но реально популярной стала к 1997 году, с выходом Gran Turismo и Final Fantasy VII.
Обе показывали неплохую для того времени графику, и именно на этих играх разработчики полностью научились задействовать возможности железа PS1, а ведь оно было весьма скромным: 33 МГц процессор в паре с 2 Мб оперативной памяти и 66 МГц видеоконтроллер с 1 Мб видеопамяти, который мог обрабатывать до 18тыс. полигонов в секунду.
С точки зрения той же Voodoo железо было полным шлаком, но у разработчиков были инструменты с прямым доступом к процессору, памяти и видеоядру, а, значит, движок игры мог использовать все доступные ресурсы, ведь прослойки в лице операционной системы у консоли не было.
Первые три-четыре года жизни консоли графика и производительность игр были ограничены не аппаратными возможностями, а мастерством и опытом разработчиков: то же отсечение невидимых полигонов, которое обеспечило Voodoo прорывную производительность, здесь закладывалось на этапе создания игрового движка, а не в само железо. Да, создавать игры было сложнее, чем на ПК, но и железо продержалось десять лет: последняя игра на PS1 (FIFA 2005) вышла в конце 2004 года, хоть и с упрощенной графикой. В конце концов решал геймплей, а не нажористый графон.
Закат эпохи 3Dfx
«А где 3Dfx сейчас, если она была так успешна?» — спросите вы. Поглощена компанией NVIDIA. Одна стратегическая ошибка или, скорее, неудача, пара-тройка тактических просчетов — и лидер индустрии достается своему более успешному конкуренту.
С выходом Voodoo3 компания 3Dfx решила, что она перестанет кормить ОЕМ-производителей, как делала раньше, и будет заниматься разработкой, созданием и продажей видеокарт сама. Для этого был приобретен производитель железа STB Systems, чьи заводы находились в Мексике. Конкурировать по качеству и ценам с азиатскими производителями-партнерами NVIDIA (которая все также OEM’ила и не стеснялась этого) не вышло по ряду причин. И дело даже не в банальной стоимости производства.
NVIDIA выиграла эту войну за счет ушлых маркетологов, грамотного планирования и… бюджетных карточек. Да, флагманский Voodoo3 было тяжело побить в играх, но его производитель абсолютно честно указывал на коробке характеристики работы видеокарты — 16-битный цвет в трехмерном режиме, максимальное разрешение дисплея 2048х1536, максимальный размер текстур 256х256 точек. У стоявшей рядом на полке RIVA TNT2 имелась поддержка текстур 2048х2048 и 32-битный режим работы в 3D. И покупатели повелись на цифры: им было плевать, что Voodoo работает быстрее, а игры, способные использовать преимущества RIVA TNT2 можно было пересчитать по пальцам одной руки.
У 3Dfx попросту нечем было заткнуть средний сегмент! Архитектура чипов Voodoo изначально выстрелила за счет двух блоков текстурирования: видеокарта работала быстрее конкурентов в примитивных операциях, а API Glide, нежно любимый некоторыми разработчиками динамичных игр, позволял творить настоящие чудеса. Это была не консольная производительность в вычислениях и близость к железу, но что-то около того. Удешевленные Voodoo2 в первую очередь лишались второго блока текстурирования, что выглядело так себе на бумаге и еще хуже в игровой производительности, при этом себестоимость производства падала не так уж и сильно. В результате карточка была плоха по балансу производительности и цены, не пользовалась спросом и бросала тень на свою старшую сестру. В Voodoo3 обрезать карту не стали, разные версии отличались в первую очередь тактовыми частотами и объемами памяти.
Если флагман мог потягаться с продуктами конкурентов, то его ослабленные варианты были не так хороши, а финальным аккордом, добившим менеджмент компании (да и кучу других конкурентов) стал внезапный выход GeForce 256, первой настоящей и полноценной видеокарты во второй половине 1999-го.
Последний из могикан
Еще одной видеокартой, способствовавшей свержению 3Dfx с вершин игровой графики стала Matrox G400. Несмотря на то что это была не последняя карточка от Matrox и сама компания продержалась на рынке видеоускорителей аж до 2003 года, именно G40была последней успешной картой. И на то был ряд причин, как архитектурных, так и финансовых.
Во-первых, это видеокарта была пионером поддержки полноценного бамп-маппинга: он добавлял текстурам объема и рельефа практически бесплатно для производительности. Во-вторых, G40мог работать с двумя мониторами, как с одним большим, что ценилось некоторыми игроками и профессионалами. В-третьих, Matrox ревностно относились к качеству аналогового тракта и ЦАП’ов, и G40долгое время (вплоть до выхода GeForce 4) был эталоном по части четкости и скорости отображения информации. Не обошлось и без минусов: платы первого поколения не поддерживали в полной мере AGP x4, работая только с двумя линиями передачи данных. Кроме того, производительность драйверов в OpenGL режиме из-за политики Microsoft была ужасной: по сути, все OpenGL вызовы на лету оборачивались в функции Direct3D, что не лучшим образом отражалось на скорости работы. Полноценный OpenGL-драйвер вышел только через год после начала продаж.
Тем не менее вплоть до выхода GeForce 256 производительность карточки в 2D и Direct3D режимах была на уровне топовых решений конкурентов: Matrox G40успешно противостоял 3Dfx Voodoo3, NVIDIA RIVA TNT2 Ultra и ATI RAGE 128 Pro. Каждая из видеокарт была в чем-то лучше остальных, из-за чего 1999 год был достаточно напряженным для потребителей, ведь выбирать было из чего. Первая показывала лучшие результаты в тех играх, которые поддерживали низкоуровневый API Glide, вторая была признанной королевой OpenGL, а Rage 128 Pro хоть и был не так быстр, но и стоил меньше и уверенно прописался в среднем сегменте.
Настоящий GPU
GeForce 256 можно считать одним из родителей концепции видеокарт, продержавшейся следующие пять-шесть лет, аж до конца эпохи железа DirectX 9.0c и начала DirectX 10. Это была первая видеокарта, полностью обеспечивающая ваш компьютер всем необходимым для работы с графикой. Она имела полностью аппаратный блок T&L (трансформации и освещения), на 90% снимающий с CPU нагрузку по расчету геометрии. Видеоролик с презентацией возможностей GeForce 256 захватывал дух в свое время:
С виду ничего сложного? Дело в том, что до GeForce 256 геометрией занимался центральный процессор, и эта трава отбирала все ресурсы CPU. Сама же видеокарта использовала интегрированную структуру: 2D и 3D операции выполнял один чип, впервые использовалась память типа DDR, которая была распаяна непосредственно на плате и обеспечивала быстрый доступ к необходимым ресурсам. Поддержка мультитекстурирования и пиксельных конвейеров давала высокую производительность и потрясающие спецэффекты.
Ответить 3Dfx было нечем: денег на столь быструю и качественную разработку параллельно с внедрением продуктов в производство не хватало, бюджетный сектор поделили ATI и NVIDIA, вытеснив почти всех конкурентов, а топовые карточки значительно уступали в производительности флагманам «красных» и «зеленых». Voodoo4 и Voodoo5 не смогли спасти компанию: на рынок они попали слишком поздно, проигрывали конкурентам в производительности, цены из-за политики «сами производим, сами продаем» были высоки, чипы довольно часто выходили из строя, а разработать что-нибудь уровня первой Voodoo в 3Dfx не успели, хотя работы в этом направлении и велись.
Была запущена процедура банкротства, все активы и большая часть кадров (работавших над новым поколением GPU, который так и не увидел свет) досталась NVIDIA, а разработчики, ответственные за создание технологии SLI и сопутствующей обвязки, ушли в ATI.
Архитектура следующего десятилетия
Из всех разработчиков видеооборудования к 2001 году в живых остались S3 (правда, уже в составе VIA), 3Dlabs и Matrox, ушедшие в производство специфического железа для рабочих станций, а также NVIDIA, ATI и SiS, занимавшихся десктопной графикой. Остальные компании если и присутствовали на рынке, то либо лицензировали чужие разработки, либо довольствовались low-end-сегментом и рабочими станциями на экзотических ОС.
Выход GeForce 3 окончательно определил общий дизайн GPU: геометрический T&L процессор с собственным кэшем, блок текстурирования, шейдерный блок, блок растеризации, кадровый буфер и сравнительно большой объем внутренней памяти для хранения и обработки моделей и текстур...
Взято: Тут
46