image

Есть много хорошей литературы о движке Quake: книги, бесчисленные статьи в Интернете, блоги и вики-страницы. Среди них всех моими любимыми остаются «Graphics Programming Black Book» Майкла Абраша, опубликованная в 1997 году, и «Rocket Jump: Quake and the Golden Age of First-Person Shooters» Дэвида Л. Крэддока (2018 год).

К сожалению, можно найти очень мало информации о разработанном примерно в 1996 году оборудовании, позволившем улучшить 3D-рендеринг и, в частности, графику революционной игры id Software. Внутри архитектуры и конструкции этих кусков кремния заключена история технологической дуэли между Rendition V1000 и 3dfx Interactive Voodoo.

После выпуска vQuake в начале декабря 1996 года казалось, что преимуществом завладела Rendition. V1000 была быстрой картой, способной запускать Quake с аппаратным ускорением, обеспечивающим, по заявлению разработчика, скорость заполнения 25 мегапикселей/с[1]. Прямо перед Рождеством Rendition захватила рынок, позволив игрокам запускать игру с высоким разрешением, частотой кадров и в 16-битном цвете[2]. Но, как показала история, изъян в конструкции Verite 1000 оказался смертельным для инновационной компании.

Правильно подобранное время и убойные приложения


Идея специализированного оборудования для ускорения графики появилась не внезапно. Ещё в 1954 году у авиакомпании United Airlines были симуляторы полёта для тренировок пилотов. Крупнейший игрок в этой области, Silicon Graphics, Inc. (SGI), появился ещё в 1982 году и предлагал в то время мощные рабочие станции, такие как Indy, O2 и Indigo?. Однако цены на эти машины не позволяли приобретать их обычным потребителям (SGI Infinite Reality 1993 года могла продаваться за 100 тысяч долларов, что эквивалентно 177 262 долларам 2019 года). Причиной ситуации, возникшей в конце 90-х, стало сочетание трёх факторов.


Во-первых, значительно снизилась цена на ОЗУ. Даже несмотря на то, что в 1995 году появился огромный дефицит ОЗУ (в основном потому, что для ОС Microsoft Windows 95 рекомендовалось 8 МБ памяти), за год цена ОЗУ упала почти на 90%. Это открыло перспективы для карт с потрясающе огромными буферами кадров (640x480 с 16-битным RGB-цветом), способными хранить текстуры локально.

Во-вторых, повысилась производительность ОЗУ. FastPage RAM была шагом вперёд по сравнению с DRAM, но после выпуска EDO RAM задержки снизились на 30%, а время доступа к ОЗУ составило 50 нс[3].

Третьим и последним куском головоломки стали «убойные приложения» (killer apps). У PC появились мощные ЦП, например, Intel Pentium с частотой 166 МГц, которые разработчики использовали для создания высококачественных 3D-игр. В 1996 году все говорили о двух играх: Tomb Raider компании Core Design и Quake от id Software.



Rendition и V1000


Rendition Inc была основана в 1993. Два года спустя, в 1995 году, компания объявила о создании архитектуры V1000, которая быстро была лицензирована четырьмя OEM. Первыми на рынке появились Creative Labs 3D Blaster PCI, Sierra Screamin' 3D, Canopus Total 3D и Intergraph Reactor, а вскоре за ними в дело вступила компания MiRO.


Intergraph Reactor. Изображение с vgamuseum.ru.


Creative Labs 3D Blaster. Изображение клуба «Retro Graphics Cards».

Заметьте, что первый чип V1000-E был позже заменён на V1000L-P с меньшим энергопотреблением и на 20% быстрее[4].


MiroCrystal VRX. Изображение с vgamuseum.info.


Canopus Total3D. Изображение с vgamuseum.ru.


Название карт менялось, но используемые в них чипы были одинаковыми. Единственным параметром, по которому производители должны были балансировать цену и производительность, оставалось качество установленной на карте ОЗУ.

  1. VGA-порт для подключения к ЭЛТ-монитору.
  2. Ramdac, обычно от Bt, но иногда и чип AT&T.
  3. Ядро карты — чип V1000-E, V1000-P или v1000-L.
  4. Восемь 512 кибибайтных чипов DRAM/EDO (в сумме 4 мебибайта) для хранения буферов кадров и текстур.
  5. 64 кибибайта EEPROM, содержащие BIOS.

V1000 имела два неотъемлемых свойства, которые важно отметить, потому что в 3dfx Voodoo (которую я рассмотрю позже) использовался радикально иной подход.

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

Вторая особенность — это архитектура «big iron», основанная на одном ЦП Mips, получающем доступ ко всем 4 мебибайтам памяти. 64-битная шина данных между ними не имела никаких особых свойств. Такая стандартизованная конструкция позволяла с лёгкостью программировать карту с помощью загружаемого при запуске микрокода (это превратило карту в первый GPU для PC, задолго до того, как Nvidia придумала это определение.)

Программирование V1000


SDK[5] поставлялся с набором файлов заголовков для взаимодействия с языком C (RRedline в Windows и Speedy3D в DOS). Отрисовка текстурированного треугольника напоминала то, что обеспечивает сегодня Vulkan с ручным управлением VRAM. API, способный рендерить текстурированные треугольники с учётом ракурса, также поддерживал альфа-тесты, альфа-смешение и туман.

#include <string.h>
#include <windows.h>
#include <redline.h>

WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdLine, int cmdShow){
  int WIDTH=640, HEIGHT = 480;
  HWND hWndMain = ... ;

  // Setup Verite board and resolution/refresh rate
  v_handle verite;
  VL_OpenVerite(hWndMain, &verite);
  V_SetDisplayType(verite, V_FULLSCREEN_APP);
  V_SetDisplayMode(verite, WIDTH, HEIGHT, 16, 75);

  // Copy texture to VRAM
  bmp_info  bmp = loadBMP("data\\rlogo.bmp");
  v_memory memObj = V_AllocLockedMem(verite, bmp.linebytes*bmp.height);
  memcpy(V_GetMemoryObjectAddress(memObj), bmp.addr, bmp.linebytes*bmp.height);

  v_surface *display, *texture;
  VL_CreateSurface(verite, &display, V_SURFACE_PRIMARY, 2, V_PIXFMT_565, WIDTH, HEIGHT);
  VL_CreateSurface(verite, &texture, 0, 1, V_PIXFMT_565, bmp.width, bmp.height);

  v_cmdbuffer cmdbuffer = V_CreateCmdBuffer(verite, 0, 0);

  VL_LoadBuffer(&cmdbuffer, texture, 0, bmp.linebytes, bmp.width, bmp.height, memObj, 0);
  VL_InstallDstBuffer(&cmdbuffer, display);
  VL_InstallTextureMap(&cmdbuffer, texture);
  VL_SetSrcFunc(&cmdbuffer, V_SRCFUNC_REPLACE)

  // Clear screen to black
  VL_FillBuffer(&cmdbuffer, display, 1, 0, 0, display->width, display->height,0);

  // Populate cmd with triangle coo and textCoo
  v_kaxyzuvq vertex[3] = ... ;
  VL_Triangle(&cmdbuffer, V_FIFO_KAXYZUVQ, &vertex[0], &vertex[1], &vertex[2]);

  V_IssueCmdBuffer(verite, cmdbuffer);
  VL_SwapDisplaySurface(&cmdbuffer, display);
}

RRedline обеспечивал загрузку в Verite 128 кибибайт микрокода и транслировал вызовы C в вызовы ассемблерных функций V1000.

Интересный факт: название API «RRedline» обыгрывало словосочетание «Rendition Ready» и скорее всего было выбрано коллегиально. Однако название Speedy3D было идеей Уолта Донована.

По сути, v1000 всего лишь был медленным ЦП (25 МГц), имевшим однотактовое умножение 32*32 (занимавшую солидную часть чипа!), однотактовую инструкцию вычисления аппроксимированного обратного значения (то есть двухтактовое аппроксимированное целочисленное деление), и обычный набор RISC-инструкций. О, и ещё инструкцию «билинейной загрузки», которая считывала блок линейной памяти размером 2x2 и выполняла билинейную фильтрацию на основе дробных значений u и v, переданных в инструкцию. В карте был крошечный кеш, кажется, всего 4 пикселя. Поэтому если появлялся идеально совпадающий блок 2x2, мы получали уменьшение нагрузки на пропускную способность памяти.

Аппаратная поддержка Z-буферов отсутствовала. Поэтому ПО, выполнявшееся в v1000, должно было считывать Z, выполнять сравнение, а затем решать, выполнять запись или нет.

— Уолт Донован (архитектор алгоритмов)

Для отправки текстур и микрокода в карту драйвер использовал DMA, чтобы передавать данные по PCI без вмешательства ЦП. На практике, у многих материнских плат шинное управление не было реализовано правильно, поэтому играм приходилось возвращаться к режиму PCI FIFO, что отрицательно сказывалось на производительности[6]. Внутри карты все операции выполнялись в 32-битных целых числах с фиксированной запятой.

Разработчики решили, что Rendition будет полностью программируемым, но не использовали никакого умного конвейера или быстрой синхронизации. Поэтому если для записи пикселя нужно было 25 инструкций, то мы получим всего 1 мегапиксель/с. Если использовать оборудование с фиксированным функционалом, то можно создать конвейер, эквивалентный этим 25 инструкциям, и добиться 25 мегапикселей/с. Сотрудники 3dfx пришли из SGI, поэтому они выбрали подход, оказавшийся правильным решением — создать в оборудовании движок обработки треугольников с фиксированным функционалом и подмножеством функций OpenGL для управления. Разработчики V1000 имели совсем другой опыт, они не знали OpenGL, а поэтому решили, что правильнее будет создать ЦП.

— Уолт Донован (архитектор алгоритмов)

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

Использованный в vQuake алгоритм сглаживания (антиалиасинга) был запатентован (номер патента 6005580). Об этом алгоритме ходила забавная шутка. Он работал только с треугольниками, но не интервалами. В Quake использовалась концепция «идеальной z-буферизации», при которой графика делилась на интервалы и визуально сортировалась с помощью BSP/PVS (двоичного разбиения пространства/набора потенциально видимых элементов). Поэтому движок создавал набор интервалов, которые идеально покрывали экран без наложений и пропущенных пикселей, и для отрисовки требовалась единственная операция записи (без z-буферизации!) в память дисплея. Однако изначальными данными для этих интервалов были треугольники. Алгоритм антиалиасинга искал рёбра силуэтов и сглаживал их. (Подробнее об этой идее см. сайт humus.name, запись Geometric Post-Process antialiasing примерно от марта 2011 год — автор изобрёл эту технологию заново!) Но так как сглаживание выполнялось после рендеринга экрана (все интервалы уже были отрисованы), алгоритм понятия не имел, видимо ребро или нет. Он отрисовывал его в любом случае. (Если бы использовался z-буфер, то перерисовывались бы только видимые рёбра!) На практике это не оказалось большой проблемой, потому что BSP обычно очень хорошо отсекал невидимые треугольники.

Но не у моделей персонажей! Поэтому vquake позволял игроку видеть людей, прячущихся за дверьми и стенами, создавая небольшое и подвижное искажение в текстурах!

— Уолт Донован (архитектор алгоритмов)

vQuake


В момент выпуска карт они поддерживали несколько хороших игр. Да, Descent II, Grand Prix Legends, IndyCar Racing II, Myst, Nascar Racing, EF2000 и Tomb Raider были неплохими играми, но истинным бриллиантом в короне, самой требовательной и продвигающей продажи была Quake. Игра id Software получила собственный порт под Verite с названием vQuake, выпущенный 2 декабря 1996 года. Он был написан Уолтом Донованом и Стефаном Поделлом из Verite при сотрудничестве с Майклом Абрашем из id Software.

Работа была довольно кропотливой, но порт заработал. Pentium 166Mhz, способный рендерить Quake в разрешении 320x200 с частотой 26 кадров в секунду, мог перепрыгнуть на 640x480 с билинейной фильтрацией и по-прежнему рендериться с частотой 22 кадра в секунду[8]. На практике игроки выбирали разрешение 512x384, которое и красиво выглядело, и позволяло обеспечивать на P166 32 кадра в секунду. В течение короткого промежутка времени vQuake бесспорно оставался наилучшим способом игры в Quake.

image

Программный рендеринг

image

Verite V1000

Большое спасибо пользователю @swaaye с форума vogons.org за скриншоты с V1000 и Fruit Of the Dojo за его высококачественный и простой в хакинге порт Quake на MacOSX[9].

image

Программный рендеринг

image

Verite V1000

Изъян Z-буфера


Чего не хватало V1000 (и косвенно его преемнику V2200), так это аппаратного ускорения z-буфера. Как только разработчик включал тест глубины, скорость заполнения падала до 12,5 мегапикселей/с и частота кадров уменьшалась вдвое. Как позже объяснил Стефан Поделл[10], vQuake (и все другие игры) портировались на V1000 таким образом, чтобы минимизировать чтение z-буфера.

Разработчики выяснили, что единственным способом обеспечения нужной скорости был перенос основной части работы в ЦП. В случае vQuake это означало, что карта будет использоваться как сверхбыстрый рендерер горизонтальных интервалов, который всегда выполняет запись в z-буфер, но считывание и сравнение z производит только при рендеринге врагов. И хотя разработчикам удалось создать хорошие продукты, последствия такого выбора архитектуры аукались ещё долго.

3dfx и падение Rendition


id Software выпустила GLQuake 22 января 1997 года. Он был реализован на основе miniGL (подмножества стандарта OpenGL 1.0, в котором, среди прочего, отсутствовали GL_LIGHT и GL_FOG). Этот двоичный файл открыл двери всем картам для PC с аппаратным ускорением. В этом отношении особо выделялись карты Voodoo компании 3dfx Interactive, их потрясающие показатели (41fps в разрешении 512x384 с 16-битным цветом на P166[11]) де-факто стали эталоном для 3D-акселераторов. Скорость заполнения V1000 в 25 мегапикселей/с, которая когда-то выгодно отличалась от программного рендеринга Pentium, теперь казалась посредственной на фоне 50 мегапикселей/с карты Voodoo, на которую даже не влияли z-тесты.

Ответом Rendition стала более мощная V2x00, которая парадоксальным образом усугубила ситуацию. Рекламировалось, что благодаря аппаратному z-буферу V2x00 была в два раза быстрее, однако ей не удалось улучшить даже частоту кадров в vQuake. Эта аномалия подорвала доверие покупателей и плохо отразилась на разработчике vQuake Стефане Поделле, который чувствовал, что ему нужно объяснить, почему производительность vQuake ограничивалась ЦП, а не GPU[12].

… моя репутация оказалась подпорченной тем, что VQuake и VHexen2 не стали работать быстрее на V2x00, поэтому я должен объяснить, почему так произошло.

[...]

Уолт и Майкл решили, что поскольку Verite 1000 не очень хорошо проявляла себя в пикселях с Z-буферизацией, то если позволить Pentium заниматься этой сортировкой интервалов, это сможет уменьшить количество пикселей, которые нужно отрисовывать Verite. Более того, мы смогли бы отключить в Verite функцию сравнения по Z.

[...]

… каким бы ни был чип Verite, ЦП доставалось очень много работы.

— Стефан Поделл

Более того, присутствовали значительные проблемы аппаратной архитектуры, которые изначально приводили к выходу из строя[13] V2x00. Для устранения проблемы потребовалось несколько месяцев, и даже после этого плата всё равно работала на частоте 50 МГц, в то время как NVidia NV3 и Voodoo2 уже достигли 100 МГц.

Третье поколение, основанное на V3300, могло изменить курс истории, но вышло слишком поздно. Проект был отменён в 1998 году, после того, как компанию Rendition купила Micron Technology.

Работая в Rendition, мы совершили много ошибок. Можно было выпустить v1000 на несколько месяцев раньше (и в течение этих месяцев не иметь конкурентов), если бы мы разрабатывали схему сами, а не передали в фаб. К тому же вызывал вопросы контроль качества чипа. Один парень в нашей компании потратил несколько месяцев на реализацию декомпрессии mpeg на языке ассемблера V1000, но так и не смог заставить её работать из-за непредсказуемых багов чипа.

vQuake работал хорошо только потому, что v1000 выполнял не так много работы. «Отрендерить этот список интервалов», «сгладить это ребро» — вот почти и всё, что он делал. Мы с Майком Абрашем потратили слишком много времени на обеспечение совместимости Quake с V1000, поэтому для дальней перспективы такая модель не подходила.

— Уолт Донован (архитектор алгоритмов)

После развала Rendition компания 3dfx удвоила усилия по продвижению Voodoo2, выдающиеся характеристики которой позволили смести всех конкурентов. Король 3D-графики на PC какое-то время правил на рынке. Затем игра продолжилась, на сцене появились новые конкуренты, и среди них были канадская ATI и почти неизвестная в то время компания под названием Nvidia.

Справочные материалы


[1] Источник: VGA Museum, V1000 Texel Fillrate (MTexel/s) reported as 25

[2] Источник: John Carmack .plan Aug 22, 1996 «at 512*384 it is almost twice as fast»

[3] Источник: 3dfx VOODOO1 Reference Rev. 1.0

[4] Источник: Review of the V1000

[5] Источник: Rendition Verite V1000 SDK

[6] Источник: The immaturity of the PCI bus [...] caused DMA bugs to surface

[7] Источник: RRedline Programming Guide

[8] Источник: Benchmarks to compare the Rendition Verite V1000-E and V1000L-P

[9] Источник: MacOSX X Quake port source code on github.com

[10] Источник: Stephan Podell BSS post

[11] Источник: Comparison of Frame-rates in GLQuake Using Voodoo1

[12] Источник: Stephan Podell BSS post

[13] Источник: wikipedia.com, Downfall section

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


  1. aik
    03.04.2019 15:07

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


    1. old_gamer
      03.04.2019 15:16

      Это в статике. В динамике же было совсем по-другому. Картинка с аппаратным ускорением выглядела совершенно шокирующе после программного рендеринга. Ну и не стоит забывать, что разрешение при аппаратном рендеринге было существенно выше, тоже.
      А когда 2й квейк показал цветное освещение, там просто крышу сносило. Но это уже без рендишн.


      1. aik
        03.04.2019 15:23

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

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


        1. old_gamer
          04.04.2019 09:55

          Ну может тогда стоило попробовать видеоролик показать, а не скриншоты?

          Думаю, конечно, стоило. Но где же взять живой V1000?


          1. aik
            04.04.2019 11:07

            Ну скриншоты-то где-то добыли? Да и 2000, судя по тексту, такую же картинку выдавала.


            1. old_gamer
              04.04.2019 11:12

              Я не знаю, где автор добыл скриншоты. Возможно, в гугле. Думаю, скриншоты проще добыть, чем видео — в те времена не так много было тех, кто выкладывал видео в интернет, а вот обзорщиков со скриншотами было уже прилично (печально вздохнул, вспомнив reactor critical)


      1. mistergrim
        03.04.2019 15:37

        Не выглядела она шокирующе. Единственный плюс для Quake от аппаратного ускорения — это, собственно, само ускорение. А вот отсутствие overbright, например — это жирнющий минус.


        1. OlegusMDH
          04.04.2019 09:32

          Ну конечно не выглядела… После 320200 софта и увидеть 640480 со сглаженными от опостылевших пикселей текстурами и
          многоцветный динамический свет. И все это с живой скоростью. Вы видимо не застали того момента.


          1. mistergrim
            04.04.2019 09:47

            Вас память подводит, не было в ускоренном Quake цветного динамического света.
            Сглаженные текстуры — плюс так себе.
            Всё остальное про ускорение, а не про картинку.
            Кроме того, в то время, когда ускорители стали более-менее доступны, уже и процессоры могли выдавать в софте побольше, чем 320?200.


            1. old_gamer
              04.04.2019 09:54
              +1

              Цветного не было, но само освещение с ускорителем выглядело прилично лучше. И все же 1й пентиум не мог в квейк больше 320х200, это уже был удел П2, что появилось значительно позже.


              1. mistergrim
                04.04.2019 10:29

                Не выглядело там освещение лучше. Если не считать убогий gl_flashblend, который следовало сразу же отключать.
                Насчёт разрешения — Pentium 166 в 320?400 выдавал около 25 fps, что было уже вполне играбельно, и выглядело неплохо. 512?384 — 18 fps.
                И ещё раз повторюсь — с ускорителем картинка была ХУЖЕ, из-за отсутствия overbrighting.


                1. old_gamer
                  04.04.2019 10:45

                  Не понимаю, чем вам не угодил флешбленд, летящие камни лавы он очень классно освещал, особенно видно это было в самом начале, в коридоре выбора сложности hard. Для меня лично это было одним из самых красивых эффектов от ускорителя. Да, желтые шары вокруг взрывов выглядели мультяшно, но все равно классно — все же о фотореалистичном рендеринге тогда никто не говорил, а красочно точно было при аппаратном рендеринге, даже несмотря на оптисизированную под 256 цветов палитру квейка, 16 бит цвет сильно улучшал картинку.
                  По разрешению, 512х384 было малоиграбельно, особенно когда было много врагов. А в 320х400 картинка без фильтрации не особо сильно отличалась от 320х200.


            1. OlegusMDH
              04.04.2019 10:21

              Зато во втором было и второй на софте мне тоже довелось проходить. Так что помню эффект от ускорителя хорошо


            1. OlegusMDH
              04.04.2019 10:23
              +1

              После каши пикселей так себе эффект от сглаживания? Ну да… Если мало довелось поиграть до этого то да


    1. FuzzyWorm
      03.04.2019 15:19

      Теплый лавовый ламповый цвет


    1. beeruser
      03.04.2019 22:40

      Скриншоты 768х576.
      В те времена играли в 320х200


      1. aik
        03.04.2019 23:12
        +1

        В софтвере — да, но и то, это для совсем уж слабых компов — ну или для сетевой игры. Если комп был помощней, то начинались попытки увеличить разрешение, хотя бы 400х300, или 512х384 какое-нибудь.
        А вуду1 позволяла в 640х480 пристойный фпс получить.


        1. beeruser
          04.04.2019 21:57

          О том и речь. Не стоит сравнивать раннюю акселерацию с софтверным рендером в одном и том же разрешении. Тем более на статичной картинке.


          1. aik
            05.04.2019 02:51

            А автор статьи именно это и предлагает сделать.


    1. engine9
      04.04.2019 10:10

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


  1. YMA
    03.04.2019 15:33

    Ностальгия… Был Rendition Verite 2200 — карточка забавная, vquake после софтового рендеринга впечатлял. Но драйвера под Win были кривы, как турецкая сабля… Помучившись с ней довольно долго, сменил на Riva TNT — земля и небо…


    1. Atton
      03.04.2019 17:31

      у меня похожая ситуация, друг некоторое время был несчастен с Rendition, как и я, а потом он сменил ее на Riva TNT. А я чуть подождав и завидуя ему обновился сразу до Riva TNT2, которая до сих пор рабочая где-то лежит.


  1. olegshutov
    03.04.2019 15:40

    В то время билиненая фильтрация выглядела так круто и нереалистично, что я как-то час играл с ней с 1 fps, просто наслаждаясь картинкой


  1. scg
    03.04.2019 17:29

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


    1. PatientZero Автор
      03.04.2019 20:04

      Судя по статье — да, учитывала:

      Capable of rendering perspective correct textured triangles


    1. olegshutov
      04.04.2019 05:11

      Для этого нужна аппаратная поддержка ф-ии 1/корень числа. Где-то в статье это упоминается, хотя по-моему не для всех карточек. Хотя во многих играх, в том числе по-моему в Квейке это приближенно-коряво аппроксимировалось хаком — про это даже статья тут была


      1. beeruser
        05.04.2019 16:50

        У Verite однотактовая аппроксимация 1/x, а деление на Pentium — 39 тактов.
        Поэтому в Quake делалась кусочно-линейная аппроксимация с одним делением на 16 пикселей.


  1. FadeToBlack
    03.04.2019 17:57

    Алгоритм антиалиасинга искал рёбра силуэтов и сглаживал их. (Подробнее об этой идее см. сайт humus.name, запись Geometric Post-Process antialiasing примерно от марта 2011 год — автор изобрёл эту технологию заново!)


    Однажды и я переизобрел что-то подобное. Очень простой подход, который работал на старых видеокартах! Но изобрел я это, когда это уже не требовалось, т. к. повсеместно применяли multisample AA.


  1. MonkeyD
    03.04.2019 20:26
    -17

    Пили видео на тубчике и ссылочку сюда. С удовольствием посмотрю))) (лень читать).


    1. vvzvlad
      07.04.2019 18:06

      Лучше бы вам было лень писать


  1. ffs
    04.04.2019 10:28

    А может кто поможет вспомнить, был одно время между Ати и Нвидией третий производитель видях. Я помню у меня еще тогда долго была устаревшая gf2mx400, и смутно помню читая обзоры во всяких "Компьютеррах" и "Моих Компьютерах" видел видел какого-то производителя, который почти догонял и красных и зеленых по скорости.


    1. daggert
      04.04.2019 10:34

      Матрокс? Вуудуу? S3? (:


      1. ffs
        04.04.2019 14:51

        Из этих скорее всего матрокс, правда уже не найду какие именно, но не суть.


        1. NickyX3
          07.04.2019 13:57

          Matrox G200 и G400 вполне себе конкурировали с NV, у ATI в это время вообще ничего подобного не было. G450 Parhelia, кстати до сих пор выпускается, просто Matrox как частная компания (им не надо оглядываться на акционеров) решила не гнаться за игровыми ускорителями, а сосредоточилась там, где у них всегда хорошо получалось — профессиональный сегмент, медицина, эфирное видео (титры и вот это вот все)
          Еще была Number Nine, вот реально интересные были ребята, жалко сдулись


    1. old_gamer
      04.04.2019 10:48

      PowerVR, наверное.


    1. veselovi4
      04.04.2019 14:40

      «матрас» же :). Matrox.Хотя нет. Пардон. Эти мх400 уже Nvidia.


      1. old_gamer
        04.04.2019 14:57

        G400 был вроде во время первых-вторых Джифорсов, а 2МХ имхо появились во время 3х. В то время ничего особо топового у Матрокса уже не было. Parhelia это скорее уже времена GeForce FX. Хотя PowerVR Kyro тоже не особо топовым был.


        1. aik
          04.04.2019 15:00
          +1

          G400 вроде как с TNT2 сражались. 99-2000 года. А gf2mx были популярны в 2002-2005 (а играть на них пытались до 2007 минимум).


          1. old_gamer
            04.04.2019 15:02

            Да, вы правы. Попутал, память уже не та ))).
            Ну тем более, во время 2MX у Матрокса, значит, уже ничего не было на игровом рынке.


    1. elmm
      04.04.2019 15:13

      Много их тогда было. S3 был в какой-то момент близок к успехо. В Savage они первыми реализовали сжатие текстур и в ту же память, что у конкурентов, можно было засунуть больше текстур или текстуры большего размера. Рынок десктоп ускорителей они проиграли, а формат сжатия текстур выжил.


      1. old_gamer
        04.04.2019 15:19

        Savage2000 еще и был первым ускорителем с аппаратным T&L. Но это ему мало помогло, к сожалению.


        1. aik
          04.04.2019 15:44

          А первым «ускорителем», наверное, был Diamond Edge 3D. Это который сегасатурновские игрушки ускорял.


          1. old_gamer
            04.04.2019 16:18

            Формально, еще для IBM 5160 существовал ускоритель, который умел какие-то базовые преобразования 3Д. Но ни он, ни NV1, которая использовалась в Diamond Egde 3D, не поддерживали рендеринг треугольников, на котором базировались OpenGL и Direct3D.


            1. aik
              04.04.2019 16:21
              +1

              Ну так едж3д вроде хвастался тем, что он рендерит прогрессивные квадраты, а не устаревшие треугольники. :)


              1. old_gamer
                04.04.2019 16:24

                Да, было дело )


      1. veselovi4
        05.04.2019 12:21

        я на S3 Virge умудрялся Blood запустить в «3D»… это была песня!!! Красотень неописуемая ))


    1. mistergrim
      06.04.2019 06:16

      3DLabs Permedia, навскидку.


  1. panc
    04.04.2019 11:48

    Помню была у меня видеокарта Dimond 3D на чипе Rendition Veriti, родные драйвера не позволяли играть в Quake 3, не было там поддержки OpenGL. друг посоветовал установить драйвера Rendition, и Quake 3 стал запускается, вот только мой ЭЛТ монитор LG 15", при смене разрешения экрана с вероятностью 50/50 уходил в спячку, приходилось сворачивать игру и переходить обратно на рабочий стол, затем снова в игру, так я и мучился с этим)))


  1. axe_chita
    06.04.2019 15:44

    Как владелец Diamond Stealth II S220 на Rendition Verite V2100 в формате PCI могу вспомнить её с большой благодарностью, после VirgeDX она была реальным графическим ускорителем. Полноценная поддержка DirectX и OpenGL без минидрайверов была очень к месту. Плюс можно было её разогнать, вот только не помню чем это выполнялось. Толи в драйверах этобыло, толи PowerStrip помогал. Единственное, насколько я помню, была проблема с руссификаторами в vesa2.0 режимах, она либо слетала, или вешалась в dos-окне. Проблему решил кардинально прошив bios с русскими шрифтами.


  1. axe_chita
    06.04.2019 16:16

    btw видео с Verite 1000 в Quake2