Вернуться   TiVi форум > Дневники > slonka

Оценить эту запись

Мои видеокарты. Часть 3.

Запись от slonka размещена 30.07.2018 в 01:06
Обновил(-а) slonka 02.08.2018 в 20:13



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

Первую часть можно прочитать здесь - http://tv-games.ru/forum/blog.php?b=2373
Вторую здесь - http://tv-games.ru/forum/blog.php?b=2374


Оформление обеих частей восстановлено.

В третьей части я сделаю некоторое отступление и не буду описывать принадлежавшие мне видеокарты. К ним я вернусь в следующих частях. Сейчас же я приведу хронологию революционных изменений в игровых 3D акселераторах. Это поможет лучше разъяснить контекст.

Первая революция. Появление игровых 3D акселераторов.

Первым, вероятней всего, был 3dlabs GLINT 300SX, вернее его игровая ипостась, установленная в Creative 3D Blaster VLB. 1994-1995.





Creative 3D Blaster VLB. Профессиональные ускорители на чипе GLINT 300SX появились в 1994 году. Но 3D Blaster был выпущен в 1995 и в нём стоял "тюнигованный" чип, который "заточили" под игры.

Здесь надо понимать то, что графический конвейер существовал задолго до появления 3D акселераторов, а тем более игровых. Всё то, что нам преподносят в виде красивых картинок и фраз типа "реалистичные эффекты прозрачности", на самом деле, не более чем математические расчеты, которые, до появления 3D ускорения, делались с помощью CPU. Разработчик пишет подпрограмму для наложения текстур или, например, для имитации рельефа, которая отправляет все расчеты прямиком в центральный процессор. Если не гнаться за реальным временем, то уже в 1987 году, на компьютере Amiga 500 можно было делать красивейшие 3D изображения.



Результат работы программы Sculpt 3D на Amiga 500.



Компьютер Commodore Amiga 500.

Вдумайтесь! 31 год назад! На бытовом компьютере размером чуть больше клавиатуры!

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

Так что же сделали разработчики 3D ускорителей? Всё очень просто - они реализовали в своих микросхемах вычисления по основным алгоритмам графического конвейера, в первую очередь наложение текстур. И добавили другие функции, превращающие картинку в "графон". Такие как затенение по Гуро, мипмаппинг, сглаживание, билинейная фильтрация, альфа-блендинг и прочие. Во-первых, теперь программисту не нужно было самому писать алгоритмы для реализации этих функций с помощью CPU. Он пользовался заложенными в железо - отправлял данные видеокарте и давал команду API, какую из фиксированных операций с ними произвести. Во-вторых, будучи реализованными в чипе, специально заточенном под обсчет графики, эти операции выполнялись в разы быстрее. Мало того, многие алгоритмы вообще бесполезно было пытаться реализовать реалтайм без аппаратного ускорения. То есть, после появления 3D ускорителей, картинка 3D игр стала выглядеть гораздо красивей и/или игры стали работать гораздо быстрей.



Одно из самых известных в Сети изображений, поясняющих то, о чем я пишу.

Но у каждой медали есть обратная сторона. Все алгоритмы расчета 3D графики были заложены в ускорители "намертво". То есть, разработчикам предлагался фиксированный набор аппаратных фич, за рамки которых можно было выйти только вернувшись к расчетам на CPU. В результате, при аппаратном ускорении, игровая картинка приобретала большую красоту, но могла потерять некоторые эффекты, реализованные при программном просчете. Терялась гибкость. Поэтому, производители железа, участвующие в гонке 3D акселераторов, старались насытить свои новые продукты всё большим количеством возможностей. Больше фич - больше гибкость. Тогда это выглядело правильным.

Вторая революция. Взятие Setup Engine "на борт" видеокарты.

Ключевые слова здесь - растеризация полигонов, её же называют установкой треугольников. После этой операции, будущая картинка получает пиксельное представление, а треугольники приобретают ту самую форму, которую должны принять на плоском экране. На этом этапе также отсекается определенная часть скрытой геометрии, что очень ускоряет дальнейший процесс, так как нет смысла обсчитывать то, чего не видно на экране. Здесь пионером является 3Dfx Voodoo Graphics. 1995-1997.





Orchid Righteous 3D - первый ускоритель на чипсете 3Dfx Voodoo Graphics. Был представлен в 1995 году. Но массово такие ускорители появились в ПК только в 1997 году.

Грубо графический 3D конвейер можно разделить на две большие стадии - операции с геометрией, то есть с вершинами полигонов моделей и их атрибутами, и операции с пикселями. А операции с геометрией, в свою очередь можно разделить на T&L (Transform and lighting - Трансформация и Освещение) и Setup. Voodoo Graphics был очень быстрым чипсетом, за счет чего приобрел невероятную популярность. Можно даже сказать, что до появления продукта от 3Dfx аппаратно ускоренные трехмерные игры находились в разряде баловства. А этот чипсет окончательно и бесповоротно принес игровое 3D в ПК и не в последнюю очередь из-за своей потрясающей скорости, одной из важнейших причин которой была аппаратная реализация Setup Engine.

Третья революция. Аппаратные T&L (Transform and lighting - Трансформация и Освещение).

Перемещение в видеокарту оставшейся части конвейера явно напрашивалось. Здесь надо быть честными и сообщить о том, что игровой акселератор с поддержкой T&L - Savage 2000 от корпорации S3 был представлен на один день (!) раньше, чем GeForce 256 от Nvidia. 1999 год.





Diamond Viper II - видеокарта на чипе S3 Savage 2000.

Упрощенно объясню почему аппаратные T&L были так важны. Вот игровая картинка:



Это Infinity Blade для iOS - игра гораздо более современная, но для наших целей иллюстрация подойдет.

А вот её геометрия:



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

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

Ослу понятно, что эти изменения надо просчитать, причем на каждый кадр. И этим долгое время занимался центральный процессор компьютера. Видеоакселераторы включались только на этапах операций с пикселями, но не с вершинами. Скорость заполнения (fillrate) у Nvidia Riva TNT2 Ultra составляла до 300 млн пикселей в секунду. Видеокарта была способна "обтянуть" текстурами 8 млн полигонов в секунду. Даже самый мощный CPU того времени с трудом мог предоставить ей столько геометрии. Дальнейшее увеличение количества пиксельных операции без увеличения количества полигонов давало разве что возможность играть в высоких разрешениях. Та же TNT2 Ultra могла тянуть разрешение 1900х1200 с 32-битным цветом. Двадцать лет назад! При этом игроделы в совершенстве должны были владеть низкополигональным моделированием, иначе всем их разработкам была бы грош цена. Необходимость ускорить обсчет геометрии полностью созрела.

Из двух упомянутых мною первых ласточек с аппаратными T&L, карты на Savage 2000 быстро слились, потому что эту фичу так и не смогли заставить нормально на них работать. А вот GeForce 256 пошел, как говорится, "в массы". Это потому что и без T&L этот чип работал весьма быстро, так как имел 4 пиксельных конвейера. Разработчики же не очень торопились применять аппаратные T&L в своих играх, потому что видеочипов без их поддержки было много, а GeForce 256 пока был один. Но меньше чем через пол года подтянулась ATI со своим Radeon, а Microsoft ввела поддержку аппаратных T&L в DirectX 7, и дело снова двинулось вперёд.

Четвертая революция. Шейдеры.

Их поддержку объявили еще в GeForce 2. В нём был заявлен блок NSR (NVIDIA Shading Rasterizer), который в действительности мог обеспечить лишь попиксельное затенение (per-pixel shading). GeForce 2 оснащались 4 пиксельными конвейерами по 2 текстурных блока на каждом. Между двумя текстурными блоками каждого конвейера была устроена некая "прослойка", которая, при смешивании текстур, могла обеспечить применение эффектов к каждому пикселю. Это давало большие возможности и было шагом к тому, что мы сейчас понимаем, как шейдеры, но настоящие шейдеры появились только в Nvidia GeForce 3, в 2001 году.





Видеокарта ASUS V8200 Deluxe на чипе Nvidia GeForce3.

Так что же такое эти так воспеваемые великие и могучие шейдеры? Помните, я писал о фиксированных наборах алгоритмов расчета 3D графики, намертво заложенных разработчиками в ускорители? До появления GeForce3 всё так и было. У создателей игр руки были связаны возможностями видеокарт. Если акселератор не мог делать какой-то эффект или операцию, то от них приходилось отказаться. GeForce3 дал возможность разработчикам игр самим писать алгоритмы для графического процессора, как на этапах операций с вершинами, так и на этапах операций с пикселями. Шейдеры - это программы, написанные для графического процессора. Вместо того, чтобы пользоваться встроенным набором эффектов, можно написать шейдер для реализации вашего собственного алгоритма.



Шейдерное преломление в демо от Nvidia.



Шейдерное искривление пространства в игре Timeshift.

Разумеется, писать можно было не что угодно, как угодно и какой угодно длины, а по определенным правилам, связанным с тем, как поддержка шейдеров реализована аппаратно и в API. Например, в GeForce3, пиксельные шейдеры - это гибко настраиваемое одновременное взаимодействие его 8 текстурных блоков. Надо отметить, что с момента выпуска DirectX 8, поддерживающего шейдеры, Microsoft взяла быка за рога, перестала идти на поводу у производителей видеокарт, а в тесной связи с ними стала принимать непосредственное участие в разработке новых версий шейдерных моделей. Причем, производителям железа нередко приходилось подтягиваться под инновации Microsoft и конкурентов. Не отставали и разработчики OpenGL.

До следующей революции в железе видеокарт, ничего особенного не происходило. Нет, изменения были и весьма существенные - увеличивалось количество вершинных и пиксельных конвейеров, менялась и оптимизировалась архитектура, с каждой новой шейдерной моделью всё больше устранялись аппаратные ограничения, мешающие полноценному программированию GPU. Игровая картинка планомерно улучшалась. Но кардинально не менялось ничего.

Пятая революция. Унифицированная шейдерная архитектура.

Здесь всё понятно. Конвейеры перестали делиться на вершинные и пиксельные. Вместо этого появились унифицированные потоковые процессоры, которые могли обсчитывать любые из типов шейдеров. Мало того, они могли считать физику и делать другие неграфические расчеты. Носитель революции - Nvidia GeForce 8800 GTX. Представлен в конце 2006 года.





Видеокарта Foxconn GeForce 8800 GTX.

В середине 2006 года, мощнейшей из одночиповых видеокарт была ATI Radeon X1950 XTX. Она обладала 8 вершинными и 48 пиксельными конвейерами. Обогнать её мог только двухчиповый кентавр Nvidia GeForce 7950 GS2. Появившаяся через пол года 8800 GTX, со своими 128 потоковыми процессорами, разорвала оба предыдущих флагмана в клочья. Особенно досталось X1950 XTX, в большинстве случаев 8800 GTX обгоняла её в два раза. Ради правды, следует сказать, что впервые унифицированную шейдерную архитектуру представила не Nvidia, а ATI - в чипе Xenos, графическом процессоре игровой приставки Xbox 360. Но я пишу о видеокартах ПК, и здесь первой была Nvidia. С появлением унифицированной шейдерной архитектуры, пришла CUDA и другие GPGPU технологии. Порядком попивший геймерской крови майнинг на видеокартах тоже стал возможен благодаря новой архитектуре.

Через 10 с хвостиком лет после рождения 3D видеокарт, разработчики пришли к тому, с чего всё начиналось на CPU - программируемым расчетам, только теперь на GPU. Ведь главное в графике это вычисления, а не конвейер.

А что дальше? А ничего. Вы спрашивали, почему нет новых революций в игровых консолях? Ведь именно они всегда были носителями новшеств. Да потому что революций в игровом 3D нет вообще, и, судя по текущим анонсам, не предвидится. 12 лет происходят эволюционные изменения и только. Унифицированная шейдерная архитектура есть даже в ваших мобильниках. А видеокарта AMD Radeon Vega 64 щеголяет 4096 потоковыми процессорами. Быстрее, выше, сильнее. Но ничего революционно нового.

Только нужна ли эта новизна? В последнее время создается впечатление, что разработчикам игр дали больше, чем они могут сожрать. Их даже как бы приглашают писать игры левой ногой - железо простит. Вспомним игру RiME, которая на максимальных настройках, в разрешении 1680х1050, умудрялась у меня тормозить на GeForce GTX 1050. И даже когда поставил GTX 1060, она не выдала 60 к/с.



RiME.

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



Ведьмак 3.

Давайте лучше подождем с революциями. Того и гляди, сейчас новых видеокарт накидают, на подходе Nvidia GeForce 1180, а разработчики эти еще как следует не освоили. Вон, Wolfenstein II на Switch впихнули. Там мощи не больше, чем в новом iPhone. А выглядит Wolfenstein II на Switch лучше чем ПК версия на минимальных настройках. Но ведь ПК версия даже на минимальных настройках пойдет далеко не на каждом ПК. Стыд и позор.



Wolfenstein II: The New Colossus на Nintendo Switch.

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

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

Продолжение
Размещено в Без категории
Просмотров 544 Комментарии 5
Всего комментариев 5

Комментарии

  1. Старый комментарий
    Аватар для Кот Баюн
    Я согласен, те фишки, которые выдают за "нечто ультрасовременное", на самом деле просто "хорошо оптимизированное старое" )))
    Хотя сравнивать технологии Raytracing и Direct3D не совсем корректно, ибо разный подход, ну да ладно ))
    Запись от Кот Баюн размещена 30.07.2018 в 07:55 Кот Баюн вне форума
  2. Старый комментарий
    Аватар для slonka
    В данном контексте вполне корректно. Графический конвейер, он везде один и тот же, что в программах 3D моделирования, что в играх. Кстати, говорят, что Raytracing уже на подходе к играм.
    Запись от slonka размещена 30.07.2018 в 08:46 slonka вне форума
  3. Старый комментарий
    Аватар для Leonis
    Отлично Разбавил скучные будни приятные чтением. Наконец-то понял что такой шейдеры
    Запись от Leonis размещена 30.07.2018 в 10:16 Leonis вне форума
  4. Старый комментарий
    Аватар для Кот Баюн
    Цитата:
    Кстати, говорят, что Raytracing уже на подходе к играм.
    Ну, может быть, может быть....
    Столько лет мощности все растут и растут, а толку немного.
    Может хоть что-то дельное создадут
    Запись от Кот Баюн размещена 31.07.2018 в 08:21 Кот Баюн вне форума
  5. Старый комментарий
    Аватар для Leonis
    Ага, например, чтобы No Man's Sky не тормозил уже
    Запись от Leonis размещена 31.07.2018 в 11:40 Leonis вне форума
 
Текущее время: 04:00. Часовой пояс GMT +3.
Рейтинг@Mail.ru
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc. Перевод: zCarot