Вперёд в п(р)ошлое. TNT — Explosive disclosure

в 15:02, , рубрики: Nvidia, old games, Видеокарты, игры, старое железо

… Пока операционная снова пашет 4/5, откуда каждый день вылетают каркасы железяк и ошмётки микросхем маты и скриншоты в большом количестве, можно констатировать, что на сейчас уже имеется некоторый материал, который я и попытаюсь ниже скомпоновать в удобоваримом виде.

Начнём с того, что хотелось бы начать. С пояснения причин и целей данного поста. Пост как бы сообщает три очень важных момента:

Не доверяй, а проверяй!

Пока ты молод, нужно бить по наковальне!

Бери от железа всё (и не отдавай обратно)!

Теперь о целях.

Воистину, давайте для начала вспомним (без цитат и пруфов во имя спокойствия) какими были обзоры раннего hardware-3D на PC в конце 90-х начале 2000-х…

  • Исчерпывающее внимание так горячо любимым разрешениям 800x600 и 1024x768. Вас не смущает, что измерять в 99 году какая из карт при всех задранных новомодных фичах покажет-таки 60 fps в разрешении 800х600 несколько странно? Ведь эти карты уже имели поддержку больших разрешений в 3D — вот, что нужно было тестировать!
  • Подробнейший обзор «2D-составляющей» (не хватало только графиков осциллографа). Это ведь так важно, когда у тебя ЭЛТ-монитор!
  • Как минимум охват всей теории, но никакой конкретики; Даже прогнозы на будущее!
  • Куча красивых графиков из Йокселя с какими-то запредельными цифрами. Вам никогда не было интересно, что те циферки означали? Полагаю, сумму в долларах, не иначе.

    … Сейчас вообще как: видяху вставил, дрова сами скачались, игру запустил, та сама пропатчилась, графику настроил, фрапс включил и жжёшь. Чего уж говорить, живых апи-то всего два осталось, да и то OGL в топ-играх всё реже встречается.

    А что было раньше? Было больше вендоров, больше api, а, значит, и производительность сравнивать было несколько проблематичнее, потому как много труднее и дольше. А мониторить так тогда вообще никто ничего и не думал. Вот честно, ну-ка покажите мне хоть один обзор тех лет, где идёт сравнение видеокарт по производительности и при этом предоставлены шоты какой-нибудь мощной игры (например, на движке unreal), где стоят результаты онлайн мониторинга хотя бы базово fps и загрузки цп?
    С ноября 95 года. Не было. Ни единого обзора, содержащего такие шоты. Шок, инфаркт, дес :x
    Тогда вообще вряд ли кто-нибудь всерьёз использовал даже FRAPS. А, значит, всё было на глаз (ну почти).​

  • Ну и на сладкое конфиги, на которых всё тестилось, вы помните? Закрыв глаза на материнку (чипсет), хорошо, если хотя бы проц соответствовал запросам видяхи. А вообще-то нужно было ещё в фоне что-то мониторить (? свободные ресурсы?).

    Ладно железо, да где вообще там можно было получить приемлемое сравнение двух карт разного вендора, если чаще всего обе карты сравнивались в… ну навскидку: 3DMark, Quake3, ещё_одна_массовая_игра_средней_требовательности.
    О таких гигантах как Unreal или Hitman почему-то никто даже не вспоминал. А ведь это были топовые движки (которые ни одна современная карта не могла нормально вытянуть) с массой настроек, с поддержкой нескольких апи, с поддержкой человеческих разрешений (больше 1024х768).​

И не говорите мне ничего про нашу экономику и ЭЛТ-мониторы 15 размера. У штатников в то время уже продавались если не LCD, то точно плоские ЭЛТ с поддержкой человеческих разрешений! Потенциал был и высокий. Вообще потенция, говорят, важный параметр. Вот её и померяем.

Ещё в марте месяце мне всё это окончательно не дало спокойно жить, потому что «как же так, я что опоздал на 15 лет???». Ну и я решил сдать на ваш непредосудительный анализ парочку обзоров, по чипу за каждый.

Но что же здесь?​

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

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

А будет здесь лотс оф подробных остановок на каждой плате и её особенностях: будет мониторинг, сравнение в разных апи, с разными твиками и разгоном. Анализ входных данных, моделирование дискретной случайной величины двадцати шестью итерациями, вычисление дисперсии, построение графика интегральной функции, точно описывающей полученную картину, субъективная и аналитическая оценки. В общем совершенно топорный подход, которым почему-то всегда пренебрегали обзорщики.

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

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

Почему WinME. Так ведь флешки сразу работают, не синеет от 768Мб памяти… Мало? А вот за что ещё я полюбил WinME:

  • Авторефреш отсутствует практически везде;
  • Полная нестабильность ОС. Завис полноэкранный процесс, хрен завершишь;
  • Но из синего экрана по традиции можно выйти, нажав Anykey.
  • Ось консерватора. В интернеты нормально уже не выйти: последний даже сторонний броузер не то, что html5, javascript-то с трудом поймёт. Зато загружается как семёрка на SSD. В общем, ось создана для продуктивной работы.
  • Самый сложный квест — вовсе не дрова. Попробуйте-ка найти рабочее ПО для мониторинга в 3D. Есть вот эверест — в фоне работает. Но вывести в 3D чем? Да, пришлось изучить вопрос месяц-другой. Самое классное было когда я впервые что-то пробовал ставить:
  • поставилось приложение. Запускаю. Обновите, пожалуйста, винду до более новой версии!​

Потом уже осторожнее выбирал. И то, в D3D мониторинг так толком и не заработал...

Теперь. Напоиграться я выбрал игру Deus Ex. Причин тому несколько.

Во-первых, непройденная игра детства, недоступная по системным требованиям. Играл у брата с перерывами по месяцу. Очень смутные воспоминания о недосыпе в результате задержки на «ещё 5 минуточек» до 2 ам. Настолько смутные, что в процессе недавнего прохождения оказалось, что мне удалось тогда пройти довольно-таки далеко… Уже давно хотелось пройти Deus Ex без тормозов на максималке (!!! да так, чтоб масштабы детализации потрясли!!!) — чем не повод?

Во-вторых, серьёзно. Игра на движке Unreal Engine 1. Мощщщь, которую предложило в 1998 году это двигло:

  • поддержка абсолютного большинства 3d-фич вроде трилинейки, анизотропки, мультитекса и всяких лайтнингов;
  • поддержка 16-канального звука, наложения эффектов и позиционирования звука. Поддержка аппаратной обработки звука (да, такое тоже когда-то было актуально ;))
  • поддержка 5-ти 3d-renering api!!! Вам не показалось: кроме DirectX существовало ещё как минимум 4;
  • Владельцам карт 2d-only (это которые без аппаратного 3D-ускорения): вас ждёт полноценный software-renderer!!! :yes:
  • всё вышесказанное нужно было как-то туда впихнуть и сделать так, чтоб всё работало :whistling:
  • из всего выше следует ниже: движок успешно продавался и внедрялся.

Краем глаза

image

Перед вами снова та самая легендарная Крива, убийца 3dfx (в лице ASUS V3800PRO). Данное утверждение показалось сомнительным, потому с неё и начнём.

image

Поддерживает AGP4x, а вот Sideband'а кстати у неё нет. Ну вот теперь и заценим важно всё это или нет ;)
… На остальные фишки типа фичеконнектора и тв-тюнера давайте положим…

Ближе к сердцу

Карта построена на чипе RIVA TNT2 PRO. 1999 года рождения.

image

Вообще TNT — это TwiN Texel. То был первый в истории десктопов ! один! чип, способный накладывать две текстуры за такт. А вот это — уже TNT2.
Данная карта (PRO) — это как бы изначально разогнанная версия стандартного TNT2 (к слову, в ассортименте была ещё ULTRA — это как бы изначально разогнанная версия PRO). Работает на 142/166 (чип/память).​

image

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

Однако что всё это значит на самом деле и как это посмотреть на практике? С этим вот и разберёмся.

Реализация

Встроенные дрова в winme! очень! старые, с ними даже quake3 не запустится, сообщив, что ваш opengl устарел или попросту отсутствует.
Драйвера от асус для тнт2 никуда не годятся. Вы только посмотрите на обилие таких понятных и доступных каждому школьнику опций, как Расширение буферной области или же Режим трансонтрапсон… чёрт…

image

ОМФГ, Бедные люди! А ведь есть ещё драйвера ForceWare аж от !2005! года с поддержкой аж D3D9. Deus EX с ними замечательно артефачит. Теперь становится понятно, почему владельцы карт так изнемогали поменять её на вуду — кажется, нормальных дров за всю историю для карты никто так и не написал.

А ещё есть известная утилита, написанная нашим соотечественником Unwinder'ом — RivaTuner.

I have only two words for the developers to say: user interface!!!

Надо сказать, достойное усовершенствование серии. Как пользоваться утилитой окончательно я понял только спустя, наверное, пару суток. И то, обилие вкладок и скрытых возможностей реестра до сих пор для меня осталось загадкой… Во всяком случае, главное я получил: возможность низкоуровневого разгона карты.

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

image

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

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

ВАЖНО:
Все настройки графики в игре — на максимум!!! Это значит примерно следующее: если что-то красивое и/или полезное можно включить, мы это включаем.
Карту сразу же разгоняем со штатных 142/166 почти до уровня Ultra (180/210). А Почему бы и нет? На деле разгон даст кадров 5-7. Чтож, тоже неплохо. Выше гнать не пробовал, уверен: начнёте собирать артефакты.
Разрешение в игре для этой карты подобрал 1280x1024. Всё, что ниже, меня просто не интересует (не интересовало на момент написания абзаца). Всё, что выше, — это уже не её планка. Итак показывает меньше 30 кадров почти везде.

Значит, поехали по технологиям.

API и цветастость

Карта стандартно умеет Direct3D и OpenGL.

Чего?

… Сегодня, наверное, не все уже понимают, что такое графический API. Давайте так: все знают про DirectX. Он состоит из DirectInput (сегодня XInput), DirectDraw, Direct3D, DirectSound и сегодня чего-нибудь ещё. Так вот то всё разнообразные api, какой для чего понятно из названия. Если брать Direct3D API — это что-то вроде программного инструмента для рисования 3D с использованием аппаратных возможностей самой рисующей карты. Вот это важный момент. Поддержка картой того или иного API говорит о том, можно ли с помощью этой карты рисовать использую конкретные фишки конкретного api. Производительность в каждом из api, конечно же, разная. Потому что реализация разная…

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

Если кто интересуется, в чём разница.

Значит, тут несколько моментов. Начнём с теории. Бывает картинка 16 бит на пиксель. Это значит, что на каждый из трёх цветов отдаётся по сколько бит? Да ни черта это не значит. Потому что типичная картинка для игры чаще всего может быть закодирована одним из следующих способов:

image

Кто не понел: 16-битную картинку можно закодировать как RGB565 (красный, зелёный, жёлтый), а можно как ARGB1555. A — это альфа-канал. Нужен он для обозначения прозрачности текстуры. На том оставлю вас размышлять над предназначением остальных вариантов.
По сути видно следующее: мало того, что цветовой спектр «тысячи цветов» (он же Хайколор, он же 16бит) явно не покрывает человеческий (2^5 x 2^6 x 2^5 = 65536 значений цвета), но ещё и приходилось выбирать, какому из каналов отдавать предпочтение по ситуации.

Обе проблемы решил Труколор (32бит). Там всё почти как у Маркса: всем по потребности, всем по возможности. Кстати вообще-то цвет 24битный, 8 бит под прозрачность ведь.

Оборотная сторона медали угадаете какая? Правильно, размер. Такие текстуры (если говорить об игре) будут весить больше до двух раз. Только не стоит думать, что в играх, где был выбор между 16- и 32-х битными текстурами, хранились оба вида. Конечно же, 32бита просто конвертировались.

Кстати о играх. Шоты сделаны непрофессионально, но смотреть на воду и небо.

image

image

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

image

… Ладно, стадо разбежится…

Nvidia позиционировала карту как мощный 32-битный конвеер. К слову, у конкурента за именем 3dfx был только 16-ти битный цвет и он пал в этой битве. Ослеп?

Чтож, посмотрим на картинку в разных API, а заодно попробуем найти отличие между 16-битным и 32-битным цветом ;)
Как обещал, дальше везде будут шоты с мониторингом и всеми делами, где это возможно; размеры оригинальные (подписи слева внизу жёлтым — мои, признаюсь...)

image

image

image

image

Ну что тут скажешь…

  • Во-первых, хочу заметить, что на самом деле в игре всё выглядит "несколько" ярче… Скриншоты эти честные и делаются средствами движка. Вот честно, это место было очень наглядным, правда, я старался :D
    Вообще с яркостью в игре большие проблемы. Вот то, что вы видите, это яркость выкручена на 100% По дефолту стоит 50% Понимаете? Я слышал про фикс, но вот ставить его как-то было уже поздно. Да и атмосферность хорошая… В конце концов, кому нахрен сдались эти скриншоты? И тааак сойдёт… Ладно, не расстраивайтесь, будут и ещё скриншоты.
  • Во-вторых, можно заметить разницу между 16 и 32bpp в Direct3D: если вы вернётесь к шотам, увидите страшную рябь в центре у d3d_16bpp. Такое вот качество рендеринга у TNT2. У других карт такого обычно нет.
    В OGL разницы в цвете нет вообще. Это говорит о том, что игра жульничает и всегда отдаёт текстуры в каком-то фиксированном формате. В каком именно неинтересно. Интересно, что настройка битности цвета не играет роли в OGL.
    Вообще же, если скачаете на комп и выкрутите в фотожопе яркость, увидите разницу в api. Она есть и в цвете и в прорисовке, но довольно незначительная. Так что вряд ли 3dfx тогда ослеп… вот уж не думаю.
  • В-третьих, мониторинг (справа сверху жёлтым) вы увидели только в OGL. Почему? Да потому что в те далёкие только неизвестные мне программы умели мониторить в D3Dx, который используется в Unreal Engine 1.
    Плюс к тому проц в WinME всегда загружен на 100%. Видимо, это его кредо (проца). Достаточно войти в винду и нажать ПУСК!
    Памяти видно что за глаза. В общем видно, что дальнейший мониторинг бессмысленен, ну а кадры нам и сам Unreal Engine посчитать может (внизу под инвентарём белым по центру)

AGP

Как уже было сказано где-то там выше, карта умеет AGP4x. В то время это было новаторство. Даёт ли это что-нибудь? Мы это сейчас обязательно выясним, но для начала я особо «сведующим» приведу настройки Unreal engine-на для D3D (для OGL интересной нам опции вообще нет).

image

Как видно, я включил DiME. Так вот, эта опция в нашем случае ни на что не повлияет. В криве тнт2 всё ещё не использовался agp-texturing. Если верить слухам, AGP-aperture использовалась только как промежуточное хранилище перед отправкой текстур в локальную память. Это известная недоработка чипа и её запросто можно нагуглить.

Ну вот, прекрасно, теперь можно начинать мерить потенцию:

AGP2X

image

Напомню: !!!FPS считается движком внизу шота!!!

image

image

Кстати вот тут видно разницу между api. Посмотрите на отражение шара.​

AGP4X

image

Заметьте, ни на один параметр скорость AGP не повлияла!!! На практике:

image

image

Ну ведь видно, что карта не выдаёт даже 35 кадров в agp2x, а подъём до agp4x ничего вообще не меняет? Я очень не думаю, что не хватает серверного тулика 1.4Ghz, который, простите, вышел спустя три года. Памяти точно хватает. Соотношение FSB: DRAM — 1: 1, и я уверен, жёсткий успевает.
Думаю, чип просто давится и ничего тут не поделаешь. Маркетинг такой маркетинг.

Трилинейка.

Вот тут самое интересное. Можно процитировать себя.

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

Со, чудесный движок UE1 позволяет всё это проверить не отходя от кассы. Но проверить можно только в D3Dx. В OGL мултитекстурирование через опции игры не настраивается.

Что проверить? Ну… В TNT2 впервые была введена трилинейка. Но использовать её одновременно с мультитекстурированием чип не справлялся. А надо, ибо конкуренты! Поэтому она как бы была, но работала в двух вариантах: настоящая трилинейная фильтрация без мультитекстурирования, либо аппроксимация (что проще) и мультитекстурирование.

Для начала попробую объяснить, что вообще такое трилинейка (может, не слишком удачно)…

Трилинейка это развитие билинейки. Применяется только к 2D-объектам, которые находятся на расстоянии от игрока и близко друг к другу. Хорошим примером может служить, например, пол или стена, состоящие из однотипных плиточек, которые вплотную прилегают друг к другу. При отдалении от игрока плиточки должны уменьшаться (это кстати зовётся «мипмапинг»), что и происходит, но в результате уменьшения между плиточками становится заметен резкий переход, теряется однородность общей картины. Ну вот трилинейка и призвана исправить это. В общем и целом она усредняет крайние пиксели до общего значения цвета...​

Так. Это настоящая. А аппроксимация что тогда делает?… Давайте, я лучше шоты покажу.​

Значит, пойдём путём обзорщиков середины 90-х. Выставим 640x480. Теперь всем смотреть на сглаживание ламп на потолке в коридоре и сглаживание знака Radioactive слева от прохода!!!

image

image

image

image

Вы тоже не видите разницы? На самом деле, она есть, просто вам нужно сейчас натянуть эти 640x480 на свой 20+ дюймов монитор и тогда справедливость восторжествует (сегодня в каждом броузере есть каретка). Понятно же, что на большом разрешении маленькие картинки все одинаковые…

Если всё же кто натянул, тот заметил, что при включенном мультитекстурировании:

  • Падает общий уровень яркости в игре. Это известный баг движка.
  • Трилинейка с мультитекстурированием на скринах выглядит немногим хуже билинейки. Но в игре разница будет тем заметнее, чем больше ваш монитор. Это факт.

Вернёмся к 1280x1024.

image

image

Ну вот тут лучше видно, как фонит аппроксимация. Ужас, правда? Вот честно, если бы мне не сказали, я бы никогда не заметил. Моё мнение, прозвище «крива» чип получил незаслуженно. Он же не виноват, что вы играете в 640x480 в 1998 году, правда?

И хотя выискивать огрехи аппроксимации с лупой в 640x480 среди квадратиков мне кажется идиотизмом, всё же для тех особых случаев, которым чертовски необходимы шашечки чтобы ехать, наш соотечественник Unwinder предлагает такое же особое решение:

image

no more comments…

Ну так вот, знаете...​

Очень достойно. 1280x1024x32bpp. 20-30fps в разогнанном состоянии. По мне, так если мышь начинает тупить в меню, а инвентарь в бою прорисовывается с задержкой в полсекунды, можно подождать. Нельзя было, например, на пентиуме 150 и 2D-видеокарте подождать своего хода в Героях3 по 5-7 минут, или, например, нельзя было подождать в Квейк 2 в коперативе, где ракеты появлялись уже потом, а задержка звука составляла около секунды. Так что 20-30 кадров — это уже вполне играбельно.

Не нравится, не хотите гнать? Ну и играйте в 1024x768 и ниже. Или в 16-битном цвете.

Но всё-таки, конечно, вуду3000 была быстрее, пусть и только с 22битами. Жаль 3dfx, но кое-что он всё-таки нам оставил…

...TBC...

Использованная литература и приветы

  • В таких делах начинается всё, как правило, всегда с вики.
  • Затем всегда следует ixbt...
  • И hwp.
  • А на сладкое… на сладенькое — gamegpu и vogonswiki.

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

  • Открывателям горизонтов и срывателям покровов — комьюнити VOGONS. За кучу уникальных исследований и наработок!
  • Christian Ghisler'у низкий поклон за TC. Пользуюсь с детства. Сколько раз воспользовался синхронизацией папок за время написания не представляется конечным числом… Купил.
  • Администрации old-games.ru за возможность быстро и бесплатно скачать 20 игр скопом только ради того, чтобы заценить структуру файлов и однажды запустить. Простите за трафик ;)

З.Ы.

В процессе тестирования столкнулся с проблемой мониторинга. На форуме, откуда родом сам, недавно набросал кратко о том, как мониторить на Win9x/me. Всех понимающих и разделяющих (идею) приглашаю делиться опытом, ибо подобной инфы нигде вообще не нашёл (неудивительно).

Автор: Goblinit

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js