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

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение с нуля на Glide

Уровень сложностиСредний
Время на прочтение26 мин
Количество просмотров12K
Всего голосов 80: ↑79 и ↓1+78
Комментарии49

Комментарии 49

Друзья, с новым годом! За все время подготовки статьи я постил бэкстейдж у себя в тг. Один из читателей увидел заинтересованность в видяхах и предложил заслать isa vga видяху.

Как думаете, что это за видяшка? Явно поздняя по числу чипов, год 94 минимум

@dlinyj, может быть ты знаешь?

OAK Technology OTiVGA 037C 256Kb Hercules CGA EGA VGA 16 Bit ISA

Блин, я на OAK не обратил внимания :( Думал может это какая-то нонейм карточка из Тайваня.

Спасибо!

Ну, кстати, я бы не назвал её совсем уж поздней. На чипах надпись 9012 - это 1990 год. Это как раз расцвет таких ISA-видюх. Ещё на ней виден второй разъём - надо полагать, это EGA.

Поздними можно назвать карты 1993-1995 годов с куда более простой схемотехникой, где часто кроме видеочипа, пары микросхем памяти и ПЗУшки с биосом ничего нет. Всякие Realtek, Trident и подобные. Многие из таких карт, кстати, весьма ценятся, так как умеют работать, будучи всунутыми в восьмибитный слот, что актуально для машин типа XT, где других слотов попросту нет. А EGA-монитор есть не у каждого.

офф. Может быть тут найдутся эксперты, которые скажут что за перемычки на видеокарте выведены на панель.

Большое спасибо. PDF точно от неё. Не ожидал, что это оказался целый комбайн - ISA 8/16, VGA/EGA/CGA/MDA.

Выбор типа монитора и ещё некоторые настройки.

Круть! В районе нулевых у меня была Voodoo Banshee, играл в Unreal и NFS Porshe Unleashed в глайде, и мы с братом разделяли мнение, что они выглядят красивее opengl/d3d, то ли какая цветопередача, то ли сглаживание, мы так и не поняли из-за чего.

Да, у многих было такое время. С чем связано - сам не знаю :)

на glide картинка была глаже =)

потому что у 3dfx был специальный хитрый "22 битный" вывод изображения на экран из фреймбуфера

до честных 32х бит он не дотягивал, но был сильно лучше типичного 16-ти битного режима конкурентов

можно погуглить и найти много матриалов по этому поводу, например

https://www.beyond3d.com/content/articles/59/

Спасибо)

У меня был Voodoo Rush....

Этакий мутант с 6 мб памяти, в 98 году вроде.... по моему он даже до сих пор лежит где-то))

Не было тогда компьютеров у всех подряд, а у кого были, часто не было не то что 3dfx, а даже банальной аудиокарты. Да и по ценам все это дело стоило денег.

Причём за 3dfx Voodoo приходилось припачивать в дополнение к основной видеокарте.

Понравился пост. К разработке под такие железки никакого отношения я не имею, но увидеть, как оно, круто.

И материнка нашлась! Ей оказалась поздняя ECS P6IPAT на 815 чипсете с универсальным AGP-разъемом, который поддерживал все стандарты AGP одновременно.

Самое главное - не втыкать эту карту в платы по типу поздних 478 от ASRock (где были PCI-E и AGP на пару). Слот там зачем-то поставили без ключа, но уровни исключительно 1,5 В, при вставке видюхи старого образца материнка немедленно и бесповоротно сдохнет. Рядом со слотом даже написано что-то в духе "3.3 V AGP card will cause permanent damage".

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

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

А будет ещё что-то про S3? Чтобы именно какую-то игру или демку под неё написать. Сама карта и машина, куда её воткнуть, у вас, насколько помню, есть, инструментарий тоже вроде ищется. Было бы неплохое продолжение того первого поста.

Можно. Фактически придется делать все тоже самое, что и с вуду - т.е видяха ток треугольники рисует

Ну, тут простота именно в запуске на реальном железе. Эти карты простые и дубовые, заводятся на любой плате с PCI. Раз у вас есть машина на 478, то вставить точно есть куда.

Да вроде 3.5 тысяч просмотров за 15 часов - это вполне себе нормальная статистика для подобных узкоспециальных тем.

Матрицы 1х4 (вектор) вполне себе умножаются на 4х4. Там же правило MxN NxK -> MxK... Размерность одной общей стороны даёт "совместимость" для умножения.

Да, спасибо, меня скорректировали на другом ресурсе уже :)

RAMDAC производства компании ICS

GENDAC он. там унутре PLL встроенный, и аж два его выхода клочат фби и память (причем не напрямую, а тоже через фби)

возможности рисовать в отдельное окно, напоминаю, нет.

технически- есть, но не реализовано в виндовом драйвере (как и возможность выводить туда рабочий стол). если очень-очень-очень-очень хочется, наверн можно соорудить в линуксе без переписывания всего драйвера. там и рабочий стол на ней работает.

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

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

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

Эээ не, так просто ридбек в какой-нибудь сурфейс там не пройдет - lfb сядет на шину при нескольких окнах. Да и что делать с разрешением? Что, если хост-приложение захочет контекст 1024х768?

Учитывая что на шине уже сидит вся геометрия и заливка текстур, если требуется.

технически максимальный размер фронтбуффера там 1024*1024. правда тогда не влезет третий буфер, а без глубины уже грустно.

если не хотим одновременно игорать и смотреть кинцо- вполне адекватно будет по нагрузке на шину, как по мне.

вот если взять voodoo2- то там даже еще веселее будет. там уже фби научился в некий аналог командбуферов из вулкана (грепни даташит по cmdfifo) и там уже точно будет упор в ожидание voodoo idle.

заливка текстур шину особо не займет- текстурной памяти очень мало. геометрия- возможно, но не уверена. вуду слишком медленно работает и там постоянно надо ждать, пока же она доделает все. в случае второй вуды там и вовсе шина может быть почти полностью свободной.

ну и pci- параллельная. какая-нибудь сетевуха/ide-контроллер/usb-хост все пожрут.

Эпоху Glide застал, но карту не имел и API не щнал. С такой концепцией оно должно было называться 2dfx.

В те годы насколько мне известно во всех десктопных видеокартах был софтварный вершинный конвейер. А вот на консолях - аппаратный, см. хотя-бы PS1.

И консоли здорово выигрывали у ПК именно по качеству графики.

А вот тут мимо. PS1 точно не выигрывала у десктопа при наличии дискретного GPU

Давайте сравнивать девайсы примерно одного периода.
PlayStation вышла в 1994.
PlayStation 2 — в 2000, это как раз эпоха становления дискретных GPU.

Ну дк 3dfx Voodoo вышла в 1996 :)

PS2 эт уже времена GeForce 2.

Странное дело, у меня воспоминания что купил 3dfx Voodoo как только завезли в Москву, мне ещё достался бракованный экземпляр, намучился - пока не додумался поменять. Но это был точно не 1996 год.

А. Понял.
Это готовый продукт Diamond Multimedia Monster 3D привезли в Москву летом 1997 года. И наверное тогда же на Кунцевской случилась первая оффлайновая встреча 3dfx.ru с пивом в парке.

Но API-то тоже не инкапсулирует это.

Можно было назвать продукт 3dfx и спрятать обработку вершин в программной части. Но нет: вот вам железо и софт для отрисовки на плоскости текстурированных треугольников

3dfx Voodoo поддерживал и d3d, а там вершинный конвейер был уже готовый.

Да, там очепятка. Та часть материала писалась глубокой ночью.

Скрины перепутал :(

STB Voodoo 3 2000 моя первая "полноценная" видеокарта для игр. До неё была I740, на которой толком нельзя было играть. До сих пор помню, как ехал в магазин через весь город, со 100 долларовой купюрой, которую обменял на вожделенную ВУДУ.

Прикол ускорителя 3dfx Voodoo заключался в следующем. Был у меня комп Compaq Pentium 120 Mhz с 32 метрами памяти. Гоняю я там во вторую кваку и эйдж оф эмпаерс, и тут втыкаю туда вуду. И просто космос, квака вторая выглядеть стала космически, даже с трудом, скрипом идёт космический Quake III, и т.п. И это поражало воображение тех лет.

Rendition Verite 2000 была у моего товарища, и она сильно проигрывала Voodoo в сравнении. Уже не помню в чем, но в общем была хоть и дешевле, но и слабее. Насчет декодирования видео - да, помнится, я пытался посмотреть на Pentium 233MMX первое кино в формате divx с болванки, стандартным объемом в 699Мб. После нескольких неудачных попыток разгона в общем-то и так самого топового пня, я продал свой старенький комп по частям и пропил эти копейки, вспоминая относительно недавнюю итоговую стоимость всех этих комплектующих в 3500$

Не все divx были одинаково полезными. Тут не объём важен, а разрешение. Скажем что-нибудь до 300-360p - вполне 233 MMX показывал (у меня был на 225MHz - особенности материнки - не было множителя 3.5, но можно было сделать 75 на 3). Ещё помню, был фильм, который слегка подтормаживал, но если выбрать в настройках декодера звука (не спрашивайте!) не 44, а 22 kHz, то воспроизведение шло без тормозов.

Ну и декодировать divx видеокарты тех лет, на сколько мне известно, не умели. Максимум - помочь с mpeg-1. С аппаратным декодированием divx я впервые встретился в 47-м iPaq'е, но это совсем другая история.

Да, мпег умел АТИ Рейдж. Он в целом позволял смотреть фильмы в dvd качестве

Я слышал рекомендации по перекодированию в низшее разрешение. Увы, общий объем жестких в моем компе был таков, что места для операции просто не было. Системный диск Conner на 210Мб, и что-то типа Seagate на 700Мб. Conner, кстати, потом прожил еще лет 5 в каком-то олд-дос компе без ошибок, после чего помер где-то в районе середины нулевых.

Был плеер для DOS, который позволял смотреть фильмы на Pentium1

Наконец-то узнал, что такое 3D ускоритель. Ну то есть и тогда интуитивно понимал, что это не совсем видеокарта. Но вот теперь все понял.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий