Исследование возможностей TCL на практике

13.12.2000


Введение

  Появление GeForce256, первого потребительского ускорителя со встроенным блоком аппаратного TCL, прошло под лозунгом "Изменим мир!". На новейшем ускорителе мы могли наблюдать чудесные демки, от реалистичности графики которых захватывало дух. Это почти настоящее дерево, детализированное до такой степени, что можно рассмотреть каждый листик, красивые эффект освещения, летающая в невесомости капля ртути, которую можно одним щелчком мыши заставить "колебаться" по реальным законам физики и очень многое другое. Но с момента его появления прошло уже больше года, а обещанных игр с революционным качеством графики так и не появилось. Именно поэтому сейчас идут горячие споры о том, способен ли аппаратный TCL дать значительные преимущества на практике. Многие склонны недооценивать важность этой функции в ускорителях GeForce и RadeON. Некоторые наоборот, ожидают невероятных изменений в качестве и скорости современных игр. В этой статье мы подробно исследуем, какие именно преимущества дает аппаратный блок TCL сейчас и какие способен дать в ближайшем будущем на практике.



Немного теории

  Прежде чем переходить к тестам, необходимо разобраться с общими принципами расчета изображения. Он состоит из нескольких стадий:

  1. Трансформация (Transformation)

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

  2. Отсечение невидимых полигонов (Clipping)

      Любая игра — это небольшой трехмерный мирок. Будь то темный лабиринт в подземелье замка или открытое пространство лесов и полей. Однако, на экране монитора мы не можем видеть его целиком. В любой игре мы видим только то, что попадает в наше поле зрения. Поэтому и вычислять для нас весь мир для ускорителя это напрасная трата ресурсов. Достаточно создать только ту часть мира, которая попадает в поле зрение наблюдателя (т.е. нас с вами). Операция Clipping предназначена именно для того, чтобы отсечь все треугольники, не попадающие в заданное поле зрения. Для этого игра задает 6 плоскостей, 4 плоскости ограничивают поле зрения сверху, снизу, слева и справа, 1 — сзади и еще одна ограничивает дальность поля зрения. Они образуют собой замкнутую геометрическую фигуру. Все треугольники, не попадающие внутрь нее, отсекаются. Для дальнейших стадий используются только те, которые оказались внутри фигуры или попросту в нашем поле зрения.

  3. Освещение (Lighting)

      Расчет освещенности каждого полигона относительно каждого указанного точечного источника света. Вычисляется для каждой вершины треугольника на основе ее расстояния от источника света. Затем эти значения аппроксимируются на всю площадь треугольника. Если источников света несколько, то эта операция проводится для каждого источника в отдельности. Это значит, что объем вычислений, связанных с освещением, прямо пропорционален количеству полигонов и источников света в сцене. Т.е. если, скажем, увеличить количество источников с 2-х до 8-ми, то объем необходимых вычислений увеличится в 4 раза, соответственно в 4 раза упадет и общая скорость.

  4. Растеризация

      Эта стадия связана со смешиванием и наложением текстур и целиком выполняется любым современным (и не очень) ускорителем.
      Разумеется, это все в предельно упрощенном виде и при более строгом подходе, стадий можно было бы выделить гораздо больше. Однако, это уже тема для другого материала.
      Итак, первые три стадии (коротко TСL, хотя более привычным является название T&L) — это геометрические расчеты, которые в “обычных” ускорителях (хотя и GeForce сейчас уже не является чем-то необычным) выполняются центральным процессором. Ускорители с аппаратным TCL способны взять на себя и эти стадии расчета изображения, полностью или частично освобождая от них процессор.
      Сам блок TCL не монолитен и состоит из 2-х основных практически независимых блока — трансформации и освещения. Например, аппаратный TCL RadeON 256 имеет производительность блока трансформации на уровне GeForce256, а блока освещения — на уровне GeForce2. Поэтому, когда полигонов много, а источников света мало, GeForce2 далеко опережает Radeon. Но зато при большом количестве источников света Radeon идет “нос к носу” с GeForce2.
      Возможность использования аппаратного TCL в играх, которые ничего о нем не знают, зависит от используемого игрой API. Например, самый популярный на сегодня API Direct3D позволяет игре самой рассчитывать TCL. Поэтому если игра не “знает” об аппаратном TCL, то и использовать его ни в каком виде она не будет. Другой популярный API OpenGL включает в себя все стадии построения изображения, поэтому игре не обязательно знать об аппаратном TCL. Достаточно чтобы его поддержка была в драйверах.


Как тестировали

  Конфигурация системы:

  • Celeron 300A (с возможностью разгона до 464МГц)
  • Abit BH6
  • 128Mb PC-100 SDRAM
  • Creative Annihilator 32Mb (GeForce256 SDR)

  Тесты проводились в разрешении 640х480х16. Почему было выбрано столь низкое разрешение? Для того чтобы исключить влияние таких факторов, как Fillrate и пропускная способность памяти ускорителя. Ведь, как вы уже знаете из Теории, геометрические расчеты, а именно TCL, никак не зависят от растеризации. Т.е. количество полигонов и источников света в любом разрешении остается постоянным, а само разрешение влияет только на скорость растеризации кадра. В тоже время, True Color не влияет на Fillrate и TCL, но зато нагружает шину памяти. Устанавливая мининимальное разрешение и 16-битный цвет, я гарантирую, что узким местом системы станет процессор и аппаратный блок TCL.

  Устанавливались частоты процессора:

300 МГц (4.5*66 МГц)
338 МГц (4.5*75 МГц)
375 МГц (4.5*83 МГц)
450 МГц (4.5*100 МГц)
464 МГц (4.5*103 МГц)

Это позволило исследовать зависимость скорости геометрических расчетов от частоты процессора.

  Видеокарта тестировалась в двух режимах работы:

штатном (120/166МГц) и разогнанном (150/166МГц).

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

  Память не разгонялась, во-первых, потому что в 640х480х16 ее скорость практически не влияет на производительность, а во-вторых, чтобы выделить в чистом виде прирост от увеличения частоты ядра (а вместе с ним и блока TCL)

  Аппаратный TCL для всех OpenGL-тестов (Quake3, MDK2, TreeMark) выключался с помощью специальной переменной реестра типа dword MaxNVAccel. (Работает только в драйверах Detonator 3.хх, 5.хх, 6.хх и 7.хх)
  Она находится в разделе:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Class\Display\0000\NVIDIA\OpenGL

  При установке ее значения в 1 (по умолчанию - 0), отключаются все дополнительные функции, которые появились у GeForce256 после Riva TNT2 и GeForce256 превращается просто в 4-х конвейерную TNT2.
  Кроме аппаратного блока TCL, это анизотропная фильтрация и компрессия текстур. Поскольку нас сейчас интересует только TCL, то, для выделения разницы между аппаратным и програмным TCL в чистом виде, анизотропия и компрессия текстур отключались (первая — в драйверах, вторая — в играх) как при включенном, так и при выключенном аппаратном TCL.

  В Quake 3 для отключения компрессии текстур необходимо в консоли набрать:

r_ext_compress_textures 0

vid_restart


Тесты проводились в приложениях:

  • Quake 3 Arena demo001

      Для тестирования были установлены максимальные настройки, за исключением разрядности текстур (использовались 16-битные текстуры). Об используемом разрешении я сказал выше — это 640х480х16.
      Для запуска теста необходимо в игре:

    1. вызвать консоль клавишей "~"
    2. набрать s_initsound 0 (отключение звука)
    3. snd_restart (перезапуск звуковой подсистемы)
    4. timedemo 1
    5. demo demo001 (запуск теста)

  • MDK2 Demo

      Для тестирования были установлены настройки:
    разрешение — 640х480х16
    качество текстур — 3
    фильтрация — трилинейная
    Mipmap - ON
    Full Screen - ON
    Hardware TCL — ON (в том числе и для тестирования без аппаратного TCL)

  • 3Dmark2000 Game1 — Helicopter

  • 3Dmark2000 Game 2 - Adventure

      Тестировались в разрешении 640х480х16 с 16-битным Z-буфером, тройной буферизацией и выключенным V-Sync.
      Детализация: High Detail

  • NVIDIA TreeMark

Тесты проводились на установках по умолчанию.

  Количество полигонов: 35820
  Количество источников света: 4

Переход на страницу:

 1 

 2 

 3