image

Друзья! Многие ли из вас застали такую легендарную видеокарту, как 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-графики.

image

SGI Indigo

Однако это не значит, что 3D-графики не было вообще. Прогресс развития домашних процессоров шёл семимильными шагами и гиганты рынка — Intel, AMD и в некоторой степени Cyrix, выпускали всё новые и новые процессоры с повышенными тактовыми частотами, а ближе к середине 90-х — и с SIMD (MMX). Поскольку многие техники для отрисовки трехмерного изображения были разработаны ещё в 60-х — 70-х годах, игроделы к началу-середине 90-х во всю использовали некоторые наработанные техники из кинематографа для растеризации 3D-графики прямо на процессоре — так называемый софтварный рендеринг.

image

Одной из самых известных техник 90-х являлась 2.5D графика с использованием рейкастинга — когда картинка на экране выглядит как трёхмерная, однако по факту весь мир представлен в виде 2D-координат, а эффект «пола и потолка» был как бы фейковым. Принцип его работы довольно прост: от глаз игрока для каждого горизонтального пикселя (т. е. при разрешении 320x200, у нас будет 320 проходов) пускаются «лучи» и ищется пересечение с ближайшей стеной относительно угла обзор из глаз игрока. Из этого пересечения берется дистанция до этой стены (на основе дистанции и угла считается «высота» данной строчки стены) и считается какую строчку текстуры необходимо вывести в этой точке. Одними из первых игр с применением этой технологии стал Hovertank и Wolfenstein 3D, а технология применялась практически до конца 90-х. Одной из самых лучших реализаций рейкастинга — движок Duke Nukem 3D, Build Engine, написанный Кеном Сильверманом.

image

Однако не одним 2.5D мы были едины. Шли годы, в СНГ многие люди продолжали наслаждаться 8-битными и 16-битными играми на клонах NES и SMD. У некоторых уже появлялась PS1, которая позволяла играть в игры с довольно хорошей 3D-графикой, однако на ПК 3D-игры были доступны не всем. Но в 1996 году выходит Quake — новейший шутер от первого лица от id Software с настоящей, трушной 3D-графикой и переворачивает всю индустрию FPS с ног на голову. Посудите сами: Джон Кармак умудрился реализовать достаточно быстрый софтварный рендерер, который мог вполне сносно работать на Pentium 75Мгц в разрешении 320x240. А ведь помимо отрисовки кадра, игре нужно было просчитывать логику монстров (довольно примитивную, к слову), обрабатывать столкновения, просчитывать видимую геометрию с помощью BSP-дерева и обрабатывать клиент-серверную логику самой игры. Это была самая настоящая революция в мире 3D игр на ПК.

image

В 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.

image

Отдельные 3D-акселлераторы потихоньку начали завоевывать сердца геймеров и создавать новый сегмент рынка. Серьезные видеокарты от известных производителей, такие как 3dfx Voodoo, ATI Rage и Riva TNT стоили достаточно дорого и многим были не по карману. Зато существовало множество видеокарт с 3D-ускорителями от других производителей, про некоторые из них вы могли даже не слышать: отдельные дискретные видеокарты Intel (i740), видеокарты от производителя чипсетов SiS и конечно же, видеокарты от S3 с сериями ViRGE и Savage. Видеочипы от Intel и SiS делали упор на D3D 7.

image

Intel i740

S3 ViRGE была весьма неплохой видеокартой с точки зрения 2D-ускорения. Сейчас 2D принято считать частным случаем 3D (по факту, 2D-спрайты — это 3D-квады, состоящие из двух треугольников), однако в то время для работы с памятью видеокарты и аппаратного ускорения некоторых операций, таких как блиттинг (BitBlt) существовало отдельное графическое API — DirectDraw. С этим у ViRGE было всё хорошо — он поддерживал довольно высокое разрешение экрана (при желании, объём видеопамяти можно было нарастить и установить разрешение ещё выше) и умел ускорять часть операций как DDraw, так и GDI.

Однако, ViRGE разочаровывал многих геймеров 90х своей производительностью в 3D-графике. На коробке с бюджетной видеокартой красовались красивые надписи о 3D-графике следующего поколения, а на фотографии можно было увидеть некую игру про мехов с невиданной графикой!

image

По факту, 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) и т. п.

image

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 в софтовом плане, но был дифференциальным и последовательным, а не параллельным как интерфейсы-предшественники.

image

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

Установка состояний: Программа задаёт источники света на сцене, параметры Z-буфера и Stencil-буфера, какую текстуру(ы) следует наложить на рисуемую геометрию и с какой фильтрацией, какой тип аппаратного сглаживания использовать и т. п.
Ранее, каждый стейт необходимо было устанавливать отдельно, при необходимости — для каждого DrawCall'а. После подготовки состояния, программа вызывает соответствующую функцию отрисовки.

Обработка геометрии: Геометрия не поступает в растеризатор «как есть», в мировых координатах. Растеризатор оперирует вершинами в нормализованных Clip Space координатах — обычно, это [-1, -1… 1, 1], где 0.5 — центр экрана по каждой оси. Именно поэтому сначала необходимо провести этап трансформации геометрии для перевода из некой глобальной системы координат (которая может выражаться в метрах или, например, в пикселях) в Clip Space. Для этого чаще всего координаты (корректнее — трансформации) представляются в виде трех перемноженных матриц — model (мировые координаты геометрии), view (положение «глаз» в мире, или по простому камера. Умножая model на неё, мы получаем координаты объекта в пространстве камеры) и projection (матрица проекции, которая преобразовывает координаты из пространства глаз в тот самый Clip Space. Именно в этой матрице задается FOV для перспективной проекции и виртуальные размеры экрана для ортографической матрицы). После этого, координаты каждой вершины трансформируются полученной ModelViewProjection матрицей и получается финальная позиция для Clip Space. Звучит как сложный учебник матану, по факту всё очень просто. :)

$vertex * (model * view * projection)$



Детали реализации низкоуровневого матана, в том числе перемножения матриц и построения матриц трансформаций и проекции знать желательно, но необязательно. Сейчас этим занимаются очень удобные математические библиотеки — например, glm, dxmath или d3dx.

Кроме того, ранее именно на вершинном этапе считалось освещение для уровня. В некоторых видеочипах была возможность аппаратного расчета источников света, в некоторых — только программная на ЦПУ.

На видеокартах тех лет, в том числе и S3 Virge, трансформацией вершин занимался центральный процессор, из-за чего было довольно серьёзное ограничение на количество вызовов отрисовки и число треугольников в одной модели. Видеокарты с аппаратной, но всё ещё не программируемой трансформацией вершин появились лишь к GeForce 2 — называлась эта технология T&L (Transform and Lightning) и её преимущество было в том, что у видеокарты были специализированные векторные сопроцессоры, способны быстро пересчитывать векторные операции (а у ЦПУ, в свою очередь, развивались SIMD наборы инструкций, позволяющие выполнять несколько операций над float одновременно). В некоторых случаях, был даже отдельный программируемый векторный сопроцессор как, например, в PlayStation 2, что позволяло реализовать вершинные шейдеры ещё в 2000 году! На современных видеокартах, этапом трансформации в самом простом случае управляют вершинные шейдеры. Помимо этого, есть возможность создания геометрии «на лету» с использованием тесселяции и геометрических шейдеров, а совсем недавно появились Mesh-шейдеры, которые объединили несколько подэтапов конвейера в один.

image

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

В современных видеокартах этот этап конвейера программируется пиксельными (или фрагментными) шейдерами. В старых видеочипах (исключение — вроде-бы частично программируемый GPU Nintendo 64, поправьте в комментариях, если не прав) этот процесс строго определен в каждом GPU и не программировался. Именно поэтому такой подход к рисованию графики назывался Fixed function pipeline. Были ещё комбайнеры, но они появились заметно позже — когда в видеокартах появилось уже несколько текстурных юнитов, способных смешивать несколько текстур одновременно.

image

Делая вывод, мы можем понять, что 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. Даташит лежит в свободном доступе, благодаря чему мы можем более подробно ознакомиться с характеристиками этого видеочипа и о том, как он работал под капотом.

image

В основе у нас лежит 64-х битное ядро, которое могло обрабатывать как 2D-графику с аппаратным ускорением, так и 3D-графику. Ядро работало на частоте 135МГц с встроенным RAMDAC (модуль, отвечающий за вывод картинки на аналоговые разъемы — VGA и DVI, однако выводом на TV-тюльпаны занимался отдельный чип TV-энкодер). Современные видеочипы перешагнули планку 1ГГц, однако сравнение исключительно по частоте некорректны — архитектуры очень сильно отличаются. Помимо этого, видеочип умел декодировать видео с интерполяцией и аппаратно «помогать» процессору с скейлингом видео (например, когда вы разворачиваете плеер на весь экран) и даже рендерить видео в текстуру (что позволяло реализовать, например, телевизоры в играх)!

3D движок поддерживал следующие возможности:

  • Затенение по Гуро
  • Маппинг текстур с перспективной коррекцией и билинейной/трилинейной фильтрацией, а также мипмаппингом.
  • Depth-буфер, сэмплинг тумана и поддержка альфа-блендинга (прозрачной геометрии).

Чип поддерживал две шины — PCI и менее известную VLB (Vesa Local Bus, очень условно ISA)
Помимо этого, у чипа не было встроенной памяти — к нему необходимо было подключать внешнюю DRAM-память 2/4/8Мб. От её количества зависело максимально-поддерживаемое разрешение экрана. Текстуры при необходимости хранились в ОЗУ.

image

Видеопамять когда-то расширялась за счёт дополнительных модулей! Эту видеокарту можно расширить аж до 8МБ!

Поддерживаемые разрешения экрана:

image

Для DirectDraw и ускорения 2D-графики в Windows была реализация аппаратного BitBLT — копирования пикселей в точку на экране. Она поддерживала все режимы, которые были в реализации этой функции в Windows — от монохромных, до 24-х битных. Без альфа-блендинга, само собой. Но тут нет ничего необычного — многие видеочипы тех лет предоставляли простое 2D-ускорение.

Интереснее реализация отрисовки 3D-графики. Каждый треугольник описывался 3-мя регистрами на каждый параметр — координата X, Y для каждой точки, текстурные координаты и т. п. Всего для отрисовки одного треугольника могло потребоваться до 43 регистров! Весьма немало. И именно из-за этого в свое время появились glBegin/glVertex/glEnd!

image

Параметры сэмплера (текстурного юнита) задавались регистрами, которые определяли формат пикселя текстуры и сам тип фильтрации. Как я уже говорил выше — поддерживалась билинейная и трилинейная фильтрация и проприетарный формат сжатия текстур, который стал стандартом: S3TC или DXT.

image

Для программирования S3 ViRGE было разработано собственное C SDK — S3DTK, которое состояло из сэмплов и заголовочных файлов для общения с GAPI видеочипа (или видеочипом напрямую, если игра предназначена для DOS). При этом вполне не исключено, что GAPI для Windows работало с видеокартой напрямую, предоставляя PCI-драйвер лишь как прослойку для обмена данными. Поскольку это не D3D, для игр с поддержкой видеоускорения требовалось качать специфические версии. Некоторые игры (как Quake 2) поддерживали мультирендер, но не поддерживали S3 ViRGE.

Весь графический API помещался в один заголовочный файл. API было не простым, а очень простым и понятным — думаю, даже разработчикам-новичкам было легко начать программировать под ViRGE!

image

Формат вершин был фиксированным и зависел от того, как вы рисовали геометрию на экране:

image

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. Именно они отвечали за то, как рисовалась геометрия на экране:

image

А для фактического рисования примитивов служили функции TriangleSet и TriangleSetEx! Да, это альтернатива DrawPrimitives/DrawArrays в современных GAPI. Никаких индексов тогда ещё не использовалось! Функции принимали указатель на массив вершин и их количество, а также на тип рисуемой геометрии (треугольники, линии и т. п.). В Ex версии, можно было «пачкой» установить стейты параллельно с рисованием — такой подход используется в DX10+ API — стейты тоже задаются исключительно «пачками», только теперь они поделены на подгруппы.

image

Для 2D-рисования были свои, отдельные функции — для блиттинга. Поддерживался ColorKey/хромакей — прозрачным считался определенный цвет, переданный как параметр функции

image

Основной причиной медлительности 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. Интересно, реально ли найти эту видеокарту сейчас?

image

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

image
S3 Trio

Насколько я понимаю, неравнодушные инженеры после закрытия 3dfx и слияния S3 с VIA решили «слить» даташиты в сеть, за что им большое спасибо! Ведь теперь мы имеем возможность посмотреть на принцип работы таких устройств сами!



Возможно, захочется почитать и это:


Комментарии (131)


  1. bodyawm Автор
    08.11.2023 08:04
    +3

    Друзья! Я запилил TG-канал, где буду потихоньку делится с вами бэкстейджем и инсайдами о новом материале. Если интересно, как происходит подготовка материалом "за кадром" - добро пожаловать! :)

    https://t.me/monobogdann


    1. bodyawm Автор
      08.11.2023 08:04
      +2

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


      1. bodyawm Автор
        08.11.2023 08:04
        +1

        Чуть позже 3dfx Voodoo попробую раздобыть и написать материал о ней.

        Скорее всего, про "вуду" статья будет еще подробнее - есть мысль запилить маленькую игрушку под неё и на деле показать, на что она действительно способна =)


        1. MiyuHogosha
          08.11.2023 08:04
          +1

          У меня есть AGPшная. но рабочая ли - хз.


          1. bodyawm Автор
            08.11.2023 08:04

            Есть ли фото? Можно в ЛС


            1. Kilmez
              08.11.2023 08:04

              А про видеокарту которая самая правая сможете что нибудь рассказать?


              1. bodyawm Автор
                08.11.2023 08:04

                ATI Rage, что-то из поздних, год 1998-1999, судя по полноценному SO-DIMM (или SIMM?) слоту для доп. памяти. Плюс есть что-то типа SLI


              1. SADKO
                08.11.2023 08:04

                Это не видеокарта, а специальный 3д акселератор, похож на вуду2, одним разъёмом он подключался к видеокарте, другим к монитору. Фирма которая их делала, сначала зашла на рынок аркадных автоматов, и видимо оттуда такая тема...


                1. bodyawm Автор
                  08.11.2023 08:04
                  +1

                  Это ATI Rage...


              1. Javian
                08.11.2023 08:04

                Такой же слот был на Matrox MGA-G200A. По компоновке на плате очень похоже, только чип ATI вместо Matrox.


  1. sse
    08.11.2023 08:04
    +3

    У вас первой иллюстрацией к Quake идет кадр из Quake 2 :) А уже потом - Q1


    1. bodyawm Автор
      08.11.2023 08:04
      +1

      Вот позорник я, а! Упустил эту деталь при оформлении :)

      Спасибо


  1. SergeyMax
    08.11.2023 08:04
    +13

    Многие ли из вас застали такую легендарную видеокарту, как S3 ViRGE

    Сразу вопрос: а застали ли вы? Я вот что-то не помню, чтобы её кто-то считал 3D-ускорителем, и уж тем более очень разочаровывался в свежекупленной видеокарте.


    1. bodyawm Автор
      08.11.2023 08:04

      Не застал, однако несколько имею в своей коллекции.

      Изображения коробки, где вендор всеми силами рассказывает о крутом 3D-движке - мало чтоле?)


      1. Pyhesty
        08.11.2023 08:04
        +6

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

        В мое время никто не задавался вопросом бенчмарка видеокарты, процессора - да, но видеокарты нет. Видеокарта на тот момент считалось, что должна поддерживать VESA режим (а pci уже все поддерживали) и дальше можно было д() () мать или в героев). Да сейчас понимаешь, что кроме видеопамяти, от видеокарты нужна производительность) но тогда все тормоза списывались на: мало ОЗУ и частоту проца)


        1. bodyawm Автор
          08.11.2023 08:04

          А вот я видел такие обозначения, как 3d deccelerator ;) т.е 3D-замедлитель.


        1. vitagor
          08.11.2023 08:04
          +2

          Если мне не изменяет память, буджетнее и доступнее в то время были PCI-ные видеокарты на cirrus logic. У самого было несколько разных. И кажется, в какой-то из них тоже был "намек" на 3Dшность. Но он не заявлялся для игр, а для CAD-овских приложений.


          1. zuek
            08.11.2023 08:04

            А как же Matrox Millenium? Из примерно тех же годов (к стати, подозрительно похож на фото Rage, что повыше в ветке)... ;) Наши конструктора все требовали "по матрасу на воркстейшн"...


            1. vitagor
              08.11.2023 08:04
              +1

              То уже было в конце 90-х, приставка Millenium на это намекает. И уж "бюджетным" решением оно никогда не было. Эти карты славились замечательным RAMDAC-ом, который позволял на аналоговых мониторах, при высоких разрешениях, показывать просто идеальное качество картинки. Немудрено, что конструктора ее требовали.


              1. aik
                08.11.2023 08:04

                Миллениум вроде в 95 году появился, а в конце уже был и миллениум2, и g200.


    1. jpegqs
      08.11.2023 08:04
      +9

      Да. Это сейчас во многих процессорах есть встроенное видеоядро, и видеовыходы на материнке. А тогда какая-то видеокарта была нужна всем, просто чтобы подключить монитор. Вот и покупали самое дешевое. В те времена не было равенства между видеокартой и 3D акселератором.


      1. bodyawm Автор
        08.11.2023 08:04

        Нюанс в том, что S3 как раз таки предлагали дешманское устройство с хоть каким-то ускорением 3D-графики. То, что акселлератор там был медленным - вопрос другой.


        1. jpegqs
          08.11.2023 08:04
          +11

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


    1. VBKesha
      08.11.2023 08:04
      +2

      Вот я её вроде бы и застал, но правда моя жизнь стартанула с TNT2, а эти S3 видел только в офисных компах. И именовали её тогда с3 криво 3д. Но при этом ходили слухи что есть Savage и под ним UT99(тогда правда ещё 99 никто не говорил) идёт на нем прям в божественном виде. Как потом(сильно потом) оказалось для этого нужны ещё текстуры со второго диска с игрой, который найти было наверно сложней чем сам Savage. И вот за S3TC наверно таки можно вспомнить S3 добым словом.


      1. bodyawm Автор
        08.11.2023 08:04

        DXT стал стандартом на многие годы :)

        Правда, на мобилках его потихоньку ETC вытесняет, как и иные проприетарные форматы (типа PVRTC)


      1. zuek
        08.11.2023 08:04

        Вы путаете S3 Trio и S3 ViRGE - в вирджах, сколько помню, было две модификации - DX (PCI) и GX (AGP), а вот у трио было великое множество модификаций, и если изначальные 3D и V+ были добротными рабочими лошадками, то все остальные славились разной степенью глюкавости (что-то лечилось высверливанием "лишних" дорожек, что-то напайкой конденсаторов, что-то не лечилось совсем)


        1. VBKesha
          08.11.2023 08:04

          AGP живьем я никогда и не видел, а PCI валяются до сих пор для старта всяких старых материнок без наботрного видео.


      1. Kilmez
        08.11.2023 08:04
        +1

        "что есть Savage" - вспомнил что у меня есть полузаброшенный ящик и там нашлось вот такая видеокарта на 16 Мб.

        На другой стороне написано S3/SAVAGE4 W/16MB
        На другой стороне написано S3/SAVAGE4 W/16MB


        1. VBKesha
          08.11.2023 08:04

          Это уже 4тый, судя по вики первый звался Savage3D вроде как на нем повяились впервые S3TC текстуры. А в 4 версии ещё пояивлось свое проприетарное API Metal.


    1. levkib
      08.11.2023 08:04
      +1

      Ну я застал.(я с PC вожусть с 1989г) S3 Virge при появлении рекламировался и на нашем рынке как видеокарта с 3D. Потом уже это упоминание 3D ушло из прайслистов, когда продавцам видимо начали рассерженные покупатели предъявлять претензии.


    1. strvv
      08.11.2023 08:04
      +1

      по большому счёту, до ТНТ была первенцем рива128, но у неё было много проблем, типа virge на максималках, а у тнт уже было ПО лучше написано.


      1. aik
        08.11.2023 08:04
        +1

        рива128 страдала из-за драйверов и совместимости, но по скорости и возможностям была достаточно близка к вуду. Но в народ нвидия всё же пошла после появления тнт2 - со всеми вантами и м64, которых китайцы за копейки продавали.


      1. axe_chita
        08.11.2023 08:04
        +1

        Самым первым, и провальным, ускорителем от NVidia был чип NV1. Riva128 была уже второй попыткой Nvidia, и она была коммерчески успешной.


    1. Shaman_RSHU
      08.11.2023 08:04
      +4

      S3 Trio 64 V+


    1. JordanCpp
      08.11.2023 08:04

      Оно таки реально умело в 3d. Просто делала этот не спеша, так сказать на чиле:)


    1. aik
      08.11.2023 08:04

      Видели слово 3Д в названии и пытались хоть что-то из этого выжать. Потом разочаровывались.

      Но зато вирдж был недорогой и на него можно было поставить относительно много памяти.


  1. dlinyj
    08.11.2023 08:04
    +15

    Я помню видеокарты этой серии. Никто их игровыми в здравом уме не считал, но они прекрасно подходили для офисной работы. После того, как видеокарты ISA давали 256 цветов, 24-х битный цвет этой видеокарты был просто выходом в открытый космос. Реально, был космический прорыв.

    А по поводу игр, мы просто покупали Voodoo 3dfx, цепляли последовательно с этой картой и играли. Я помню, как я на первом пеньке гонял на вуде во вторую кваку и поражался невероятной графике.


    1. bodyawm Автор
      08.11.2023 08:04

      Вуду ведь сильно дороже S3 стоила в момент актуальности


      1. dlinyj
        08.11.2023 08:04
        +3

        Вопрос не цены. Хочешь играть, покупай ускоритель. Или работай и не жужи. На самом деле, в те времена было много игр, которые не требовали 3D-графики.


        1. jpegqs
          08.11.2023 08:04
          +3

          Помню в те времена у игр было несколько .exe, одни для бедных с программным рендерингом в низком разрешении, и отдельные для владельцев 3dfx карт. И еще отдельный .exe для Windows 95.


          1. bodyawm Автор
            08.11.2023 08:04
            +1

            И еще WinQuake, GLQuake, игры для ATI Rage и.т.п :)


      1. Miceh
        08.11.2023 08:04
        +2

        Знающий товарищ вовремя посоветовал взять Riva128, и я не пожалел


        1. strvv
          08.11.2023 08:04
          +1

          да, но первое время драйвера были ещё те, точнее было отсутствие в современном понимании драйверов и без различных экстендеров (расширений) она была вирже на максималках.

          позже, на тнт и тнт2 уже был полноценный комплект драйверов, с отдельными dll для винды чтобы работал ogl и dx6-dx7.


          1. bodyawm Автор
            08.11.2023 08:04

            Экстендеры - это расширения OGL?


            1. strvv
              08.11.2023 08:04

              да, различные длл и exe под разные ситуации - когда необходимо поддержка чего-либо как есть. позже это всё стандартизировалось и становилось более-менее упорядоченным.


              1. bodyawm Автор
                08.11.2023 08:04

                Реализация D3D была стандартизирована, OGL первых версий - тоже.


    1. ImagineTables
      08.11.2023 08:04
      +2

      они прекрасно подходили для офисной работы

      В богатых офисах, разве что. Где победнее, там стояли S3 Trio 64V+. У «среднего класса» — с SOJ'ами ))

      Ограничивающий фактор был монитор. Что толку от возможности выдавать 24-х битный цвет на более высоких разрешениях, если монитор всё равно еле-еле поддерживает 1024x768?


      1. dlinyj
        08.11.2023 08:04
        +9

        Я помню, что 1024х768 в те времена казалось тоже прекрасным расширением.


      1. Pinkerton42
        08.11.2023 08:04
        +1

        Ух! S3 Trio 64V+ самая уродская видюха была. Даже родные драйвера работали через раз.


        1. strvv
          08.11.2023 08:04

          а тогда все были ещё те подарки. ты матрас вспомни или Rage от ати...


          1. Pyhesty
            08.11.2023 08:04

            матрасы могли два отдельных монитора!)))


            1. strvv
              08.11.2023 08:04

              и как много разнообразного ПО это поддерживало? вся проблема в том что сейчас это проблема ОС, как и должно быть - а то была проблема пользователя и ПО которое на этом работало.


            1. aik
              08.11.2023 08:04
              +2

              Могли и в четыре. Но в 98 винде появилась встроенная поддержка многомониторности и тогда уже можно было просто две s3 воткнуть. Я пять пробовал, потом на меня упал монитор и я перестал дурью маяться. Но с двумя мониторами я живу ещё со времён 98.


        1. q2c
          08.11.2023 08:04

          О дааа! Они хапали одни и те же ресурсы с адаптековскими скази-контроллерами и радостно вылетали в синий экран, сообщая что "ваша программа выполнила невыполнимое и допустила недопустимое". Приходилось вручную их разводить по разным IRQ и DMA, несмотря на PnP (который на самом деле Plug and Pray)


          1. aik
            08.11.2023 08:04

            P&P скорее про программную настройку был, чем про полноценное "воткнул и работай". Не приходилось лазить внутрь системника и джамперы перетыкать.

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


        1. aik
          08.11.2023 08:04

          64v+ - это была стабильная рабочая лошадка для офисного компьютера. Кстати, она ещё и с досовскими играми отлично работала.

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


    1. Viacheslav01
      08.11.2023 08:04

      Видеокарты ISA прекрасно работали в SVGA режимах )


      1. dlinyj
        08.11.2023 08:04

        Прекрасно, но больше 256 цветов с них выжать было нельзя с каким-либо вменяемым разрешением.


        1. Viacheslav01
          08.11.2023 08:04
          +3

          800 на 600 вполне вменяемо, 1 МБ на борту, хороший рамдак и как минимум 16 бит на пиксель обеспечено.


          1. dlinyj
            08.11.2023 08:04
            +1

            Это невозможно, вид. Частота шины ISA была 12 МГц максимум. Даже не поленился, нашёл документацию...

            Внезапно вы правы. Trident TVGA9000i-3

            Открыл даташит на проц.

            Но, тут вопрос ещё частоты обновления картинки. Но век живи.


            1. Javian
              08.11.2023 08:04
              +1

              Вообще это очень хорошая карта - у нее были джамперы 8/16 ISA и её можно было вставить 8 бит слот в ХТ.


              1. dlinyj
                08.11.2023 08:04

                Да, я бы с удовольствием такую бы заимел в хозяйстве.


                1. da-nie
                  08.11.2023 08:04
                  +2

                  С ней можно сделать такое:


                  1. dlinyj
                    08.11.2023 08:04

                    С любой ISA, не только с этой. Это вы автор этой потрясающей статьи . Я помню её, это реально очень круто!!!


                    1. da-nie
                      08.11.2023 08:04

                      Нет, не с любой. :) Только с той, для которой известен процесс инициализации. Для этой он известен. Так-то он прописал в BIOS карты и его можно дизассемблировать, но игры с IDA показали, что выцарапать его оттуда не очень просто. Но возможно.


                      1. dlinyj
                        08.11.2023 08:04
                        +1

                        Разве не у всех ISA видеокарт BIOS мапился на память, и его можно было прочитать. От туда достать правила инициализации регистров и т.п.? Ведь, просто напросто видеокарта не стартанёт без этого BIOS.


                      1. da-nie
                        08.11.2023 08:04
                        +1

                        Вот в пункте "От туда достать правила инициализации регистров и т.п.?" и есть основная проблема. Там нифига не линейная портянка. Там блоки с ветвлениями. И какое нужно будет, зависит от режимов. Сама-то видеокарта имеет множество режимов и большую кучу настроек. Поэтому выяснение настроек карты превращается в творческий процесс.


                      1. dlinyj
                        08.11.2023 08:04

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

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


                      1. da-nie
                        08.11.2023 08:04

                        Ой, да бросьте. ;) Проект совершенно примитивный. Я, если честно, абсолютно в недоумении, чем он так всем понравился. Он же совсем не сложный.


                1. Javian
                  08.11.2023 08:04
                  +1

                  На Авито появляются по бросовой цене т.к. никто не знает такой особенности этой видеокарты..


                  1. dlinyj
                    08.11.2023 08:04

                    Пока не попадались


                    1. Javian
                      08.11.2023 08:04
                      +1

                      Отдельно я не видел, попадались в куче в лотах типа "старые компьютеры", "старые адаптеры ISA".


        1. axe_chita
          08.11.2023 08:04

          Cirrus Logic на ISA таки умели HiColor и TrueColor. Главное количество набортной памяти и подходящий RAMDAC. В крайнем случае требовался загруженный UniVBE.

          Ссылка на даташит


        1. aik
          08.11.2023 08:04

          Выжать-то можно было - вроде и двухмеговые были.

          Но вот скорость работы и качество картинки...


          1. dlinyj
            08.11.2023 08:04

            Логично, выше скорости ISA не прыгнешь.


            1. aik
              08.11.2023 08:04
              +1

              С исой можно было потанцевать в плане частоты шины, особенно на 486. Но, конечно, это уже всё было за пределами штатной работы.


  1. quartz64
    08.11.2023 08:04
    +4

    S3 ViRGE/DX была в моем первом ПК: 1998 год, PII-233 c 32 МБ RAM. Вполне возможно, что на поздних драйверах 3D худо-бедно работало, но мне запомнилось, что 3D-ускорение можно было увидеть только в виде цветного вращающегося кубика в настройках DirectX. В играх всё было либо крайне медленно, на уровне 3-5 FPS, либо с артефактами (белые текстуры в Carmageddon 2).
    Через год мне удалось наскрести $35 на Intel 740 — небо и земля! Наконец-то смог увидеть гладкий и плавный Quake 2.


    1. zuek
      08.11.2023 08:04

      Ну, не знаю, что у Вас был за ПК в 98-м году (я тогда с первой годовой премии купил себе PII-400 + Riva TNT), но во времена актуальности DX (не GX), бета первого Халф-лайфа вполне сносно игралась на моём P MMX 233 + Virge DX (да, релизную версию уже гонял под Ривой)... а лет через пять я пересел на "интегряшки", где до сих пор и остался =)


      1. quartz64
        08.11.2023 08:04

        Видимо, к тому времени появился нормальный драйвер, но я по неопытности (старшеклассник, пересевший с ZX Spectrum) разобраться с этим не сумел и наблюдал такое: https://www.vogons.org/viewtopic.php?t=70146

        Вот i740 просто работал, во всяком случае в 1999 году.


  1. temnikov_vasiliy
    08.11.2023 08:04
    +2

    на S3VirgeDX PCI 2Mb запускал Quake3demo через какой-то программный транслятор OpenGL. было 1-2fps , но тогда это было круто ! )


  1. maximaleshin
    08.11.2023 08:04
    +1

    На первом самосборном компе была такая. Примерно 1996-1997 годы. Брал специально из-за возможности расширения памяти. Ну да, казался важным сей момент :) И расширил, и заработало благодаря покупке нескольких микросхем на местном радиорынке. NFS-2 вроде поинтереснее стала :)


    1. Viacheslav01
      08.11.2023 08:04

      Да она в NFS добавляла блики, по тем временам картинка казалась просто космической )


  1. Javian
    08.11.2023 08:04
    +1

    На PCI почти не было 3D ускорителей. Хочешь играть - нужна карта с AGP.

    S3 Trio 3D/2X с AGP и 8Мб видеопамяти уже была бюджетной игровой видеокартой. Можно было в Unreal Tournament комфортно бегать. Тем более что у её владельца не было альтернативы - отсутствие OpenGL не позволяло запускать QIII.


    1. Viacheslav01
      08.11.2023 08:04

      Ну AGP было не всегда и было время когда, все работало в PCI.


      1. bodyawm Автор
        08.11.2023 08:04

        А еще была VLB


        1. Viacheslav01
          08.11.2023 08:04
          +1

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


          1. CrashLogger
            08.11.2023 08:04
            +6

            Ну во времена 486 - не такой уж и редкой. У меня была.


          1. zuek
            08.11.2023 08:04
            +2

            94-й год - почти у всех были VLB - к этому моменту PCI только-только начал появляться в масс-маркете, а ISA уже вовсю стала узким местом. Вот EISA - это да, раритетная вещь... может, Вы EISA и VESA спутали?


  1. Viacheslav01
    08.11.2023 08:04
    +3

    "Когда-то этот GPU стоял чуть ли не в каждом втором офисном компьютере: благодаря дешевизне"

    Это не совсем так, в то время когда карта была актуальна, она стоила сильно дороже чем S3 Trio 64, которая да была практически базовой PCI картой для офисных ПК.

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

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


    1. bodyawm Автор
      08.11.2023 08:04

      Фишку с ускорением видео просекли и в ATI, релизнув Rage с поддержкой декодирования DVD-качества видео (т.е 480p) в фуллскрине. Даже в промо об этом везде говорили))


      1. Viacheslav01
        08.11.2023 08:04
        +1

        Ну API Rage был вообще не достижимой мечтой )))
        Ну а так да, он первый на котором я видел полноэкранное видео без тормозов )


        1. bodyawm Автор
          08.11.2023 08:04
          +1

          У меня есть SDK для Rage. Специально сохранил для будущей статьи.

          Но Rage будем щупать уже на ноутбуке скорее всего - когда-то ATI додумались сделать дискретку в виде Rage Mobility, сделав что-то типа первого игрового ноутбука :)


  1. easyman
    08.11.2023 08:04
    +1

    На Nvidia можно было запускать 3dfx через nGlide...


    1. bodyawm Автор
      08.11.2023 08:04

      Да сейчас много врапперов для Glide существует.


  1. da-nie
    08.11.2023 08:04
    +2

    Одной из самых лучших реализаций рейкастинга — движок Duke Nukem 3D, Build Engine, написанный Кеном Сильверманом.

    Так. Уже во второй статье почему-то приписывают Duke Nukem 3D эту самую трассировку лучей. Значит, где-то такое кто-то написал, и теперь это тиражируют. Интересно, где это так написано изначально?


    1. bodyawm Автор
      08.11.2023 08:04

      del


    1. bodyawm Автор
      08.11.2023 08:04

      Всё, кажись я понял, что вопрос именно к Build Engine :)

      Вообще, это было предположение именно относительно 2.5D FPS-движков в целом. Никто конкретно о рейкастинге в билде не писал, просто с применением этой техники вышло довольно много игр. Видимо я чуток облажался :( Детали реализации самого билда не смотрел, но ковырял следующий движок Сильвермана - который воксельный, занимательная штукенция.


      1. da-nie
        08.11.2023 08:04

        В Build - порталы.


        1. bodyawm Автор
          08.11.2023 08:04

          Так а сам метод растеризации какой? Как стенки то рисовались?)


          1. da-nie
            08.11.2023 08:04
            +1

            Вот так примерно там стенки рисовались.

            Портальный движок работает несколько иначе. Прежде всего, он не требует
            разбиения пространства. Мы просто должны узнать, в каком из секторов
            находится игрок, и имея список порталов сектора, последовательно
            переходить из сектора в сектор через эти порталы. Чтобы не крутить по
            кругу, стоит блокировать порталы, через которые мы уже проходили.
            Алгоритм такого хождения тоже рекурсивный и тоже в результате мы
            получаем упорядочивание секторов и сегментов от игрока в бесконечность.
            Порталы могут быть геометрические (с помощью математики мы отрезаем
            куски карты, видимые через портал (со всеми ошибками округления в
            подарок)) и экранные (здесь мы корректируем левую и правую границу зоны вывода картинки на экран). Экранный портал для софтверного движка более предпочтителен, так как очень просто реализуем и работает очень быстро.
            Единственная непонятная ситуация возможна, когда игрок стоит прямо на
            портале. В этом случае при отрисовке этого портала границы портала не
            изменяем, иначе одна из половинок окажется неотрисованной.

            Метод порталов называется.


      1. jpegqs
        08.11.2023 08:04

        Так в Build Engine и появились воксели, но в поздних версиях движка, а Дюке их не успели использовать. В Shadow Warrior и Blood уже использовались.


        1. da-nie
          08.11.2023 08:04

          Они использовались только для предметов.


  1. vvz732
    08.11.2023 08:04

    Вроде на фото в статье - 2 МБ версия, с возможностью расширения до 4 МБ. Разве были 8 МБ версии S3 Virge?


  1. napolskih
    08.11.2023 08:04

    У меня была такая. Сначала у меня была с3 64в+ и это была просто офисная никакая карточка, потом я накопил и купил с3 вирдж, быстро понял что это фигня. я страдал, не мог даже в нормальном разрешении играть в квейк 1 и халф, только софтваре, 320 ) у меня к тому же был К5-90 с 8 мб рам без сдрома ) а у друга П3 и рива ТНТ с сд ) еще я носил игры на дискетах (десятки дискет) и страдал )


  1. Vaitek
    08.11.2023 08:04

    У меня был Trident Blade 3D. Мафия пошагово проходилась)))


  1. MaFrance351
    08.11.2023 08:04
    +1

    Понравилось. Всегда было интересно узнать, как работали с 3D-графикой в те годы, но руки разобраться не доходили. Но да, S3 игровыми почти никто тогда не считал. У меня есть несколько таких карт, знаю, каковы они.

    Было бы неплохо теперь написать какую-нибудь игру или демку для этого девайса...


  1. PowerMetall
    08.11.2023 08:04
    +3

    Эххх...

    До сих пор лежат дома GrForce 2 MX 200 и TNT2 M64 Vanta )))

    Выбросить - рука не поднимается


    1. bodyawm Автор
      08.11.2023 08:04

      TNT тема. А MX200 сколько стоила на мометн покупки?)


      1. Pryanik71
        08.11.2023 08:04
        +2

        Я брал баксов за 40-50 вроде.Год 2002.

        Где-то должен лежать комп с 1000 пнем 3, GeForce 3 Ti 400, SoundBlaster 5.1.


    1. Javian
      08.11.2023 08:04

      Я летом GeForce 2 MX вытащил из ящика и использую - понадобилось старый софт запускать. Она в те времена была прошита русским шрифтом в знакогенераторе - русский шрифт есть без всяких keyrus.


  1. gnomeby
    08.11.2023 08:04
    +1

    (т. е. при разрешении 240х320, у нас будет 240 проходов)

    Какое-то странное разрешение.

    Джон Кармак умудрился реализовать достаточно быстрый софтварный
    рендерер, который мог вполне сносно работать на Pentium 75Мгц в
    разрешении 320x240

    Минимальное и дефолтное разрешение было 320x200 и 256 цветов.


    1. bodyawm Автор
      08.11.2023 08:04

      Моя очепяточка, спасибо. Привык к QVGA.


      1. gnomeby
        08.11.2023 08:04
        +1

        странно что вы тут отписали, но в статье до сих пор не исправили.


    1. zuek
      08.11.2023 08:04
      +1

      Минимальное и дефолтное разрешение было 320x200 и 256 цветов.

      Эммм... а разве "родной" MODE 13 не 320*240*256? Пойду-ка погуглю...

      Погуглил. Забавная штука память - всего 30 лет прошло, а уже "ложные воспоминания" =)


  1. lumag
    08.11.2023 08:04
    +1

    T&L (или точнее TCL), если мне не изменяет пямять, появился в GeForce256, еще до GeForce 2.


    1. bodyawm Автор
      08.11.2023 08:04

      Спасибо за поправку, да, в GF256 появился T&L. T&L так и называется - Transform and Lightning, C там нет.

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

      А вот у GF3 появилась поддержка самых-самых первых шейдеров! :)


      1. lumag
        08.11.2023 08:04
        +1

        C -- clipping. Иногда называют так, иногда так.

        Register Combiners были и на GF256, но с хардварными багами. А до этого было NV_texture_env_combine4, настройка параметров блендинга текстур. Вообще любопытно наблюдать было за развитием.


  1. Zuy
    08.11.2023 08:04
    +1

    Мой первый PC был с Riva128. Я тогда даже не знал что такое это 3d и как его увидеть. Но потом случайно запустил Quake в OpenGL и как понял :) Правда почему-то все очень темно было и приходилось гамму выкручивать.


  1. zuek
    08.11.2023 08:04
    +2

    VGA предполагал как палитровый режим, так и полноценный RGB

    Позвольте возразить - в VGA не было режима "RGB" - доступный максимум - 320*240*256, правда, эти 256 цветов действительно кодировались полноценной RGB-палитрой (в отличии от тех 16 цветов, доступных в более высоких разрешениях). Ну и попутно, про "программирование" 16-цветных графических режимов - это на отдельную статью (какие порты отвечают за вывод в какой слой, как переключаются отображаемые экраны/фреймбуферы, как управляется синхронизация с лучом кинескопа и т.п.). По факту, мало кто из здесь присутствующих застал "настоящий VGA" - большинство "старичков" (типа меня) начинали с SVGA, типа Trident 9000 или близких по характеристикам "церрозов" (позднее печально прославившихся VESA-версиями на безсвинцовых припоях), но так сложилось, что я и на Hercules и на CGA и на EGA успел поразвлечься всласть, в том числе и попрограммировать графику "напрямую", минуя любые библиотеки - только прямая запись в RAM и отправка команд в порты - в школьные годы любил программирование, от бейсика до ассемблеров...


    1. bodyawm Автор
      08.11.2023 08:04
      -1

      Я в VGA и SVGA включил, поскольку с точки зрения биоса, они управляются оба через int 10h :)


  1. 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. Теперь храню сей музейный экспонат как память.


    1. Zara6502
      08.11.2023 08:04

      Подскажите, а какая модель Matrox вами считается на определенный момент как "мечта"? Просто из того с чем мне доводилось работать Matrox это в первую очередь - Autocad с хорошим ускорением рисования линий и соответствующими драйверами для DOS и двухголовый чип для вывода на два монитора. Из 3D там разве что Q2 можно было побегать, но там +- у всех всё было одинаково. Для меня знаковой стала игра SiN, я как раз покупал себе карту с 3D и мне "подсунули" i740, которую я через час вернул и взял Riva TNT (я не понимал что это, для меня что рива что i740 всё было одинаковым, но результат на экране разительно отличался).


      1. vorphalack
        08.11.2023 08:04

        да, на фоне зеленых и красных матрасы были прямо таки 3д-тормозителями, на G450 кваки с халвой были примерно потолком того, во что можно было играть без тормозов. но качество картинки в работе... плюс там можно было LC цепочки на выходе вырезать, чтоб они тебе сигнал не портили и получалось вообще бомба.


    1. aik
      08.11.2023 08:04

      все геймеры спали и видели во сне Matrox Millenium - видюху со встроенным 3D ускорителем, не знающую себе равных

      Матрокс был мифическим мифом во времена 2Д-графики, но вот когда пошло 3Д, про них уже никто не мечтал. У них была попытка сделать ускоритель, m3d, но из неё ничего толкового не вышло - совместимость прихрамывала, игры делали под глайд. Так что даже если бы у вас и был millenium, то пришлось бы всё равно ставить вуду к нему в пару (да и досовские игры не особо любили матроксы).

      Потом пошла линейка Gxxx, у которых 3Д уже было приемлемое, но оно уступало по цене-производительности массовым видюшкам, потому всерьёз никем не рассматривалось. Ну разве что когда G200 вышла, она ещё хоть как-то себя проявляла. А всякие там G400-450-500 уже плелись далеко в хвосте прогресса.


  1. 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.


    1. aik
      08.11.2023 08:04

      Разные вариации S3 Trio, конечно, на первом месте, но вирдж всё же был достаточно популярен. Может быть где-то на уровне атишек и уж точно популярнее матрокса.


  1. 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 урезать память до двух мегабайт, то насколько упадет его производительность? :)


  1. select26
    08.11.2023 08:04
    +2

    Потрясающий обзор! Спасибо!

    VGA мог отразить весь фреймбуфер в линейную область адресного пространства.

    Насколько я помню - не мог. Оригинальные ISA VGA и клоны адресовали свою память через окно 64 или 128 КБ в верху первого мегабайта.
    У меня была UMC VGA с 512Кб. Она работала именно так, в принципе не могла отобразить всю видеопамять на адресное пространство. Куда она могла на ISA отобразить?
    Это стало возможным только на PCI.

    Ну и "свое API" режет глаз. Поправьте пожалуйста.


  1. da-nie
    08.11.2023 08:04
    +1

    У меня вот такая вот есть ещё.


  1. SSLHTML
    08.11.2023 08:04
    +1

    Отличная статья! В 90-х, на Pentium 166 и 200MMX у меня была видеокарта Trio Virge от компании S3. Очень интересны такие олдскульные обзоры для тех, "кто помнит". Большое спасибо за проделанную работу!


    1. bodyawm Автор
      08.11.2023 08:04

      Спасибо за теплые слова!