Жизнь до ускорителей: программный рендеринг и пиксельная «каша»

В середине 1990-х годов трехмерная графика на персональных компьютерах находилась в плачевном состоянии. Все математические расчеты перспективы, наложения текстур и освещения ложились исключительно на центральный процессор Pentium. Чтобы игра работала хотя бы при 20 кадрах в секунду, разрешение приходилось сбрасывать до зернистых 320×200 пикселей, а текстуры при приближении к стенам распадались на гигантские мерцающие пиксели.

Ранние попытки сделать видеокарты с 3D (S3 ViRGE, Matrox Mystique) оборачивались фиаско: эти чипы работали настолько медленно, что разработчики саркастично называли S3 ViRGE «замедлителем графики». ПК отчаянно нуждался в инженерном прорыве, который освободил бы процессор от рабского труда растеризации.

«Когда мы запускали первые 3D-игры программно, процессор был раскален до предела, а на экране была пляска плавающих пикселей. Мы знали, что нужен чистый кремний». (Скотт Селлерс, сооснователь 3dfx Interactive)

Чипсет SST-1: почему отдельная 3D-плата перевернула индустрию

Выходцы из Silicon Graphics Скотт Селлерс, Гэри Таролли и Росс Смит решили не бороться за рынок 2D-видеокарт для Windows и рабочего стола. Вместо этого они спроектировали специализированную плату расширения PCI — 3dfx Voodoo на базе двухчипового комплекта SST-1: процессора кадрового буфера PixelFX (FBI) и текстурного процессора TexelFX (TMU).

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

Печатная плата Diamond Monster 3D на легендарном чипсете 3dfx SST-1 с механическим реле.
Печатная плата Diamond Monster 3D на легендарном чипсете 3dfx SST-1 с механическим реле.

Магия API Glide: дружба с Джоном Кармаком и триумф GLQuake

Главным оружием 3dfx стала не только микросхема, но и программный интерфейс Glide API. В отличие от громоздкого и неповоротливого Direct3D от Microsoft, Glide представлял собой предельно оптимизированное подмножество OpenGL, передававшее команды напрямую регистрам чипа SST-1 практически без потерь на процессорные задержки.

В январе 1997 года Джон Кармак выпустил порт GLQuake. Игра на 3dfx Voodoo выдавала гладкие 60 кадров в секунду в разрешении 640×480 с динамическим цветным освещением от выстрелов ракетницы. Это было технологическое откровение, разделившее историю видеоигр на «до» и «после». Платы Diamond Monster 3D сметали из магазинов по всему миру.

«Увидев GLQuake на Voodoo через Glide, я понял: эпоха программного рендеринга на процессоре закончилась навсегда». (Джон Кармак, ведущий программист id Software)

Роковая ошибка: покупка фабрик STB и поражение перед Nvidia GeForce

Опьяненное абсолютным доминированием (до 85% рынка 3D-ускорителей), руководство 3dfx совершило роковую ошибку. В конце 1998 года компания решила отказаться от продажи чипов сторонним партнерам (Diamond, Creative, Guillemot) и купила за $141 млн обанкротившегося производителя плат STB Systems, чтобы единолично собирать видеокарты на собственных фабриках.

Отвергнутые партнеры мгновенно переметнулись к молодой и агрессивной Nvidia. Осенью 1999 года Nvidia нанесла смертельный удар, представив GeForce 256 с аппаратным блоком расчета геометрии и освещения (Hardware T&L). Застрявшая на устаревшей 16-битной архитектуре 3dfx обанкротилась в конце 2000 года, а ее интеллектуальная собственность была выкуплена Nvidia за бесценок.