Как стать автором
Обновить

Вперёд в п(р)ошлое. 3dfx. The way it was

Время на прочтение 11 мин
Количество просмотров 14K

Краем глаза


image

Это легенда. Это voodoo5 5500 (здесь отвесить поклон).
Представляет из себя двухчиповое решение. Это был путь 3dfx, по которому тот шагал широченными шагами, и назывался он SLI. Тогда как в нвидие были за интеграцию всего во вся, т.е. дислокацию всего в одном чипе. Кто прав мы уже сегодня знаем, а вот почему я и предлагаю вам прочесть.

4-пиновый молекс справа сверху. Да, это была одна из первых (если не первая) карт сегмента homeuser с доп. питанием. Я не перепутал, это точно — без молекса не заведётся. На этой только VGA-выход, но уже тогда были и модельки с DVI. А ещё тут есть Фичеконнектор… транзисторы, катушки, резисторы… теперь тоже все есть… и конденсаторы тоже… и значок "!!! НЕ ЛАПАТЬ!!" (как показала практика, абсолютно напрасный).
Это я к тому, что карту пришлось чинить.
В 3D было так:

image

Работает, кланяюсь паятелям (и даже разгоняется!)

image

Работает, как видно, agp2x и не иксом больше. Хотя во многих обзорах писали agp4x, врунишки. DiME здесь тоже нет, а вот сайдбанд есть, что удивительно :) Всё это делает карту конкурентом сразу нескольких поколений карт других вендоров, и это довольно-таки забавно.


Ближе к сердцам.


image

Раскрытие культа вуду.
На самом деле, вопреки всем PR-картинкам, чипы выглядят вот так:

image

Фото выше ! НЕ МОЁ!, я всё-таки не настолько любитель субпродуктов… На фото вообще ничего не понять, но мы-то с вами знаем, что это два чипа VSA-100, работающие в слае. Вот только SLI тут уже намного более продвинутый, притом каждый чип может работать в двух режимах: рендеринг или наведение макияжа. Я откровенно не знаю, как сейчас устроен режим SLI на нвидиях, но тут… впрочем, если кому интересно, теории самое место вот здесь. 3dfx, короче. Как всегда особенный и классный.

Сама карта 2000 года рождения. Видеопамять (64 метра) тут интересная: каждому чипу отдано по 32 метра в монопольное пользование. Ну, то есть, эффективной памяти тут 32 метра :) И, между прочим, Everest это подтверждает!
На момент написания статьи я был в этом абсолютно уверен, однако же глубокое тестирование и изучение вопроса показало:

We would like to mention that each of VSA-100 chips used in SLI has its own frame buffer for rendering lines and line successions (bands). After that the data from all these frame buffers is submitted to the general frame buffer where the complete frame is created and transferred to the monitor. Moreover, each VSA-100 chip is equipped with its own memory bus and local frame buffer and supports up to 64MB local graphics memory. A part of the available memory is used for a framebuffer (with double of even triple buffering) and the rest — for storing textures and Z-buffering. In case the available memory turns not enough, 3dfx suggests resorting to one of the two supported texture compression methods: DXTC or FXT1.


www.xbitlabs.com/articles/graphics/display/3dfx-vsa-100.html


image

Это, кстати, возможно, единственные карты, где память и чип тактуются синхронно. Именно поэтому обычно 3dfx плохо гонится. Но зачем, если они итак всегда были лидерами по скорости? А вот…

… А вот ещё эти чипы прогремели своими грандиозными способностями в такой нужной индустрии, как наведении макияжа. Называется здесь это T-Buffer. Суть технологии в аппаратной реализации Full Scene Anti-Aliasing (FSAA) через 4x super sampling, которая делает ровно это самое: во всём кадре убирает лесенки очень сложным методом. Метод был по тем временам уникальный, даёт очень качественную картинку, но FPS хавает так, что возродили его только вот пару лет на взад.
Ну а на базе этой FSAA также аппаратно были реализованы самые необходимые инструменты для мэйкапа: размытие в движении, мягкие тени и фокусировка на объекте. Я не ошибся сейчас: это было реализовано.
Однако было вот это FSAA и компания только в вуду5 (требовалось два и более чипа). Ну точнее в вуду4 тоже было, но только FSAA2x.

Дрова


Наконец-то на ура, никаких глюков как с вуду3. Что и говорить, 3dfx жжёт и греет! Да вы сами посмотрите:

image

image

Кто не понял — F1:

image

Разгона правда нет, но… эт поправимо ;)

что интересно
  1. Дрова для DOS всё ещё входят в комплект и, более того, всё ещё допиливаются!
  2. Сплэши 3dfx — это реально рисующиеся при инициализации глайдов полигоны с текстурами и всеми делами. Из-за них дрова весят больше на целых 2 метра :D
  3. Последних дров было двое: последние и последние-бета. Так вот разница в них только в версии OGL. То бишь, 3dfx всерьёз тогда взялся исправлять свои косяки и этот был в общем-то, наверное, последним из тех, что не успели до конца пофиксить.
  4. Дрова для voodoo3 и voodoo4/5 практически одинаковые, т.к. не успели толком «разделиться». Это очень хорошо просматривается, если сравнить побайтово последние референсные для каждой из карт. Этим и объясняется наличие универсальных любительских сборок для v3/4/5 — бери разные версии файлов, да собирай!



FSAA

С этим здесь всё неожиданно очень просто :) У данного метода FSAA единственной настройкой является количество сэмплов. Вот вы и выбираете между 4-мя и 2-мя. А ещё можно вообще отключить второй чип, превратив карту в вуду4 :D

image

Ещё раз об аппаратных спец-эффектах вуду5. Они были реализованы в чипе. Они даже были в спецификации DX8. Но в игры попасть не успели. Ну, почти…

Also, T-buffer support was programmed into Serious Sam First/Second Encounter. It is supposed to be used for depth of field effects. To activate it, the game must run in 16-bit color depth, FSAA must be on and the following commands have to be written in the console:

ogl_iTBuffereffect=2
ogl_iTBufferSamples=4
The game is then supposed to confirm T-buffer usage in the console when starting it up. Other valid values for the second command are 2 and 8, depending on the number of VSA-100 chips on the used card. The FSAA implementation in this game is reported to be faster than in other releases. Still, given the experimental nature it is very unlikely that the DoF effects work as intended.


www.vogonswiki.com/index.php/3dfx#Voodoo_4.2F5


Multitexturing

Как мы все хорошо помним :) у 3dfx был свой топорный метод наложения текстур. Формула проста: сколько чипов, столько и текстур за такт. То есть, в нашем случае наша в5500 могёт 2 текстуры за такт. Вот это и назвали мультитекстурированием. Прекрасно, а теперь вспомним криву тнт2 и её трилинейную фильтрацию. Так вот, здесь дела обстоят ровно точно так же (будто бы в 3dfx решили, что это прогрессивный путь). Ну то есть, в дровах вы найдёте:

image

На самом деле читать это нужно так: или совсем нет трилинейки, или нет мультитекстурирования, но тогда есть аппроксимация (она же mip-map dithering). Такие дела.

OpenGL ICD

На самом деле, насколько он ICD я не проверял, потому что в 3DSMAX и подобных монстрах я не разбираюсь. А разбираюсь я в играх. И вот по этому поводу могу сказать следующее: он по-прежнему ловит мощные глюки. Так что можно сказать, что хватало и MCD. Тем более, что даже в последней-бета-версии на свете этот ваш мнимый ICD по-прежнему является просто WRAPPER'ом в GLIDE. Не верите? А зря:

image

image

И вот тут-то получается хохма с такими вещами, как например, Quake2. Ведь в Quake2 свой собственный враппер glide -> ogl, а, это значит, что? А что потом весь ogl снова уходит в glide и только потом рисуется на экран. Такие себе круги ада :) Был неправ, в Quake2 и подобных на самом деле OGL -> Glide Wrapper. Т.е. по-сути всё равно как запускать его на вуду: в OGL или в Glide, т.к. в первом случае драйвера всё равно переведут всё в глайды, а во втором игра переведёт всё в глайды самостоятельно.

Прикладной уровень


image

Влезло, чудище :)

ВНИМАНИЕ, Конфиг:

MB: Gigabyte 6vtxe (Apollo Pro133T chipset)
CPU: Pentium 3-S 1.4Ghz/512Kb/133FSB
RAM: 3x256Mb PC133
HDD: healthy UDMA-5 WD с приличным кэшем 2Мб и 5400RPM
WinME
Video: 3dfx voodoo5 5500​

ВАЖНО:
  • Играем по-прежнему в Deus Ex!… лишь иногда вспоминаем другие хиты...
  • Настройки графики в игре: максимум красок, всякие там трилинейки и волюмтрик лайтнинги! В D3D есть настройка Use 3dfx. Не знаю, что делает, но я включил :)
  • Настройки дров… в процессе покажу, с чем есть смысл играться.
  • Карту сразу же разгоняем со штатных 166/166 до 175/175. На деле разгон даст кадра 2-3 в лучшем случае. Можно разогнать до 190, но нужно охлаждать, а мне лень.
  • Разрешение в игре будем щёлкать. Потом объясню почему.


Поехали по технологиям…

API

Вот тут интересно. Карта умеет аж 3 API:

  • Direct3D. Поддерживается Direct3D7, собирался поддерживаться Direct3D8.
  • OpenGL. Как мы уже выяснили, это wrapper в glide, причём, по традиции, глючный. В дровах даже настройки для них объединены. Что беспокоит:
    • Попробуйте запустить хоть одну OGL-игру в разрешении большем 1024x768. Я пробовал 5 игр,- вылетели все!
    • ALT+TAB нормально заработал только в бета-версии дров.
    • Артефакты!

      image

    • В бета-дровах ввели настройку Guardband Clipping.

      image

      В общем и целом это хардварная функция, откусывающая у невошедших в кадр полигонов. Включите — откусит вам глаз :)


  • Глайды. Классика. Собственный проприетарный апи, работающий на низком уровне, а, значит, максимально заточенный на карты 3dfx и обеспечивает высшую производительность. Всё так, если в игре поддерживается ;)
    По факту после выхода в5500, если игр для glide2x было предостаточно, то для glide3x успело набраться хорошо, если штук 15. Точного списка нигде нет; эти все, что известны. Отсюда следует, что следствием опоздания 3dfx вывода чипа на рынок стало падение популярности glide. Плохо это или хорошо — уже не важно.


Цветастость

Наконец-то в 3D заявлена поддержка 32bpp! Сейчас все фанаты 3dfx в оцепенении: неужели? Ужели. В Direct3D.
На самом деле, как я выяснил, в glide3x поддержка-то, похоже, тоже есть (? или была задумана?):

image

Great! А теперь сообщу, что не нашёл ни единой хреновой игры с текстурами 32bpp для glide! Если быть точным:
  • Deus Ex (и любая на движке Unreal Engine 1) не дадут вам выставить 32bpp в глайдах. Только в Direct3D;
  • Hitman: Codename 47 тоже. А, если вы всё-таки выставите, то исправит эту ошибку;
  • Messiah не даст — 32bpp только в Direct3D;
  • Turok 2 не даст — 32bpp только в Direct3D;
  • Driver не даст — 32bpp только в софтваре :D
  • Интерес представляет Stunt GP. Там в настройках можно выбрать 32bpp в глайдах. Но после анализа шотов могу констатировать: это фейк.


… возможно, именно поэтому в дровах нас ждёт волшебная опция:

image

Так вот. При её включении разрешение в Deus Ex станет фиксированным 640x480 и сменить его будет невозможно. Другие игры обязательно поймают свои глюки. Но несовершенство цвета мы так и не победим.

Ну ладно, вот мы и подходим к самому интересному. Сравним картинку?
Та же самая сцена взята намеренно, чтобы можно было вернуться к пред. части, сравнить качество и погрузиться в глубину увиденного.

ВАЖНО: шоты сделаны в 1024x768, FSAA 4x. Потому что OGL выше не поднять. Шотов 1280x1024 не будет, но расскажу!
Вдобавок к этому внизу шотов по традиции мониторим fps, делаем анализ. По предыдущей части и, исходя из конфига, хорошо помним, что кроме видеочипа больше упереться у нас не во что.

image

image

image

Ну, во-первых, вы, верно, заметили, что в глайдах ну нереальный прирост производительности. Да-да, об этом многие говорили, что вот мол под glide сделана игра. На самом деле там 16bpp же, вот и весь секрет ;) Правда, выглядит неособо хуже. Всему виной хардварный постфильтр 3dfx, о котором позже.

Во-вторых. Если поднять разрешение до 1280x1024 (доступно в d3d и глайдах), то увидим мы примерно столько же fps, сколько было на криве тнт2 в этом же разрешении и цвете. Но картина будет совершенно другая, потому что FSAA — это очень гладко. Да вы только взгляните на солдата! Здесь вин.

Сгладить ВСЁ!!!

Так вот, значит, как было… Задрал я в дровах всё на максимум красок, в том числе FSAA в 4x, mip-map dithering выключил.
После запуска Deus Ex в глайдах сначала, конечно же, было вот это:

image

За этим последовало точно следующее:

** твою мать!!! Вот это сглаживание!!! Ни*** себе, *****!!!


… Ну так вот, ради чего стоило купить карту:

image

image

image

Погодите немного, если вы не заметили особой разницы. Пока заметьте, что производительность падает вдвое с каждым уровнем фильтрации. Это было 1024x768, которое по тем временам было массовым. Можно констатировать, что при FSAA2x вполне можно играть в этом разрешении. FSAA4x явно не хватает ещё пары чипов. Это конечно, слишком дорого стоит… а стоит ли вообще? Посмотрим… Посмотрим на спинку стула, края столика, каску, хоткей-инвентарь. Если кто заметит, что у трупа увеличился живот — это он дышит ;)

image

image

image

Вот тут видно, что FSAA4x на самом деле не сильно-то чтобы, так что решать вам.
Ну и по fps выводы такие: здесь вуду5 обставила криву тнт2 даже в FSAA2x (у тнт2 будет приблизительно столько же fps, но не будет FSAA2x).

Hardware T'n'L

Что это и зачем? Спорный вопрос, на который в те дни не было однозначного ответа. Пока одни алчности за него ратовали и всячески продвигали идею слить всю ответственность на gpu, другие спорили за растущую мощь CPU и приводили различные (не менее сомнительные) доводы, сводившиеся к тому, что на CPU и сейчас вполне можно положиться, и, давайте, каждый будет заниматься своим делом: мы — рисовать, а архитекторы — свои архитектуры оптимизировать. Кто оказался прав мы уже сегодня знаем, но как же обстояли дела тогда?

Что просто-таки удивительно, здесь 3dfx нас не кинули. Пока маркетологи кормили завтраками выпустить карту с блоком Hw T'n'L, разработчики дров напилили пасхалку для особо фанатичных случаев. Спустя месяц, я её таки отыскал в лесу опций:

image

Если она выключена, то:

  • Max Payne скажет вам так:

    image

  • Prince of Persia: The Sands of Time скажет так:

    image


Если же опция включена:

  • Max Payne скажет уже так:

    image

  • Prince of Persia: The Sands of Time скажет так:

    image



Однако же в любом случае:
  • Prince of Persia: The Sands of Time не запустится.
  • Painkiller не запустится.
  • Max Payne покажет такое:

    image

  • Ну а Star Wars: BattleFront покажет такое:

    image



В общем и целом недолгий век у вуду5 был…

Чего ещё интересного...

  • Совместимость с DOS
    На самом деле, вы не поверите! Мне удалось запустить на этой карте Carm'у и Pyl.

    image

    Отдельно хочется рассказать про Pyl. Под виндой на вуду5 она не запустится, — только под DOS и то не сразу ;) Да, это правда, я видел Пыль в глайдах!!! И там действительно само по себе есть сглаживание.
    Но, чтобы увидеть, сначала мне пришлось настраивать драйвера DOS так, чтобы тех_что_хватит_всем для запуска хватило впритык, а потом нужно было гнать на карту новыми, нигде не описанными переменными, которые пришлось найти, не поверите, в HEX-коде glide2x.ovl. Повторить такое я вряд ли когда захочу. Но, даже запустив её со звуком, мышью и плюшками, я был просто потрясён. В процессе игры видяха справлялась, но винт трещал постоянно, игра подвисала перед каждой дверью. Я извратился с драйверами ещё раз и добавил smartdrive. НЕ ПОМОГЛО!
    В связи с чем у меня в голове завертелся простой вопрос: «зачем вообще делать такие игры под DOS?» Ну, если уж вы используете портал-рендеринг, своп, пишете конфигуратор под винду… логично ведь писать игру уже только под винду? На самом деле, я, кажется, понимаю: игру стали писать ещё когда о виндовс только слышали, а вот когда уже, то сразу нахлобучили текстур, а для dos прикрутили глайды и успокоились — и таак сойдёт!

    Ну а Blood победить так и не удалось. Для страждущих есть вот такая страница со списком переменных для вуду5, но назначение большинства остаётся загадкой. Возможно, ответ есть в glide programming guide? (будете гуглить, смотрите версию, — их много гуляет)

  • Про качество рендеринга в 16bpp и постфильтр

    За постфильтр отвечают сразу две опции дров: 3D Filter Quality и Alpha-Blending. Если обе задраны соответственно в High и Sharper, то на выходе получается 22-битное изображение. Если кому интересно, как в 3dfx получают 22-битный цвет из 16-битного.

    Вам смешно? А вот смотрите наглядно:

    RIVA TNT2

    image

    VOODOO5

    image

    Вы скажете: "Если у вуду явно недостаточно цвета, то у кривы замечательные точки в местах перехода. Вот вам и 22bpp — даже и не знаю, где лучше"… И будете неправы :)

    На самом деле (если кто не поленился почитать), постфильтр 3dfx применяется уже после вывода во фреймбуфер, потому реальную 22-битную картинку мы можем поймать только хардварно (или сфоткать монитор)…
    Или же существует метод эмуляции постфильтра 3dfx. Легенда гласит, что 3dfx поделилась кусочком кода с программой HyperSnap и та с тех пор научилась не только нормально снимать шоты из глайдов (16-битные из фреймбуфера), но и, по желанию юзера, делать их 22-битными самостоятельно (после снятия 16bpp-картинки). Причём на выбор, используя старый вуду1-постфильтр (помните полосатое изображение?) или свежий вуду2/3/4/5-постфильтр.

    image

    И я готов биться об заклад, что картинка в 22bpp выглядит именно так:

    image

  • Cкриншоты в глайдах посредством Prtscn сделать у вас не получится.

    Судя по всему, у glide какой-то особый способ построения изображения. При нажатии Prtscn в буфере всегда вот примерно такая каша:

    image

    Это точно не связано с настройками драйверов или состоянием души, — я пробовал отключать постфильтр и второй чип и утром, и вечером. Судя по всему это именно особенность работы glide.


3dfx gone, but NEVER FORGOTTEN​



Карта отомстила криве тнт2. Но и всё. У меня нет жирафа 256, но, надо полагать, там всё это тоже было, только быстрее. А вышел он в том же году с блоком T'n'L, вооружившись 4-мя TMU и укомплектованный DDR-памятью. Да, FSAA у него подкачала, но зато он был быстрее в играх, где использовался этот самый Hw T'n'L. Или нет? На самом деле, всё дело в процессоре: с мощным процессором вуду5 запросто мог бы с ним поспорить и много в где, но… в 2000-м году вышел уже и GeForce 2, и спорить стало бессмысленно.

Так и получается, что новые технологии приходят на смену старым. Прогресс ушел вперед, запас есть, старье надо выбросить и забыть. В этом плане никакого маркетинга, чистый прогресс.


Справедливости ради, 3dfx до сих пор периодически веселит нас из могилы всё новыми фокусами:
  • Так, совсем недавно появились дрова для вуду5 под windows 7
  • До сих пор пилятся эмуляторы glide.
  • Voodoo 5 5500

    With new third party drivers the Voodoo 5500 can out perform the GeForce 2 and Radeon DDR

    en.wikipedia.org/wiki/Voodoo_5

  • Voodoo 5 6000

    With regards to performance, little was known until enthusiasts were able to get pre-release hardware and run tests on it. The results showed that the Voodoo 5 6000 outperformed the GeForce 2 Ultra and Radeon 7500, which were the fastest iterations of the GeForce 2 and Radeon R100 lines, respectively. (It was rumored that GeForce 2 Ultra was intended to prevent 3dfx taking the lead with their Voodoo 5 6000.) In some cases, the 6000 was shown to compete well with the next-generation GeForce 3.

    en.wikipedia.org/wiki/Voodoo_5



Такие дела. Всё выше — это только малая и положительная доля происходившего. Я опустил в том числе и тысячи удачных (и не очень) матерных выражений и попыток потыкаться с настройками и посмотреть на результат, не имеющий ни которого практического смысла.

Благодарности


  • Прежде всего, хочется наконец открыть миру правду. Кланяюсь двум инженерам из одной Питерской конторы, которые помогли деталями и даже их припаяли за меня! Без них этого обзора вуду5 просто не было бы!

  • Администрации old-games.ru за возможность быстро и бесплатно скачать 20 игр скопом только ради того, чтобы заценить структуру файлов и однажды запустить.

  • Открывателям горизонтов и срывателям покровов — комьюнити VOGONS. За кучу уникальных исследований и наработок!


...TBC...

Использованная литература
  • В таких делах начинается всё, как правило, всегда с вики.
  • Затем всегда следует ixbt, 3dnews и hwp.
  • На десерт — vogonswiki.
  • Конечно же, логотипы 3dfx я кропотливо моделировал в 3DSMAX

Теги:
Хабы:
+27
Комментарии 23
Комментарии Комментарии 23

Публикации

Истории

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн