Рубрика «old games hardware»

Ага, вот эти ребята!

Вперёд в п(р)ошлое. TBDR — the Power We Are - 1

Imagination Technologies — одни из тех немногих, доказавших, что в этом мире точно можно существовать сразу в двух сущностях: в тени и в прибыли. Если уж кто и знает, как оптимизировать рендеринг 3D-сцены, так Kristof Beets всегда знает больше. В «былые годы» мужчина был лицом PowerVR (подразделение Imagination Technologies, занимающееся разработкой 3D-графических чипов) и вещал нам о том, как он совместно с ещё парой человеков придумали новый способ рендеринга. В рекламных брошюрах, которыми пестрил каждый обзор видеоплат на базе их чипов, всегда можно было найти очень грубое объяснение традиционного метода рендеринга и его блестящую эволюцию — тайловый рендеринг, который так прогремел в 2001 году, что… вы не слышали? А было громко!

3D-Пайплайн как он был

Сегодня на операционном столе у нас… кто бы вы думали?

Вперёд в п(р)ошлое. TBDR — the Power We Are - 2

PowerVR Series 3! О да, его-то мы и вскроем как следует, но сначала немного истории. На момент выхода на рынок ему пришлось соревноваться с такими гигантами, как ATI R100 и NVIDIA Жираф 3. То были серьёзные решения, но PowerVR и не собирались участвовать в гонке за мегагерцами. По заявлению PowerVR, те двое рисуют 3D-графику устоявшимся бесперспективным традиционным методом или же это можно было называть immediate-mode rendering. Чтобы понять, как это, нам придётся потревожить такое понятие как Графический конвеер (далее — 3D-пайплайн).

3D-пайплайн?

Точно! Но подождите, на него ещё нужно попасть…

А для начала нам нужно построить 3D-сцену в каком-то приложении. Вспомните уроки черчения: как вы рисуете, например куб? Вот и в 3D-моделлировании (3-Dimensional Modelling) вы тоже рисуете в проекции на плоскости (которую определяете сами), каждая точка которой может быть описана как: xyzнает где. Но изначально перед вами необъятный космос (space), а вам нужно задать в нём хотя бы одну вот эту вот плоскость. И тут-то на помощь и приходит такая простая фигура как треугольник,- он отлично с этим справится. Дальнейший сценарий самый разнообразный, например, на этой плоскости мы можем разместить что-нибудь или мы можем присоседить к нашей плоскости другую плоскость…

Итак, классические фигуры (примитивы) для построения любых других геометрических фигур (полигонов) в концепции 3D-моделирования — это треугольники. Почему:

  • Треугольник плоский. Вы можете быть уверены, что все три его вершины находятся в одной плоскости.
  • Все остальные полигоны можно построить из них. Причём даже очень быстро методом triangle strips.
    Сейчас сразу найдутся умники, которые спросят: «А как же из треугольников сделать круги?» Да, с этим будут проблемы… Хорошо, а как из линий? ;) Да точно так же.

Кстати на самом деле приложение передаёт видеокарте вовсе не готовую 3D-модель сцены, а всего лишь координаты вершин полигонов в нашем космосе.

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

В итоге в буфере конечного кадра (фреймбуфер) формируется один полный кадр и выводится. В идеале таких вот кадров нужно успевать хотя бы 25 в секунду (это и назвали FPS — Frames per Second), иначе человеческий глаз заметит, что изображение на экране показывается прерывисто.

Хочется попутно развинтить очередной миф: Если забыть про VSync, то скорость игры от fps не зависит. Скорость игры зависит от того, успевает ли HDD, CPU и RAM. А вот плавность изображения — да, вот за это ответственна видяха с её FPS. Вспомните тот же Unreal на ранних 3D-видеокартах, например, когда вы понимали, что вас убили ещё до того, как вы это увидели.
До недавнего времени де-факто стандарт был FPS = 60, что даёт очень плавную картинку, по сравнению с FPS = 25. Сегодня при наличии монитора с частотой обновления больше 60Гц вы можете попробовать посмотреть современные игры, в которых также есть поддержка вывода FPS > 60. Говорят, ничего так ;)

Классический 3D-пайплайн глазами PowerVR

Ну так вот, вернёмся к нашей скотине immediate-mode rendering (далее — IMR). На протяжении всех своих лет существования на рынке pc-видеоплат PowerVR давали нам такую вырезку из классического 3D-пайплайна, который применяется в IMR-видеокартах:

image

Если верить схеме, то классический 3D-пайплайн представляет из себя ровно следующее:
Приложение генерирует кадр с полигонами в оперативной памяти и отдаёт его на съедение видеоплате. Каждый полигон в gpu сначала растеризуется и текстурируется, а только потом идёт проверка на перекрытие его другим полигоном в сцене. Т.е., по сути получается, что мы можем сначала подготовить в памяти сложное дерево, следом подготовить такого же сложного человека, и только потом сообразить, что человек практически полностью закроет собой всё это дерево. Да, у IMR получается как-то неэффективно. Получается overdraw.

Что предлагает PowerVR

А PowerVR уже который год предлагают нам: "Think before you start to render!".
Казалось бы, ведь это так просто! Нам всего лишь необходимо поменять местами первые две стадии на рисуночке.

image

Но за всем этим кроется одна большая проблема: в то время весь 3D-пайплайн был аппаратно зашит в чипы (от геометрии до вывода во фреймбуфер). Посему PowerVR в своих чипах круто изменили 3D-пайплайн, заодно придумав собственный метод рендеринга: Tile Based Deffered Rendering!!! Ключевое слово Deffered, потому что были, например, видеокарты Intel GMA, которые использовали Coined Zone Rendering, который по сути тоже Tile-Based.

Intel uses a similar concept in their integrated graphics solutions. However, their method, coined zone rendering, does not perform full hidden surface removal (HSR) and deferred texturing, therefore wasting fillrate and texture bandwidth on pixels that are not visible in the final image.

en.wikipedia.org/wiki/PowerVR

А на самом деле...

… конечно, всё было не совсем так. А именно:

  1. Поначалу (1995 — 2000 гг.) у карт с IMR всё складывалось неплохо и карты с TBDR не имели особого преимущества, оставаясь в тени. Но и в 2001 году карты PowerVR, на самом деле, особо не выехали. Потому что вендорами IMR-чипов были своевременно проведены независимые расследования и, в результате, без интриг и скандалов, до вендоров быстро дошло, что типичный 3D-мир становится всё комплекснее и многослойнее. Всем стало ясно, что теперь боттлнеком является видеопамять с её пропускной способностью, и, что нужно оптимизировать работу с этой вот памятью и обязательно с z-buffer'ом.
    Так практически одновременно в 2001 году увидели свет такие разные технологии, как HyperZ у ATI и Lightspeed Memory Architecture у NVIDIA. И, если первая на заре своего появления отсеивала overdraw уже только непосредственно перед растеризацией, то вот вторая делала это ещё на уровне геометрии!

  2. Помимо того, конечно, PowerVR немного лукавили. На приводимой ими схеме классического 3D-пайплайна IMR (см. Классический 3D-пайплайн глазами PowerVR) явно не хватало шейдеров, которые уже были в зачаточной стадии даже на жирафе 2 (это называлось NSR). Ну а у каждого уважающего себя чипа 2001 года (ATI R100, NVIDIA Жираф 3) уже были полноценные пиксельные или даже вершинные шейдеры, открывающие «полигоны возможностей» управления 3D-пайплайном.
    Однако же заметьте, что TBDR всё же был придуман задолго до шейдеров!

По указанным выше причинам PowerVR снова оказались в тени и дальнейшая судьба их сложилась в другом сегменте (привет владельцам IPhone). Но на что же на самом деле был способен чип PowerVR Series 3, карты на котором так и не доехали до нас?
Читать полностью »


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