Друзья! Многие ли из вас застали такую легендарную видеокарту, как S3 ViRGE? Когда-то этот GPU стоял чуть ли не в каждом втором офисном компьютере: благодаря дешевизне и заявленной поддержке 3D-ускорения, эту видеокарту просто сметали с полок магазинов. Далеко не все могли себе позволить ATI Rage, Riva TNT и уж тем более 3dfx Voodoo и очень разочаровывались в свежекупленной видеокарте, когда пытались поиграть в новомодные игры тех лет. На момент написания статьи, в сети слишком мало материала о том, как работали видеокарты 90-х «под капотом», однако мне удалось найти даташит на видеочип, SDK для программирования 3D-графики специально под него и некоторую документацию. Я решил исправить это недоразумение и начать развивать отдельную рубрику о работе старых видеочипов: начиная от S3 ViRGE и заканчивая GPU PS2 и PSP. Сегодня мы с вами: вспомним о S3 ViRGE, узнаем о том, как работали видеокарты в 90-х годах, затронем 2D и 3D режим и почему они тесно связаны между собой, посмотрим на проприетарное графическое API S3 ViRGE и раскроем причину, почему же этот GPU был таким медленным!
❯ 3D графика на ПК: начало
В начале 90-х годов 3D-графика на обычных домашних компьютерах была редкостью. Профессиональные GPU применялись только на дорогущих графических станциях, которые использовались в кинематографе или различных симуляциях, а также на дорогих японских игровых автоматах. У простого обывателя не было доступа к аппаратным средствам рендеринга 3D-графики.
SGI Indigo
Однако это не значит, что 3D-графики не было вообще. Прогресс развития домашних процессоров шёл семимильными шагами и гиганты рынка — Intel, AMD и в некоторой степени Cyrix, выпускали всё новые и новые процессоры с повышенными тактовыми частотами, а ближе к середине 90-х — и с SIMD (MMX). Поскольку многие техники для отрисовки трехмерного изображения были разработаны ещё в 60-х — 70-х годах, игроделы к началу-середине 90-х во всю использовали некоторые наработанные техники из кинематографа для растеризации 3D-графики прямо на процессоре — так называемый софтварный рендеринг.
Одной из самых известных техник 90-х являлась 2.5D графика с использованием рейкастинга — когда картинка на экране выглядит как трёхмерная, однако по факту весь мир представлен в виде 2D-координат, а эффект «пола и потолка» был как бы фейковым. Принцип его работы довольно прост: от глаз игрока для каждого горизонтального пикселя (т. е. при разрешении 320x200, у нас будет 320 проходов) пускаются «лучи» и ищется пересечение с ближайшей стеной относительно угла обзор из глаз игрока. Из этого пересечения берется дистанция до этой стены (на основе дистанции и угла считается «высота» данной строчки стены) и считается какую строчку текстуры необходимо вывести в этой точке. Одними из первых игр с применением этой технологии стал Hovertank и Wolfenstein 3D, а технология применялась практически до конца 90-х. Одной из самых лучших реализаций рейкастинга — движок Duke Nukem 3D, Build Engine, написанный Кеном Сильверманом.
Однако не одним 2.5D мы были едины. Шли годы, в СНГ многие люди продолжали наслаждаться 8-битными и 16-битными играми на клонах NES и SMD. У некоторых уже появлялась PS1, которая позволяла играть в игры с довольно хорошей 3D-графикой, однако на ПК 3D-игры были доступны не всем. Но в 1996 году выходит Quake — новейший шутер от первого лица от id Software с настоящей, трушной 3D-графикой и переворачивает всю индустрию FPS с ног на голову. Посудите сами: Джон Кармак умудрился реализовать достаточно быстрый софтварный рендерер, который мог вполне сносно работать на Pentium 75Мгц в разрешении 320x240. А ведь помимо отрисовки кадра, игре нужно было просчитывать логику монстров (довольно примитивную, к слову), обрабатывать столкновения, просчитывать видимую геометрию с помощью BSP-дерева и обрабатывать клиент-серверную логику самой игры. Это была самая настоящая революция в мире 3D игр на ПК.
В 1997 году, id Software выпустили glQuake — порт Quake с софтрендера на OpenGL, плюс своеобразную прослойку для совместимости с API 3dfx Glide (на видеокартах Voodoo) и подмножества OpenGL, используемым в игре. Порт на OpenGL позволял разгрузить ЦПУ, перенеся всю отрисовку графики с процессора на 3D-ускоритель. Сам по себе, OGL как графическое API, представлял из себя лишь набор спецификаций, который мог быть реализован как в программном виде, так и в аппаратном производителем видеокарты (на примере Windows — OpenGL32.dll это программная реализация, которая при необходимости обращается к atioglxx.dll/nvoglvxx.dll — аппаратной реализации OpenGL от вендора видеочипа). Однако, OpenGL корнями уходил именно в отрисовку промышленной графики, а DirectX всё ещё находился в зачаточной форме, из-за чего многие производители разрабатывали собственное графическое API: из известных мне, могу подчеркнуть ATI CIF (C Interface), 3dfx Glide и проприетарное SDK S3 ViRGE. Некоторые вендоры поддерживали целые игровые движки — например, BRender и RenderWare.
Отдельные 3D-акселлераторы потихоньку начали завоевывать сердца геймеров и создавать новый сегмент рынка. Серьезные видеокарты от известных производителей, такие как 3dfx Voodoo, ATI Rage и Riva TNT стоили достаточно дорого и многим были не по карману. Зато существовало множество видеокарт с 3D-ускорителями от других производителей, про некоторые из них вы могли даже не слышать: отдельные дискретные видеокарты Intel (i740), видеокарты от производителя чипсетов SiS и конечно же, видеокарты от S3 с сериями ViRGE и Savage. Видеочипы от Intel и SiS делали упор на D3D 7.
Intel i740
S3 ViRGE была весьма неплохой видеокартой с точки зрения 2D-ускорения. Сейчас 2D принято считать частным случаем 3D (по факту, 2D-спрайты — это 3D-квады, состоящие из двух треугольников), однако в то время для работы с памятью видеокарты и аппаратного ускорения некоторых операций, таких как блиттинг (BitBlt) существовало отдельное графическое API — DirectDraw. С этим у ViRGE было всё хорошо — он поддерживал довольно высокое разрешение экрана (при желании, объём видеопамяти можно было нарастить и установить разрешение ещё выше) и умел ускорять часть операций как DDraw, так и GDI.
Однако, ViRGE разочаровывал многих геймеров 90х своей производительностью в 3D-графике. На коробке с бюджетной видеокартой красовались красивые надписи о 3D-графике следующего поколения, а на фотографии можно было увидеть некую игру про мехов с невиданной графикой!
По факту, ViRGE подходил для 3D-игр не особо хорошо. Конечно в те годы никто особо не плевался от FPS и при желании, игру могли пройти и в 15, и в 20 FPS. Однако производительность софтварного рендерера иногда была даже выше, чем у растеризатора ViRGE, а игры должны были быть специально адаптированы под неё (т. е. портированы для использования S3DTK). Тайтлов с адаптацией по этот GPU было немало: как минимум, Tomb Raider и MechWarrior 2 (который шел в комплекте с игрой). Польские ребята из известной многим Techland даже написали прослойку S3D -> OpenGL, позволявшей запускать Quake на ViRGE. Производительность была не ахти…
Видеокарт от S3 нашлись и у меня, причём сразу несколько — ViRGE в PCI-исполнении и Trio в AGP-исполнении! Иногда я их использую для проверки старых материнских плат, которых у меня не так уж и много — рабочих на PGA370 и ниже у меня совсем нет. Однако остаётся вопрос, как эти видеокарты работали под капотом? Давайте узнаем!
❯ «Под капотом»
Исторически сложилось так, что 3D и 2D акселераторы могли быть отдельными и формально не зависящими друг от друга устройствами. Архитектура IBM PC в зависимости от «поколения», предполагала сразу несколько типов видеоадаптеров, которые были стандартизированы под определенный тип мониторов. Один из таких адаптеров, VGA, стал стандартом на долгие годы, в то время как два других использовались в совсем ранних машинах. Их ключевое отличие было в организации видеопамяти и цветности — CGA/EGA предполагал разбитие пространства экрана на т. н. битплейны (один байт содержал информацию о нескольких пикселях и если не ошибаюсь, для сохранения адресного пространства сегменты экрана необходимо было переключать аля банки памяти) и был палитровым, в то время как VGA предполагал как палитровый режим, так и полноценный RGB и мог отразить весь фреймбуфер в линейную область адресного пространства. Кроме того, долгое время VGA использовался для обозначения разрешения дисплея: QVGA — половина VGA (320x240), VGA (640x480), широкоформатный WVGA (800x480) и т. п.
EGA-монитор
Другой особенностью была полная (насколько мне известно) обратная совместимостью друг с другом. Например, GeForce 7xx, как один из последних GPU, который поддерживал Legacy BIOS, теоретически вполне мог работать и с EGA режимами, и с CGA через соответствующие видеорежимы int 10h!
3D-режимы же никак не были стандартизированы и каждый производитель реализовывал работу с ними по разному — как уже говорилось ранее, кто-то реализовывал поддержку совсем молодого D3D и OpenGL (насколько мне известно, лучше всего с OpenGL было у NVidia. Остальные вендоры поддерживали OGL, но были свои болячки — у ATI они тянулись чуть ли не до середины-конца нулевых), а кто-то делал собственное графическое API и работал с видеочипом почти напрямую. Первые 3D GPU использовали шину PCI, которую почти сразу заменила более скоростная, но интерфейсно и софтварно почти идентичная шина AGP, а затем уже появился PCI-E, который оставался тем же PCI в софтовом плане, но был дифференциальным и последовательным, а не параллельным как интерфейсы-предшественники.
Дабы понять, как работают первые видеокарты, необходимо узнать о том, как происходит процесс отрисовки 3D-графики в общем случае. В мире программирования графики это называется конвейером и состоит он как минимум из нескольких этапов:
Установка состояний: Программа задаёт источники света на сцене, параметры Z-буфера и Stencil-буфера, какую текстуру(ы) следует наложить на рисуемую геометрию и с какой фильтрацией, какой тип аппаратного сглаживания использовать и т. п.
Ранее, каждый стейт необходимо было устанавливать отдельно, при необходимости — для каждого DrawCall'а. После подготовки состояния, программа вызывает соответствующую функцию отрисовки.
Обработка геометрии: Геометрия не поступает в растеризатор «как есть», в мировых координатах. Растеризатор оперирует вершинами в нормализованных Clip Space координатах — обычно, это [-1, -1… 1, 1], где 0.5 — центр экрана по каждой оси. Именно поэтому сначала необходимо провести этап трансформации геометрии для перевода из некой глобальной системы координат (которая может выражаться в метрах или, например, в пикселях) в Clip Space. Для этого чаще всего координаты (корректнее — трансформации) представляются в виде трех перемноженных матриц — model (мировые координаты геометрии), view (положение «глаз» в мире, или по простому камера. Умножая model на неё, мы получаем координаты объекта в пространстве камеры) и projection (матрица проекции, которая преобразовывает координаты из пространства глаз в тот самый Clip Space. Именно в этой матрице задается FOV для перспективной проекции и виртуальные размеры экрана для ортографической матрицы). После этого, координаты каждой вершины трансформируются полученной ModelViewProjection матрицей и получается финальная позиция для Clip Space. Звучит как сложный учебник матану, по факту всё очень просто. :)
Детали реализации низкоуровневого матана, в том числе перемножения матриц и построения матриц трансформаций и проекции знать желательно, но необязательно. Сейчас этим занимаются очень удобные математические библиотеки — например, glm, dxmath или d3dx.
Кроме того, ранее именно на вершинном этапе считалось освещение для уровня. В некоторых видеочипах была возможность аппаратного расчета источников света, в некоторых — только программная на ЦПУ.
На видеокартах тех лет, в том числе и S3 Virge, трансформацией вершин занимался центральный процессор, из-за чего было довольно серьёзное ограничение на количество вызовов отрисовки и число треугольников в одной модели. Видеокарты с аппаратной, но всё ещё не программируемой трансформацией вершин появились лишь к GeForce 2 — называлась эта технология T&L (Transform and Lightning) и её преимущество было в том, что у видеокарты были специализированные векторные сопроцессоры, способны быстро пересчитывать векторные операции (а у ЦПУ, в свою очередь, развивались SIMD наборы инструкций, позволяющие выполнять несколько операций над float одновременно). В некоторых случаях, был даже отдельный программируемый векторный сопроцессор как, например, в PlayStation 2, что позволяло реализовать вершинные шейдеры ещё в 2000 году! На современных видеокартах, этапом трансформации в самом простом случае управляют вершинные шейдеры. Помимо этого, есть возможность создания геометрии «на лету» с использованием тесселяции и геометрических шейдеров, а совсем недавно появились Mesh-шейдеры, которые объединили несколько подэтапов конвейера в один.
Растеризация: Сам процесс отрисовки геометрии на дисплей с данными, полученными с прошлого этапа. Именно на этом этапе треугольники (или иные геометрические примитивы) закрашиваются определенным цветом или на них накладывается текстура. В процессе растеризации есть такое понятие, как интерполятор — специальный модуль, который интерполирует несколько значений в барицентрических координатах растеризуемого треугольника, дабы текстурный юнит мог наложить определенный участок текстуры на фрагмент треугольника.
В современных видеокартах этот этап конвейера программируется пиксельными (или фрагментными) шейдерами. В старых видеочипах (исключение — вроде-бы частично программируемый GPU Nintendo 64, поправьте в комментариях, если не прав) этот процесс строго определен в каждом GPU и не программировался. Именно поэтому такой подход к рисованию графики назывался Fixed function pipeline. Были ещё комбайнеры, но они появились заметно позже — когда в видеокартах появилось уже несколько текстурных юнитов, способных смешивать несколько текстур одновременно.
Делая вывод, мы можем понять, что S3 Virge и другие видеочипы были устройствами, которые умели рисовать лишь тот уровень графики, который был заложен производителем с завода. Такой подход называется фиксированным конвейером — Fixed Function Pipeline. Сейчас разработчики видеочипов перешли с фиксированного конвейера на программируемый (шейдерный). Уже начиная с SM2.0-SM3.0, на современных видеокартах появилась возможность создавать крутое и достаточно сложное освещение и различные эффекты, которые стали неотъемлемыми в современных играх.
Кроме того, важно понимать, что в видеопамяти ранних видеочипов хранился только фреймбуфер, а немного позже — текстуры, именно поэтому VRAM в старой документации называют «текстурной памятью». Вообще, некоторые нюансы первых версий OpenGL тянуться именно из особенностей работы первых видеокарт. Вспомнить хотя бы первые функции для старта отрисовки геометрии и загрузке вершин на видеокарту — это были связки glBegin/glVertex/glEnd:
glBegin(GL_TRIANGLES);
glVertex3f(0, 0, 0);
glVertex3f(1, 0, 0);
glVertex3f(1, 1, 0);
glEnd();
// Для одного треугольника
glBegin(GL_TRIANGLES);
for(int i = 0; i < numTriangles; i++)
{
glVertex
glVertex
glVertex
}
glEnd();
// Для меша
Даже сам glBegin/glVertex/glEnd появились не спроста. Геометрию на видеокарте начали хранить только в начале нулевых (и то не везде — привет встройкам Intel и S3).
Но перейдем к особенностям работы S3 ViRGE. Даташит лежит в свободном доступе, благодаря чему мы можем более подробно ознакомиться с характеристиками этого видеочипа и о том, как он работал под капотом.
В основе у нас лежит 64-х битное ядро, которое могло обрабатывать как 2D-графику с аппаратным ускорением, так и 3D-графику. Ядро работало на частоте 135МГц с встроенным RAMDAC (модуль, отвечающий за вывод картинки на аналоговые разъемы — VGA и DVI, однако выводом на TV-тюльпаны занимался отдельный чип TV-энкодер). Современные видеочипы перешагнули планку 1ГГц, однако сравнение исключительно по частоте некорректны — архитектуры очень сильно отличаются. Помимо этого, видеочип умел декодировать видео с интерполяцией и аппаратно «помогать» процессору с скейлингом видео (например, когда вы разворачиваете плеер на весь экран) и даже рендерить видео в текстуру (что позволяло реализовать, например, телевизоры в играх)!
3D движок поддерживал следующие возможности:
- Затенение по Гуро
- Маппинг текстур с перспективной коррекцией и билинейной/трилинейной фильтрацией, а также мипмаппингом.
- Depth-буфер, сэмплинг тумана и поддержка альфа-блендинга (прозрачной геометрии).
Чип поддерживал две шины — PCI и менее известную VLB (Vesa Local Bus, очень условно ISA)
Помимо этого, у чипа не было встроенной памяти — к нему необходимо было подключать внешнюю DRAM-память 2/4/8Мб. От её количества зависело максимально-поддерживаемое разрешение экрана. Текстуры при необходимости хранились в ОЗУ.
Видеопамять когда-то расширялась за счёт дополнительных модулей! Эту видеокарту можно расширить аж до 8МБ!
Поддерживаемые разрешения экрана:
Для DirectDraw и ускорения 2D-графики в Windows была реализация аппаратного BitBLT — копирования пикселей в точку на экране. Она поддерживала все режимы, которые были в реализации этой функции в Windows — от монохромных, до 24-х битных. Без альфа-блендинга, само собой. Но тут нет ничего необычного — многие видеочипы тех лет предоставляли простое 2D-ускорение.
Интереснее реализация отрисовки 3D-графики. Каждый треугольник описывался 3-мя регистрами на каждый параметр — координата X, Y для каждой точки, текстурные координаты и т. п. Всего для отрисовки одного треугольника могло потребоваться до 43 регистров! Весьма немало. И именно из-за этого в свое время появились glBegin/glVertex/glEnd!
Параметры сэмплера (текстурного юнита) задавались регистрами, которые определяли формат пикселя текстуры и сам тип фильтрации. Как я уже говорил выше — поддерживалась билинейная и трилинейная фильтрация и проприетарный формат сжатия текстур, который стал стандартом: S3TC или DXT.
Для программирования S3 ViRGE было разработано собственное C SDK — S3DTK, которое состояло из сэмплов и заголовочных файлов для общения с GAPI видеочипа (или видеочипом напрямую, если игра предназначена для DOS). При этом вполне не исключено, что GAPI для Windows работало с видеокартой напрямую, предоставляя PCI-драйвер лишь как прослойку для обмена данными. Поскольку это не D3D, для игр с поддержкой видеоускорения требовалось качать специфические версии. Некоторые игры (как Quake 2) поддерживали мультирендер, но не поддерживали S3 ViRGE.
Весь графический API помещался в один заголовочный файл. API было не простым, а очень простым и понятным — думаю, даже разработчикам-новичкам было легко начать программировать под ViRGE!
Формат вершин был фиксированным и зависел от того, как вы рисовали геометрию на экране:
GAPI поддерживало различные типы треугольных списков, а также точки (POINT для спрайтов и систем частиц) и линии:
#define S3DTK_TRILIST 0
#define S3DTK_TRISTRIP 1
#define S3DTK_TRIFAN 2
#define S3DTK_LINE 3
#define S3DTK_POINT 4
Фактическое API для рисования умещалось в 9 функций и ещё несколько функций для инициализации библиотеки, преобразования адресного пространства и работы с Windows.
Для работы с состоянием видеочипа служили две функции — SetState и GetState. Именно они отвечали за то, как рисовалась геометрия на экране:
А для фактического рисования примитивов служили функции TriangleSet и TriangleSetEx! Да, это альтернатива DrawPrimitives/DrawArrays в современных GAPI. Никаких индексов тогда ещё не использовалось! Функции принимали указатель на массив вершин и их количество, а также на тип рисуемой геометрии (треугольники, линии и т. п.). В Ex версии, можно было «пачкой» установить стейты параллельно с рисованием — такой подход используется в DX10+ API — стейты тоже задаются исключительно «пачками», только теперь они поделены на подгруппы.
Для 2D-рисования были свои, отдельные функции — для блиттинга. Поддерживался ColorKey/хромакей — прозрачным считался определенный цвет, переданный как параметр функции
Основной причиной медлительности S3 ViRGE был низкий филлрейт. При отрисовке примитивов, которые занимают большое пространство экрана, FPS резко просаживался даже с примитивными кубиками и пирамидками. Однако, если не насаживаться на филлрейт и делать что-то типа 2D-поля и 3D-танчиков, то производительность оставалась вполне приемлимой.
❯ Заключение
История S3 закончилась поглощением компанией VIA. После этого, компания разрабатывала интегрированную графику специально для чипсетов VIA, а материнские платы на этих чипах пользовались довольно высоким спросом. Поэтому нередко взяв старый бюджетный ноутбук, года эдак 2005, можно найти в нём VIA Chrome — наследника легендарного S3 Savage! Проблемы у такого подхода тоже были — из-за наследия из конца 90х, ранние Chrome по сути поддерживали только D3D 7.0 и OpenGL ~1.4. Несколько позже, в 2009 году, компания выпустила S3 Chrome 540 GTX — одну из последних видеокарт на собственной архитектуре. Этот видеочип был достаточно современным и поддерживал DX10.1, OpenGL 3.0. Интересно, реально ли найти эту видеокарту сейчас?
По итогу мы можем сделать вывод, что первые 3D-ускорители были относительно простыми устройствами «под капотом» и их можно было программировать чуть ли не «напрямую». Многие старые видеочипы получили свои локальные прозвища и стали легендарными, однако их архитектура и принцип работы оставались тайной. По крайней мере, в рунете точно.
S3 Trio
Насколько я понимаю, неравнодушные инженеры после закрытия 3dfx и слияния S3 с VIA решили «слить» даташиты в сеть, за что им большое спасибо! Ведь теперь мы имеем возможность посмотреть на принцип работы таких устройств сами!
Возможно, захочется почитать и это:
- ➤ Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают?
- ➤ Как заставить работать пейджер
- ➤ Hello World на Tang Primer 20K под Linux
- ➤ Во что поиграть? — Heroes of Might and Magic IV
- ➤ История создания Metal Gear Solid
Комментарии (131)
SergeyMax
08.11.2023 08:04+13Многие ли из вас застали такую легендарную видеокарту, как S3 ViRGE
Сразу вопрос: а застали ли вы? Я вот что-то не помню, чтобы её кто-то считал 3D-ускорителем, и уж тем более очень разочаровывался в свежекупленной видеокарте.
bodyawm Автор
08.11.2023 08:04Не застал, однако несколько имею в своей коллекции.
Изображения коробки, где вендор всеми силами рассказывает о крутом 3D-движке - мало чтоле?)
Pyhesty
08.11.2023 08:04+6точно могу сказать, что у нас S3 за ускоритель не считали, все понимали, что ускоритель - это 3dfx из двух плат, но! S3 считалась бюджетной видеокартой, дешевле и доступнее которых не было.
В мое время никто не задавался вопросом бенчмарка видеокарты, процессора - да, но видеокарты нет. Видеокарта на тот момент считалось, что должна поддерживать VESA режим (а pci уже все поддерживали) и дальше можно было д() () мать или в героев). Да сейчас понимаешь, что кроме видеопамяти, от видеокарты нужна производительность) но тогда все тормоза списывались на: мало ОЗУ и частоту проца)
bodyawm Автор
08.11.2023 08:04А вот я видел такие обозначения, как 3d deccelerator ;) т.е 3D-замедлитель.
vitagor
08.11.2023 08:04+2Если мне не изменяет память, буджетнее и доступнее в то время были PCI-ные видеокарты на cirrus logic. У самого было несколько разных. И кажется, в какой-то из них тоже был "намек" на 3Dшность. Но он не заявлялся для игр, а для CAD-овских приложений.
zuek
08.11.2023 08:04А как же Matrox Millenium? Из примерно тех же годов (к стати, подозрительно похож на фото Rage, что повыше в ветке)... ;) Наши конструктора все требовали "по матрасу на воркстейшн"...
vitagor
08.11.2023 08:04+1То уже было в конце 90-х, приставка Millenium на это намекает. И уж "бюджетным" решением оно никогда не было. Эти карты славились замечательным RAMDAC-ом, который позволял на аналоговых мониторах, при высоких разрешениях, показывать просто идеальное качество картинки. Немудрено, что конструктора ее требовали.
jpegqs
08.11.2023 08:04+9Да. Это сейчас во многих процессорах есть встроенное видеоядро, и видеовыходы на материнке. А тогда какая-то видеокарта была нужна всем, просто чтобы подключить монитор. Вот и покупали самое дешевое. В те времена не было равенства между видеокартой и 3D акселератором.
bodyawm Автор
08.11.2023 08:04Нюанс в том, что S3 как раз таки предлагали дешманское устройство с хоть каким-то ускорением 3D-графики. То, что акселлератор там был медленным - вопрос другой.
jpegqs
08.11.2023 08:04+11Как замечено выше - никто не считал его 3D ускорителем. У меня была эта видеокарта в первом компьютере и я даже не знал что там есть какое-то 3D, всегда играл на программном рендеринге.
VBKesha
08.11.2023 08:04+2Вот я её вроде бы и застал, но правда моя жизнь стартанула с TNT2, а эти S3 видел только в офисных компах. И именовали её тогда с3 криво 3д. Но при этом ходили слухи что есть Savage и под ним UT99(тогда правда ещё 99 никто не говорил) идёт на нем прям в божественном виде. Как потом(сильно потом) оказалось для этого нужны ещё текстуры со второго диска с игрой, который найти было наверно сложней чем сам Savage. И вот за S3TC наверно таки можно вспомнить S3 добым словом.
bodyawm Автор
08.11.2023 08:04DXT стал стандартом на многие годы :)
Правда, на мобилках его потихоньку ETC вытесняет, как и иные проприетарные форматы (типа PVRTC)
zuek
08.11.2023 08:04Вы путаете S3 Trio и S3 ViRGE - в вирджах, сколько помню, было две модификации - DX (PCI) и GX (AGP), а вот у трио было великое множество модификаций, и если изначальные 3D и V+ были добротными рабочими лошадками, то все остальные славились разной степенью глюкавости (что-то лечилось высверливанием "лишних" дорожек, что-то напайкой конденсаторов, что-то не лечилось совсем)
VBKesha
08.11.2023 08:04AGP живьем я никогда и не видел, а PCI валяются до сих пор для старта всяких старых материнок без наботрного видео.
Kilmez
08.11.2023 08:04+1"что есть Savage" - вспомнил что у меня есть полузаброшенный ящик и там нашлось вот такая видеокарта на 16 Мб.
VBKesha
08.11.2023 08:04Это уже 4тый, судя по вики первый звался Savage3D вроде как на нем повяились впервые S3TC текстуры. А в 4 версии ещё пояивлось свое проприетарное API Metal.
levkib
08.11.2023 08:04+1Ну я застал.(я с PC вожусть с 1989г) S3 Virge при появлении рекламировался и на нашем рынке как видеокарта с 3D. Потом уже это упоминание 3D ушло из прайслистов, когда продавцам видимо начали рассерженные покупатели предъявлять претензии.
strvv
08.11.2023 08:04+1по большому счёту, до ТНТ была первенцем рива128, но у неё было много проблем, типа virge на максималках, а у тнт уже было ПО лучше написано.
aik
08.11.2023 08:04+1рива128 страдала из-за драйверов и совместимости, но по скорости и возможностям была достаточно близка к вуду. Но в народ нвидия всё же пошла после появления тнт2 - со всеми вантами и м64, которых китайцы за копейки продавали.
JordanCpp
08.11.2023 08:04Оно таки реально умело в 3d. Просто делала этот не спеша, так сказать на чиле:)
aik
08.11.2023 08:04Видели слово 3Д в названии и пытались хоть что-то из этого выжать. Потом разочаровывались.
Но зато вирдж был недорогой и на него можно было поставить относительно много памяти.
dlinyj
08.11.2023 08:04+15Я помню видеокарты этой серии. Никто их игровыми в здравом уме не считал, но они прекрасно подходили для офисной работы. После того, как видеокарты ISA давали 256 цветов, 24-х битный цвет этой видеокарты был просто выходом в открытый космос. Реально, был космический прорыв.
А по поводу игр, мы просто покупали Voodoo 3dfx, цепляли последовательно с этой картой и играли. Я помню, как я на первом пеньке гонял на вуде во вторую кваку и поражался невероятной графике.
bodyawm Автор
08.11.2023 08:04Вуду ведь сильно дороже S3 стоила в момент актуальности
dlinyj
08.11.2023 08:04+3Вопрос не цены. Хочешь играть, покупай ускоритель. Или работай и не жужи. На самом деле, в те времена было много игр, которые не требовали 3D-графики.
Miceh
08.11.2023 08:04+2Знающий товарищ вовремя посоветовал взять Riva128, и я не пожалел
strvv
08.11.2023 08:04+1да, но первое время драйвера были ещё те, точнее было отсутствие в современном понимании драйверов и без различных экстендеров (расширений) она была вирже на максималках.
позже, на тнт и тнт2 уже был полноценный комплект драйверов, с отдельными dll для винды чтобы работал ogl и dx6-dx7.
ImagineTables
08.11.2023 08:04+2они прекрасно подходили для офисной работы
В богатых офисах, разве что. Где победнее, там стояли S3 Trio 64V+. У «среднего класса» — с SOJ'ами ))
Ограничивающий фактор был монитор. Что толку от возможности выдавать 24-х битный цвет на более высоких разрешениях, если монитор всё равно еле-еле поддерживает 1024x768?
Pinkerton42
08.11.2023 08:04+1Ух! S3 Trio 64V+ самая уродская видюха была. Даже родные драйвера работали через раз.
strvv
08.11.2023 08:04а тогда все были ещё те подарки. ты матрас вспомни или Rage от ати...
Pyhesty
08.11.2023 08:04матрасы могли два отдельных монитора!)))
strvv
08.11.2023 08:04и как много разнообразного ПО это поддерживало? вся проблема в том что сейчас это проблема ОС, как и должно быть - а то была проблема пользователя и ПО которое на этом работало.
aik
08.11.2023 08:04+2Могли и в четыре. Но в 98 винде появилась встроенная поддержка многомониторности и тогда уже можно было просто две s3 воткнуть. Я пять пробовал, потом на меня упал монитор и я перестал дурью маяться. Но с двумя мониторами я живу ещё со времён 98.
q2c
08.11.2023 08:04О дааа! Они хапали одни и те же ресурсы с адаптековскими скази-контроллерами и радостно вылетали в синий экран, сообщая что "ваша программа выполнила невыполнимое и допустила недопустимое". Приходилось вручную их разводить по разным IRQ и DMA, несмотря на PnP (который на самом деле Plug and Pray)
aik
08.11.2023 08:04P&P скорее про программную настройку был, чем про полноценное "воткнул и работай". Не приходилось лазить внутрь системника и джамперы перетыкать.
Хотя, конечно, временами переставить джампер было гораздо проще, чем софтом какую-то настройку поменять.
aik
08.11.2023 08:0464v+ - это была стабильная рабочая лошадка для офисного компьютера. Кстати, она ещё и с досовскими играми отлично работала.
Конечно, если хотелось странного (в плане напихать много железок) - то тут уже страдания начинались от любого железа. Помнится, Козловский в Компьютерре половину своих огородов боролся за прерывания.
Viacheslav01
08.11.2023 08:04Видеокарты ISA прекрасно работали в SVGA режимах )
dlinyj
08.11.2023 08:04Прекрасно, но больше 256 цветов с них выжать было нельзя с каким-либо вменяемым разрешением.
Viacheslav01
08.11.2023 08:04+3800 на 600 вполне вменяемо, 1 МБ на борту, хороший рамдак и как минимум 16 бит на пиксель обеспечено.
dlinyj
08.11.2023 08:04+1Это невозможно, вид. Частота шины ISA была 12 МГц максимум. Даже не поленился, нашёл документацию...Внезапно вы правы. Trident TVGA9000i-3
Открыл даташит на проц.
Но, тут вопрос ещё частоты обновления картинки. Но век живи.
Javian
08.11.2023 08:04+1Вообще это очень хорошая карта - у нее были джамперы 8/16 ISA и её можно было вставить 8 бит слот в ХТ.
dlinyj
08.11.2023 08:04Да, я бы с удовольствием такую бы заимел в хозяйстве.
da-nie
08.11.2023 08:04+2С ней можно сделать такое:
dlinyj
08.11.2023 08:04С любой ISA, не только с этой. Это вы автор этой потрясающей статьи . Я помню её, это реально очень круто!!!
da-nie
08.11.2023 08:04Нет, не с любой. :) Только с той, для которой известен процесс инициализации. Для этой он известен. Так-то он прописал в BIOS карты и его можно дизассемблировать, но игры с IDA показали, что выцарапать его оттуда не очень просто. Но возможно.
dlinyj
08.11.2023 08:04+1Разве не у всех ISA видеокарт BIOS мапился на память, и его можно было прочитать. От туда достать правила инициализации регистров и т.п.? Ведь, просто напросто видеокарта не стартанёт без этого BIOS.
da-nie
08.11.2023 08:04+1Вот в пункте "От туда достать правила инициализации регистров и т.п.?" и есть основная проблема. Там нифига не линейная портянка. Там блоки с ветвлениями. И какое нужно будет, зависит от режимов. Сама-то видеокарта имеет множество режимов и большую кучу настроек. Поэтому выяснение настроек карты превращается в творческий процесс.
dlinyj
08.11.2023 08:04Реверс он такой, это путь с кучей приключений, бесконечного времязатратности с неясным исходом. Но, факт остаётся фактом, что достать тоже можно.
Я ничуть не умаляю крутости вашего проекта, он потрясный, и, как видите, я его помню.
da-nie
08.11.2023 08:04Ой, да бросьте. ;) Проект совершенно примитивный. Я, если честно, абсолютно в недоумении, чем он так всем понравился. Он же совсем не сложный.
axe_chita
08.11.2023 08:04Cirrus Logic на ISA таки умели HiColor и TrueColor. Главное количество набортной памяти и подходящий RAMDAC. В крайнем случае требовался загруженный UniVBE.
Ссылка на даташит
aik
08.11.2023 08:04Выжать-то можно было - вроде и двухмеговые были.
Но вот скорость работы и качество картинки...
quartz64
08.11.2023 08:04+4S3 ViRGE/DX была в моем первом ПК: 1998 год, PII-233 c 32 МБ RAM. Вполне возможно, что на поздних драйверах 3D худо-бедно работало, но мне запомнилось, что 3D-ускорение можно было увидеть только в виде цветного вращающегося кубика в настройках DirectX. В играх всё было либо крайне медленно, на уровне 3-5 FPS, либо с артефактами (белые текстуры в Carmageddon 2).
Через год мне удалось наскрести $35 на Intel 740 — небо и земля! Наконец-то смог увидеть гладкий и плавный Quake 2.zuek
08.11.2023 08:04Ну, не знаю, что у Вас был за ПК в 98-м году (я тогда с первой годовой премии купил себе PII-400 + Riva TNT), но во времена актуальности DX (не GX), бета первого Халф-лайфа вполне сносно игралась на моём P MMX 233 + Virge DX (да, релизную версию уже гонял под Ривой)... а лет через пять я пересел на "интегряшки", где до сих пор и остался =)
quartz64
08.11.2023 08:04Видимо, к тому времени появился нормальный драйвер, но я по неопытности (старшеклассник, пересевший с ZX Spectrum) разобраться с этим не сумел и наблюдал такое: https://www.vogons.org/viewtopic.php?t=70146
Вот i740 просто работал, во всяком случае в 1999 году.
temnikov_vasiliy
08.11.2023 08:04+2на S3VirgeDX PCI 2Mb запускал Quake3demo через какой-то программный транслятор OpenGL. было 1-2fps , но тогда это было круто ! )
maximaleshin
08.11.2023 08:04+1На первом самосборном компе была такая. Примерно 1996-1997 годы. Брал специально из-за возможности расширения памяти. Ну да, казался важным сей момент :) И расширил, и заработало благодаря покупке нескольких микросхем на местном радиорынке. NFS-2 вроде поинтереснее стала :)
Viacheslav01
08.11.2023 08:04Да она в NFS добавляла блики, по тем временам картинка казалась просто космической )
Javian
08.11.2023 08:04+1На PCI почти не было 3D ускорителей. Хочешь играть - нужна карта с AGP.
S3 Trio 3D/2X с AGP и 8Мб видеопамяти уже была бюджетной игровой видеокартой. Можно было в Unreal Tournament комфортно бегать. Тем более что у её владельца не было альтернативы - отсутствие OpenGL не позволяло запускать QIII.
Viacheslav01
08.11.2023 08:04Ну AGP было не всегда и было время когда, все работало в PCI.
bodyawm Автор
08.11.2023 08:04А еще была VLB
Viacheslav01
08.11.2023 08:04+1VLB была слишком редкой, очень дорого и потенциально опасной.
Видео под VLB в жизни я видел только одни раз, а вот контроллеров дисков много.zuek
08.11.2023 08:04+294-й год - почти у всех были VLB - к этому моменту PCI только-только начал появляться в масс-маркете, а ISA уже вовсю стала узким местом. Вот EISA - это да, раритетная вещь... может, Вы EISA и VESA спутали?
Viacheslav01
08.11.2023 08:04+3"Когда-то этот GPU стоял чуть ли не в каждом втором офисном компьютере: благодаря дешевизне"
Это не совсем так, в то время когда карта была актуальна, она стоила сильно дороже чем S3 Trio 64, которая да была практически базовой PCI картой для офисных ПК.
В то же время Virge был дороже и сильно желаннее, т.к. позволял как минимум смотреть видео в полный экран из за наличия апаратного масштабирования.
С если в него втыкался полный комплект памяти, то позволял добавлять немного красоты в некоторые игры.
bodyawm Автор
08.11.2023 08:04Фишку с ускорением видео просекли и в ATI, релизнув Rage с поддержкой декодирования DVD-качества видео (т.е 480p) в фуллскрине. Даже в промо об этом везде говорили))
Viacheslav01
08.11.2023 08:04+1Ну API Rage был вообще не достижимой мечтой )))
Ну а так да, он первый на котором я видел полноэкранное видео без тормозов )bodyawm Автор
08.11.2023 08:04+1У меня есть SDK для Rage. Специально сохранил для будущей статьи.
Но Rage будем щупать уже на ноутбуке скорее всего - когда-то ATI додумались сделать дискретку в виде Rage Mobility, сделав что-то типа первого игрового ноутбука :)
da-nie
08.11.2023 08:04+2Одной из самых лучших реализаций рейкастинга — движок Duke Nukem 3D, Build Engine, написанный Кеном Сильверманом.
Так. Уже во второй статье почему-то приписывают Duke Nukem 3D эту самую трассировку лучей. Значит, где-то такое кто-то написал, и теперь это тиражируют. Интересно, где это так написано изначально?
bodyawm Автор
08.11.2023 08:04Всё, кажись я понял, что вопрос именно к Build Engine :)
Вообще, это было предположение именно относительно 2.5D FPS-движков в целом. Никто конкретно о рейкастинге в билде не писал, просто с применением этой техники вышло довольно много игр. Видимо я чуток облажался :( Детали реализации самого билда не смотрел, но ковырял следующий движок Сильвермана - который воксельный, занимательная штукенция.
da-nie
08.11.2023 08:04В Build - порталы.
bodyawm Автор
08.11.2023 08:04Так а сам метод растеризации какой? Как стенки то рисовались?)
da-nie
08.11.2023 08:04+1Вот так примерно там стенки рисовались.
Портальный движок работает несколько иначе. Прежде всего, он не требует
разбиения пространства. Мы просто должны узнать, в каком из секторов
находится игрок, и имея список порталов сектора, последовательно
переходить из сектора в сектор через эти порталы. Чтобы не крутить по
кругу, стоит блокировать порталы, через которые мы уже проходили.
Алгоритм такого хождения тоже рекурсивный и тоже в результате мы
получаем упорядочивание секторов и сегментов от игрока в бесконечность.
Порталы могут быть геометрические (с помощью математики мы отрезаем
куски карты, видимые через портал (со всеми ошибками округления в
подарок)) и экранные (здесь мы корректируем левую и правую границу зоны вывода картинки на экран). Экранный портал для софтверного движка более предпочтителен, так как очень просто реализуем и работает очень быстро.
Единственная непонятная ситуация возможна, когда игрок стоит прямо на
портале. В этом случае при отрисовке этого портала границы портала не
изменяем, иначе одна из половинок окажется неотрисованной.Метод порталов называется.
vvz732
08.11.2023 08:04Вроде на фото в статье - 2 МБ версия, с возможностью расширения до 4 МБ. Разве были 8 МБ версии S3 Virge?
napolskih
08.11.2023 08:04У меня была такая. Сначала у меня была с3 64в+ и это была просто офисная никакая карточка, потом я накопил и купил с3 вирдж, быстро понял что это фигня. я страдал, не мог даже в нормальном разрешении играть в квейк 1 и халф, только софтваре, 320 ) у меня к тому же был К5-90 с 8 мб рам без сдрома ) а у друга П3 и рива ТНТ с сд ) еще я носил игры на дискетах (десятки дискет) и страдал )
MaFrance351
08.11.2023 08:04+1Понравилось. Всегда было интересно узнать, как работали с 3D-графикой в те годы, но руки разобраться не доходили. Но да, S3 игровыми почти никто тогда не считал. У меня есть несколько таких карт, знаю, каковы они.
Было бы неплохо теперь написать какую-нибудь игру или демку для этого девайса...
PowerMetall
08.11.2023 08:04+3Эххх...
До сих пор лежат дома GrForce 2 MX 200 и TNT2 M64 Vanta )))
Выбросить - рука не поднимается
Javian
08.11.2023 08:04Я летом GeForce 2 MX вытащил из ящика и использую - понадобилось старый софт запускать. Она в те времена была прошита русским шрифтом в знакогенераторе - русский шрифт есть без всяких keyrus.
gnomeby
08.11.2023 08:04+1(т. е. при разрешении 240х320, у нас будет 240 проходов)
Какое-то странное разрешение.
Джон Кармак умудрился реализовать достаточно быстрый софтварный
рендерер, который мог вполне сносно работать на Pentium 75Мгц в
разрешении 320x240Минимальное и дефолтное разрешение было 320x200 и 256 цветов.
lumag
08.11.2023 08:04+1T&L (или точнее TCL), если мне не изменяет пямять, появился в GeForce256, еще до GeForce 2.
bodyawm Автор
08.11.2023 08:04Спасибо за поправку, да, в GF256 появился T&L. T&L так и называется - Transform and Lightning, C там нет.
У GF2 появилась полноценная поддержка комбайнеров - эдакий предшественник пиксельных шейдеров тех лет. Суть заключалась в том, что программа расставляла стейты для разных текстурных юнитов, что им делать и какие операции применять (например, первый комбайнер должен смешать текстуру и освещение, второй комбайнер наложить на результат предыдущих вычислений и тем самым смешать).
А вот у GF3 появилась поддержка самых-самых первых шейдеров! :)
lumag
08.11.2023 08:04+1C -- clipping. Иногда называют так, иногда так.
Register Combiners были и на GF256, но с хардварными багами. А до этого было NV_texture_env_combine4, настройка параметров блендинга текстур. Вообще любопытно наблюдать было за развитием.
Zuy
08.11.2023 08:04+1Мой первый PC был с Riva128. Я тогда даже не знал что такое это 3d и как его увидеть. Но потом случайно запустил Quake в OpenGL и как понял :) Правда почему-то все очень темно было и приходилось гамму выкручивать.
zuek
08.11.2023 08:04+2VGA предполагал как палитровый режим, так и полноценный RGB
Позвольте возразить - в VGA не было режима "RGB" - доступный максимум - 320*240*256, правда, эти 256 цветов действительно кодировались полноценной RGB-палитрой (в отличии от тех 16 цветов, доступных в более высоких разрешениях). Ну и попутно, про "программирование" 16-цветных графических режимов - это на отдельную статью (какие порты отвечают за вывод в какой слой, как переключаются отображаемые экраны/фреймбуферы, как управляется синхронизация с лучом кинескопа и т.п.). По факту, мало кто из здесь присутствующих застал "настоящий VGA" - большинство "старичков" (типа меня) начинали с SVGA, типа Trident 9000 или близких по характеристикам "церрозов" (позднее печально прославившихся VESA-версиями на безсвинцовых припоях), но так сложилось, что я и на Hercules и на CGA и на EGA успел поразвлечься всласть, в том числе и попрограммировать графику "напрямую", минуя любые библиотеки - только прямая запись в RAM и отправка команд в порты - в школьные годы любил программирование, от бейсика до ассемблеров...
bodyawm Автор
08.11.2023 08:04-1Я в VGA и SVGA включил, поскольку с точки зрения биоса, они управляются оба через int 10h :)
Stealch
08.11.2023 08:04Прокушал всю линейку от S3 в свое время. От Trio 64v+ до Virge DX 3D (дай бог памяти, могу ошибаться). Первые опыты по разгону и первый 3d ускоритель 3DFX, подключаемый помимо шины PCI еще и аналоговым D-Sub хвостиком =)) Классное было время. Хотя... ничего принципиально не изменилось. В те времена все геймеры спали и видели во сне Matrox Millenium - видюху со встроенным 3D ускорителем, не знающую себе равных. Как сейчас 4090, но еще и не найти нигде в продаже. Счастливых обладателей оной можно было пересчитать по пальцам одной руки. Я заимел ее значительно позже, когда она была уже неприменима к современным системам за ненадобностью - появление порта AGP и выход Riva TNT поставил крест на Matrox. Теперь храню сей музейный экспонат как память.
Zara6502
08.11.2023 08:04Подскажите, а какая модель Matrox вами считается на определенный момент как "мечта"? Просто из того с чем мне доводилось работать Matrox это в первую очередь - Autocad с хорошим ускорением рисования линий и соответствующими драйверами для DOS и двухголовый чип для вывода на два монитора. Из 3D там разве что Q2 можно было побегать, но там +- у всех всё было одинаково. Для меня знаковой стала игра SiN, я как раз покупал себе карту с 3D и мне "подсунули" i740, которую я через час вернул и взял Riva TNT (я не понимал что это, для меня что рива что i740 всё было одинаковым, но результат на экране разительно отличался).
vorphalack
08.11.2023 08:04да, на фоне зеленых и красных матрасы были прямо таки 3д-тормозителями, на G450 кваки с халвой были примерно потолком того, во что можно было играть без тормозов. но качество картинки в работе... плюс там можно было LC цепочки на выходе вырезать, чтоб они тебе сигнал не портили и получалось вообще бомба.
aik
08.11.2023 08:04все геймеры спали и видели во сне Matrox Millenium - видюху со встроенным 3D ускорителем, не знающую себе равных
Матрокс был мифическим мифом во времена 2Д-графики, но вот когда пошло 3Д, про них уже никто не мечтал. У них была попытка сделать ускоритель, m3d, но из неё ничего толкового не вышло - совместимость прихрамывала, игры делали под глайд. Так что даже если бы у вас и был millenium, то пришлось бы всё равно ставить вуду к нему в пару (да и досовские игры не особо любили матроксы).
Потом пошла линейка Gxxx, у которых 3Д уже было приемлемое, но оно уступало по цене-производительности массовым видюшкам, потому всерьёз никем не рассматривалось. Ну разве что когда G200 вышла, она ещё хоть как-то себя проявляла. А всякие там G400-450-500 уже плелись далеко в хвосте прогресса.
Zara6502
08.11.2023 08:04+1Когда-то этот GPU стоял чуть ли не в каждом втором офисном компьютере
Не могу сказать за все офисы планеты, но в нашем городе самая ходовая в/к была S3 Trio в разных модификациях. Virge была дороже, а для офиса не давала ничего нового (800х600х24=1440000 байт) кроме редких конфигураций уже в 1024х768, где 4 Мб как бы и требуются, но вот беда, никто особо не заморачивался с 24 битным цветом, так что 1024х768х16=1572864 байт). И к моменту когда S3 Trio почти пропал в продаже и Virge стали покупать как безальтернативщину - уже было в продаже больше других брендов.
За последние 25 лет я разобрал немало старых конфигураций и Virge там сильно не на первом месте. В моем бы списке было примерно так: S3 Trio, ATI Rage, Matrox, S3 Virge.
aik
08.11.2023 08:04Разные вариации S3 Trio, конечно, на первом месте, но вирдж всё же был достаточно популярен. Может быть где-то на уровне атишек и уж точно популярнее матрокса.
axe_chita
08.11.2023 08:04+1"Размер имеет значение!"
S3 Virge/DX катастрофически не хватало памяти в базовой (2Мб) конфигурации для 3D, фактически максимальным разрешением с 3D ускорением было 400х300. Но в полной конфигурации (4Мб)? он начинал шевелится, по тем временам на уровне "терпимо" поскольку народ еще не подозревал о "кинематографичных" 25 кадрах в секунду.Конфигурация машины из видео
Jedi Knight: Dark Forces II - S3 Virge DX 2 Mb vs 4 Mb.
Система 486:
AMD Am5x86-P75 133@160Mhz
Spring Circle P2C (SiS 496/497)
L1-WB
L2-WT 256Kb
RAM 64Mb EDO.
VIA VT6421A + SATA + IDE PCI Controller Card
Samsung 120GB
ISA Sound Creative AWE64
PCI S3 Virge DX 4Mb 45@65MhzКстати, раз пошла такая пьянка;) , а если Voodoo урезать память до двух мегабайт, то насколько упадет его производительность? :)
select26
08.11.2023 08:04+2Потрясающий обзор! Спасибо!
VGA мог отразить весь фреймбуфер в линейную область адресного пространства.
Насколько я помню - не мог. Оригинальные ISA VGA и клоны адресовали свою память через окно 64 или 128 КБ в верху первого мегабайта.
У меня была UMC VGA с 512Кб. Она работала именно так, в принципе не могла отобразить всю видеопамять на адресное пространство. Куда она могла на ISA отобразить?
Это стало возможным только на PCI.Ну и "свое API" режет глаз. Поправьте пожалуйста.
bodyawm Автор
Друзья! Я запилил TG-канал, где буду потихоньку делится с вами бэкстейджем и инсайдами о новом материале. Если интересно, как происходит подготовка материалом "за кадром" - добро пожаловать! :)
https://t.me/monobogdann
bodyawm Автор
Ребят, ну чего вы минусите( Это ж не канал с постоянным спамом и мусором, а просто местечко "для своих" с постами один-два раза в день=)
bodyawm Автор
Чуть позже 3dfx Voodoo попробую раздобыть и написать материал о ней.
Скорее всего, про "вуду" статья будет еще подробнее - есть мысль запилить маленькую игрушку под неё и на деле показать, на что она действительно способна =)
MiyuHogosha
У меня есть AGPшная. но рабочая ли - хз.
bodyawm Автор
Есть ли фото? Можно в ЛС
Kilmez
А про видеокарту которая самая правая сможете что нибудь рассказать?
bodyawm Автор
ATI Rage, что-то из поздних, год 1998-1999, судя по полноценному SO-DIMM (или SIMM?) слоту для доп. памяти. Плюс есть что-то типа SLI
SADKO
Это не видеокарта, а специальный 3д акселератор, похож на вуду2, одним разъёмом он подключался к видеокарте, другим к монитору. Фирма которая их делала, сначала зашла на рынок аркадных автоматов, и видимо оттуда такая тема...
bodyawm Автор
Это ATI Rage...
Javian
Такой же слот был на Matrox MGA-G200A. По компоновке на плате очень похоже, только чип ATI вместо Matrox.