Foxconn GeForce 8800GTX 768MB PCI-E

и исследование Coverage Sampling Antialiasing в игровых приложениях





  1. Платa
  2. Немного истории
  3. MSAA на GeForce 8800
  4. Режимы CSAA GeForce 8800
  5. Настройки антиалиасинга в драйверах
  6. Конфигурации тестовых компьютеров
  7. Производительность антиалиасинга GeForce 8800
  8. Качество антиалиасинга GeForce 8800
  9. Заключение и выводы

Интересно, многие ли из наших читателей заметили, что в последние годы трехмерная графика развивается четко выраженными дискретными скачками? И есть ли среди наших читателей те, кто в первую очередь оценивает не производительность новых видеокарт, а качество реализованных в них алгоритмов?

Если такие читатели у нас все-таки есть, то 8 ноября этого года у них случился небольшой праздник: компания NVIDIA представила две видеокарты, построенные на базе нового чипа G80. В базовом обзоре этой видеокарты на нашем сайте мы отметили, что чип G80 настолько «заточен» под будущие задачи, что в современных приложениях, по сути, не способен до конца раскрыть свой потенциал. Вина за это в определенной степени заключается в отсутствии на сегодняшний день как самого API DirectX 10, так и драйверов и, разумеется, приложений, которые бы этот API использовали.

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

И если с анизотропной фильтрацией, осуществляемой чипом G80, всё в общем и целом ясно (G80 обладает самым качественным алгоритмом анизотропной фильтрации среди всех сегодняшних видеочипов, а его реализация в кремнии настолько удачна, что можно смело форсировать в драйвере AF 16x и забыть о размытых текстурах, шумах и прочих артефактах некачественной фильтрации практически ничего не потеряв при этом в производительности), то новый вид антиалиасинга определенно требовал отдельного исследования.

Именно такое исследоване и будет проведено в этой статье.

Но вначале познакомимся с очередной серийной картой на базе GeForce 8800 GTX, которую представляет компания Foxconn.

Платa



Foxconn GeForce 8800 GTX 768MB PCI-E
GPU: GeForce 8800 GTX (G80)

Интерфейс: PCI-Express x16

Частоты работы GPU (ROPs/Shaders):: 575/1350 MHz (номинал — 575/1350 МГц)

Частоты работы памяти(физическая (эффективная)):: 900 (1800) MHz (номинал — 900 (1800) МГц)

Ширина шины обмена с памятью: 384bit

Число вершинных процессоров: -

Число пиксельных процессоров: -

Число универсальных процессоров: 128

Число текстурных процессоров: 32

Число ROPs: 24

Размеры: 270x100x32 мм (последняя величина — максимальная толщина видеокарты).

Цвет текстолита: черный.

RAMDACs/TMDS: вынесены в отдельную микросхему.

Выходные гнезда: 2хDVI, TV-выход.

VIVO: нет

TV-out: интегрирован в GPU.

Поддержка многопроцессорной работы: SLI (интегрировано в GPU).



Foxconn GeForce 8800 GTX 768MB PCI-E
Карта имеет 768 МБ памяти GDDR3 SDRAM, размещенной в 12-ти микросхемах на лицевой стороне PCB.

Микросхемы памяти Samsung (GDDR3). Время выборки у микросхем памяти 1.1ns, что соответствует частоте работы 900 (1800) МГц.



Сравнение с эталонным дизайном, вид спереди
Foxconn GeForce 8800 GTX 768MB PCI-E Reference card NVIDIA GeForce 8800 GTX 768MB PCI-E


Сравнение с эталонным дизайном, вид сзади
Foxconn GeForce 8800 GTX 768MB PCI-E Reference card NVIDIA GeForce 8800 GTX 768MB PCI-E


Следует напомнить, что все видеокарты семейства GeForce 8800 GTX/GTS производятся на фабриках Flextronics и Foxconn, принимаются NVIDIA, и продаются последней уже партнерам. Ни один партнер NVIDIA не производит эти карты самостоятельно! Прошу это запомнить как аксиому. Выбирая между вендорами при покупке 8800GTX/GTS, вы выбираете комплект поставки и упаковку. И только!

И в этот раз мы с вами видим, что перед нами все та же эталонная карта.

Стоит еще раз упомянуть про длину PCB — 270 мм, что может создавать некоторые трудности из-за размера, ведь карта выросла на 5 см относительно предыдущих топовых решений.

На фотографиях также четко видно, что GTX-плата требует ДВА шестипиновых PCI-E хвостов от БП.

У карты имеется гнездо TV-выхода, которое уникально по разъему, и для вывода изображения на ТВ как через S-Video, так и по RCA, требуется специальный адаптер-переходник, (обычно поставляемый вместе с картой). По ТВ-выходу можно почитать — здесь.

Продолжая изучать карту, мы видим, что она снабжена парой гнезд DVI. Причем, Dual link DVI, что позволяет по цифровому каналу получать разрешения выше 1600х1200. Подключение к аналоговым мониторам с d-Sub (VGA) интерфейсам производится через специальные адаптеры-переходники DVI-to-d-Sub. Максимальные разрешения и частоты:

  • 240 Hz Max Refresh Rate
  • 2048 × 1536 × 32bit @ 85Hz Max — по аналоговому интерфейсу
  • 2560 × 1600 @ 60Hz Max — по цифровому интерфейсу

Отдельно надо сказать насчет частот ядер. Ранее у почти всех ранее нами исследуемых GT/GTX все частоты ядра выставлялись с шагом 27 МГц, и частота геометрического блока была выше остальных на 40 МГц. Об этом подробно мы писали уже ранее. Однако же, в случае G71 шаг в 27 МГц был убран. У 7900-го семейства все три частоты могут меняться как угодно в шагом до 1-2 МГц. У 7900 GTX разница между частотой геометрического блока и остальными частотами блоков ядра выросла до 50 МГц. У 7900 GT разница — 20 МГц, и шага в 27 МГц также нет.

Так вот, мы видим, что доступные нам две частоты работы ядра G80 — 575 и 1350 МГц имеют между собой огромную разницу. Попытки разгонов показали, что при увеличении частоты работы ROPs частота работы щейдерной части вырастает пропорционально.

Теперь об особенностях самой карты. Выше уже было сказано, что все подобные продукты — с одной-двух фабрик и полностью идентичны. Компания Foxconn оставила на карте эталонный кулер, о нем мы ранее уже рассказывали, да и не один раз. Поэтому повторяться не будем.

Но все же как-то приукрасить систему охлаждения разработчики из Foxconn решили. Поскольку кожух кулера прозрачный, то под ним можно установить светодиоды. Что и было сделано.

Правда несколько топорно, приклеив лишние провода скотчем.





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



Напомню, что вопросами вывода графики теперь занимается отдельная микросхема — NVIO. Это особый чип, куда собраны RAMDAC и TMDS. То есть блоки, ответственные за вывод графики на мониторы или ТВ, были изъяты из самого G80 и вынесены в отдельный чип. Это весьма разумное решение, поскольку на RAMDAC не будут влиять наводки от шейдерного блока, работающего на огромной частоте. В этот же чип вынесена и поддержка HDCP.

Комплектация.

Foxconn GeForce 8800 GTX 768MB PCI-E
Руководство пользователя, CD с драйверами, переходники DVI-to-d-Sub и S-Video-to-RCA, TV-кабели, адаптер для композитного вывода. Отдельно стоит упомянуть бонусы: небольшой джойстик от Foxconn и набор ПО: VirtualDrive и RestoreIT.



Упаковка.

Foxconn GeForce 8800 GTX 768MB PCI-E

Большой вытянутый бокс из толстого картона. Дизайн конечно футуристический, но весьма стильный.

Все компоненты тщательно разложены в отсеке, а видеокарта, кроме антистатического пакета помещена еще в мягкий пакет «с пупырышками», поэтому уж с ней точно ничего не случится в дороге.



Ну вот, карту мы изучили, увидев, что кроме комплекта поставки и освещенного кулера, отличий от референс нет, теперь займемся вплотную анти-алиасингом.

Но для начала давайте вернемся немного в прошлое и вспомним, с чего начинался антиалиасинг на 3D-видеокартах.

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

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

Следующая попытка была предпринята той же 3dfx при разработке чипа VSA-100, на базе которого были выпущены видеокарты Voodoo 4 и Voodoo 5. Отказавшись от довольно-таки бредовой идеи рисования линий вдоль границ треугольников, инженеры 3dfx воспользовались сравнительно стандартной идеей усреднения отрендеренных кадров, добавив, однако в неё ряд собственных «ноу-хау». Примерно в то же самое время схожей идеей воспользовались и тогдашние конкуренты 3dfx — компании NVIDIA и ATI — однако они реализовали её «в лоб», без особенных раздумий.

Сама идея предельно проста: рендеринг осуществляется в разрешении, которое в 2, в 4, в 8 и т.д. раз превышает разрешение экрана монитора. Перед выводом на экран отрендеренный кадр уменьшается в размерах, а значения пикселей кадра, которые при этом оказываются в одном пикселе экрана, усредняются, чем и достигается пресловутое «сглаживание» пикселей — и не только на краях треугольников, но и вообще во всей сцене. Подобный алгоритм сегодня принято называть суперсэмплингом (supersampling, SSAA). А пресловутые «2x», «4x», «6x» и «8x», которыми сегодня обозначают антиалиасинг пошли именно оттуда — это множитель, который показывал во сколько раз разрешение кадра превышает разрешение экрана.

Даже из подобного предельно упрощенного описания суперсэмплинга многим должно быть ясно, что этот алгоритм наносил чудовищный удар по производительности видеокарты — ведь надо было рендерить кадр в более высоком разрешении и, как следствие, записывать в память больше информации — вдвое в случае AA 2x и вчетверо в случае AA 4x. В результате зачастую производительность с SSAA 4x падала в те самые четыре раза, что трудно было считать приемлемым.

Первым усовершенствованием SSAA стал мультисэмплинг (multisampling, MSAA), впервые реализованный в NVIDIA GeForce 3. Если суперсэмплинг был не более чем умным программным «хаком», заставлявшим видеокарту рендерить кадр в более высоком разрешении, а затем уменьшать его до разрешения экрана, усредняя при этом значения пикселей, то мультисэмплинг уже является «железной» оптимизацией, которая позволила сэкономить производительность при расчете значений цвета субпикселей — если все, например, 4 субпикселя находятся внутри треугольника, то в них все записывается одно и то же вычисленное ранее значение цвета, а в полноценном повышенном разрешении рендерится только Z-буфер и буфер шаблонов (Stencil). За счёт алгоритмов сжатия одинаковой информации о цвете большинства субпикселей MSAA позволил существенно снизить нагрузку и на полосу пропускания шины памяти. Кроме того, благодаря возможности расчитывать бОльшее количество Z-значений за один такт работы ускорителя, Z-буфер повышенного разрешения заполнялся существенно быстрее, чем весь кадр в алгоритме SSAA.

И вот на этом этапе интенсивное развитие антиалиасинга в видеокартах фактически прекратилось. Дальше последовал длительный период доработки и совершенствования механизмов MSAA:

  • постепенно случился всеобщий переход от прямой решетки расположения субсэмплов (ordered grid) к повернутой (rotated grid) (в Radeon 9700 у ATI и в GeForce 6800 у NVIDIA);
  • увеличилось число субсэмплов, которые видеокарта могла рассчитать для каждого экранного пикселя (до 6 в Radeon 9700);
  • появились механизмы коррекции гаммы результатов усреднения субпикселей (в Radeon 9700 у ATI и в GeForce 7800 у NVIDIA);
  • появились методики сглаживания прозрачных текстур, справиться с которыми алгоритм MSAA не мог (в GeForce 7800 у NVIDIA и в Radeon X1800 у ATI; позднее эти методики были добавлены драйверами и в вышедшие ранее видеокарты).

Однако в целом антиалиасинг переживал период застоя. Это было особенно заметно у NVIDIA, главный показатель качества антиалиасинга — количество субсэмплов, рассчитываемых видеокартой для каждого пикселя — в видеокартах которой не менялся со времен выпуска GeForce 3.

И только теперь, в GeForce 8800, NVIDIA решилась на существенную переработку алгоритмов антиалиасинга.

MSAA на GeForce 8800

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

Ведь MSAA это всего лишь «надстройка» над суперсэмплингом, его разновидность. Видеокарта всё так же рендерит кадр в более высоком разрешении, а затем производит усреднение значений субсэмплов и выводит результат усреднения на экран.

Таким образом, скажем, режимы 6x и 8x MSAA потребуют в 6 и в 8 раз бОльшего буфера построения кадра — и это в условиях, когда набортной памяти видеокарты не всегда хватает для хранения вершин и текстур, а ширина шины памяти растет в разы медленнее, чем аппетиты видеочипов.

Впрочем, технологии не стоят на месте, и то, что пару лет назад казалось невозможным, сегодня продается на прилавках магазинов. Первое усовершенствование антиалиасинга, осуществленное NVIDIA в чипе G80, затронуло старый добрый мультисэмплинг.

Как вы помните, суть алгоритма мультисэмплинга заключается в опережающем тестировании Z-координаты субпикселей. Чем больше подобных Z-тестов может осуществить видеокарта, тем большее количество субсэмплов она может рассчитать. Со времен GeForce 3 видеокарты как NVIDIA, так и ATI умели делать всего два Z-теста за один такт, однако их научили рассчитывать разные субпиксели в разные такты — GeForce умели рассчитывать либо 2 субпикселя за один такт, либо 4 субпикселя за два такта; Radeon пошли дальше и обрели режим 6x, в котором на расчет 6 субпикселей требовалось три такта работы ускорителя.

Думаем, вы уже поняли, в чём заключается первое усовершенствование MSAA в G80 — NVIDIA оснастила новый чип возможностью рассчитывать сразу 4 субпикселя за один такт и, как и на предыдущих GeForce, оснащенных MSAA, рассчитывать другие 4 субпикселя за следующий такт, достигая тем самым максимального режима MSAA 8x.

Стоит отметить, что подобное усовершенствование не свалилось с неба — для записи в память 4 субпикселей за один такт требуется более высокая полоса пропускания шины памяти, и появлением подобной возможности G80 отчасти обязан своей 384-битной шине.

Появление нового режима MSAA, разумеется, повлекло за собой усовершенствование «решёток» расположения субсэмплов. Давайте посмотрим на эти решетки при помощи утилиты D3DFSAAViewer и сравним их с решетками предыдущих чипов NVIDIA, а также с решетками чипов конкурента:



  GeForce 7800 GeForce 8800 Radeon X1900
2x
4x
8xS/8x/6x


Прекрасно видно, что решетки расположения субсэмплов в режимах 2x и 4x на GeForce 8800 ничем не отличаются от решеток, впервые появившихся в GeForce 6800. Аналогичным образом, решетки режимов 2x и 4x у GeForce 8800 «зеркально отражают» решетки аналогичных режимов у Radeon, начиная с Radeon 9700.

Самое интересное, конечно же, кроется в режиме 8x. Прекрасно видно, что мы действительно имеем дело с мультисэмплингом — в отличие от комбинированного MSAA+SSAA режима, доступного на GeForce 7800 (и вообще на всех GeForce со времен выпуска GeForce 4). Отлично видно, что при расположении субсэмплов NVIDIA пошла по стопам ATI, и избежала излишне равномерного их расположения на решетке. Это важно для более качественного сглаживания бОльшего количества наклонных линий. Вместе с тем следует отметить, что схема расположения субсэмплов в режиме MSAA 8x на GeForce 8800 больше напоминает схему их расположения в режиме 8xS на GeForce 7800, нежели схему расположения субсэмплов в режиме 6x на Radeon.

Завершая теоретический разговор об MSAA на GeForce 8800 отметим, что в чип G80 перекочевали знакомые нам со времен GeForce 7800 возможности гамма-коррекции и сглаживания прозрачных текстур.

Режимы CSAA GeForce 8800

Однако вполне предсказуемой модернизации MSAA инженерам компании NVIDIA показалось мало, и они добавили в чип G80 еще одно существенное улучшение — Coverage Sampled Antialiasing, CSAA.

Что такое CSAA, чем вызвано его появление и как он работает?

Дело в том, что дальнейшее наращивание числа субсэмплов в MSAA перестало приносить желаемый результат: прирост качества от MSAA, скажем, 16x, будет несопоставим с тем, сколько видеопамяти потребуется для работы подобного режима — ведь разрешение кадра будет в 16 раз (!) выше разрешения экрана. То есть, если вы установите в игре разрешение 1600х1200, то видеокарте придётся рендерить кадр в разрешении 6400х4800!

А если учесть, что в последнее время кадры стало модным рендерить в 64-битном цвете (FP16) ради получения эффекта HDR, то получается, что кадр игры с разрешением 1600х1200 и MSAA 16x потребует (1600 × 1200 × 4) + (6400 × 4800 × 8) + (6400 × 4800 × 4) = 360 МБ видеопамяти только лишь для буферов кадра, без учёта текстур, вершин и шейдерных программ. И без учёта довольно популярной среди знающих игроков тройной буферизации. И без учёта появившейся в Direct3D 10 возможности рендерить кадр в 128-битном цвете.

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

Прелесть метода состоит в том, что информация о том попадает субпиксель на треугольник или нет, выражается всего лишь двумя значениями — да или нет, 1 или 0. Передача подобных значений в буфер кадра значительно меньше загружает шину памяти, нежели передача значений цвета (утверждается, что передача 16-ти coverage-сэмплов сравнима с передачей 4 color-сэмплов; мы проверим это ниже, в тестировании реальных приложений), а на основании уточненной информации о перекрытии (coverage) пикселя треугольником и 2, 4 или 8 значений цвета MSAA-субпикселей можно более точно рассчитать результирующий цвет экранного пикселя.

Метод отлично ложится на существующие алгоритмы рендеринга (это одна из главных проблем большинства других альтернативных методов AA — они оказываются несовместимыми с получившими широкое распространение в железе, API и приложениях техниками и алгоритмами), почти не нагружает шину памяти и не отнимает много места в самой видеопамяти.

При этом в случаях, в которых метод CSAA даёт осечки (например, пересекающиеся треугольники, границы теневых объемов), мы получаем не бросающееся в глаза отсутствие AA, а всего лишь отсутствие CSAA — то есть, «возврат» к определенной степени MSAA (2x, 4x или 8x).

Таким образом, CSAA является дальнейшим улучшением методики SSAA, которая «в лоб» сглаживала всё и вся в сцене ценой жуткого падения производительности. Алгоритм MSAA позволил обойтись вычислением и передачей (за счёт сжатия) одного значения цвета для одного экранного пикселя, попадающего внутрь треугольника. CSAA же позволяет обойтись передачей и хранением одного значения цвета или Z на каждый субпиксель, уточняя при этом усредненное значение экранного пикселя за счёт более подробной информации о том, как этот пиксель перекрывает края треугольников.

Настройки антиалиасинга в драйверах

Прежде чем переходить к непосредственному тестированию, нам необходимо оговорить еще один важный момент — настройки антиалиасинга, доступные из игр и драйверов на GeForce 8800.

Поскольку ни одна из нынче существующих игр не знает о существовании CSAA, то совершенно очевидно, что CSAA может управляться только из панели управления ForceWare. И тут перед нами встаёт одна проблема: большинство современных игр не допускает форсирование AA из панели управления драйвером, поскольку это нарушает их алгоритмы построения кадра. Как же задействовать CSAA в этих играх — они о нём не знают, форсирование невозможно…

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

Режим «Enchance the application setting» сделан в первую очередь для нового CS-антиалиасинга. В этом режиме вы не форсируете принудительно антиалиасинг, но «обманываете» приложение.

Работает этот режим следующим образом: вы выставляете в «Antialiasing — Mode» «Enchance the application setting», а затем указываете в поле «Antialiasing — Setting» нужный вам режим антиалиасинга (всё это ничем не отличается от давно знакомого нам форсирования). Затем вы запускаете игру и в игре выбираете любой режим антиалиасинга.

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

Что же касается MSAA, то D3D-драйвер совершенно корректно распознает новый режим 8x и предоставляет соответствующую информацию приложениям посредством механизма «капсов».

Так, в настройках Far Cry и в ряде других правильно написанных приложений на GeForce 8800 доступен режим антиалиасинга 8x. А в приложениях, написанных неправильно (например, Half-Life 2), всегда можно воспользоваться вышеописанным механизмом «обмана».

Однако тут есть и одна весьма на наш взгляд неприятная деталь: дело в том, что NVIDIA, «опъяненная» своим новым алгоритмом CSAA, решила «встроить» эти новые режимы в один список с MSAA — мысль сама по себе, быть может, и правильная, но вот реализовано это было очень криво. Посмотрим на скриншот:

Поднимите руки те, кто понимает, которые из этих режимов являются режимами MSAA, а которые — CSAA? Что? Вы говорите, а какая нам, в общем-то, разница? Сейчас объясним.

Дело в том, что режим, маркированный в панели управления как «8x» на самом деле не является тем режимом «8x», который доступен из некоторых «правильно написанных» приложений. Режим 8x в панели управления — это не MSAA, это CSAA. Доступный в настройках некоторых приложений MSAA 8x в панели управления почему-то носит название 8xQ.

Это первая проблема — проблема несоответствия названия режима в панели и в API Direct3D.

Затем, если Q — это признак режимов MSAA, то почему тогда 2x и 4x не имеют этого признака? И что тогда такое режим 16xQ? Отсутствие четкой логики присвоения режимам этого признака — это вторая проблема.

Наконец, из сугубо маркетинговых соображений было бы правильным четко выделять в панели управления новые CSAA-режимы. А то разговоров и рекламы вокруг нового AA много, а пользователи, купившие GeForce 8800 в драйверах никакого CSAA почему-то в упор не видят — странно? Более чем.

Вот таблица для тех, кто хочет знать, какой режим антиалиасинга в панели управления чему соответствует:

Режим панели управления ForceWare Количество значений цвета и глубины Количество coverage-значений
2x 2 2
4x 4 4
8x 4 8
8xQ 8 8
16x 4 16
16xQ 8 16

Что мы видим в этой таблице? Во-первых, режим 8x в панели управления — это на самом деле режим MSAA 4x + CSAA 8x. Во-вторых, режим 16x — это MSAA 4x + CSAA 16x, а режим 16xQ — это MSAA 8x + CSAA 16x.

Таким образом, мы можем предположить (ниже мы проверим это предположение), что режим 16x панели управления ForceWare вполне может оказываться хуже по своему качеству, нежели режим 8xQ, что достаточно странно с точки зрения логики следования этих режимов.

Мы предлагаем компании NVIDIA два пути выхода из этой неприятной путаницы в названиях.

Первый заключается в том, чтобы просто присвоить режимам более правильные названия. Например:

Предлагаемый режим панели управления ForceWare Количество значений цвета и глубины Количество coverage-значений
2x 2 2
4x 4 4
4x8c 4 8
4x16c 4 16
8x 8 8
8x16c 8 16

Да, пропадает режим 16x, но давайте будем честны с пользователями: видеочип G80 не поддерживает режим 16x в понимании номенклатуры «nx», сложившейся со времен видеокарт GeForce 256. Режим 16x подразумевает наличие 16 полноценных субсэмплов у каждого экранного пикселя, а 16 coverage-сэмплов нельзя считать полноценными.

Есть и второй путь — разделить в панели управление количеством мультисэмплов и coverage-сэмплов, сделать два списка (или ползунка), которые бы позволяли пользователям произвольно выбирать определенные количества мультисэмплов и coverage-сэмплов.

В рамках такого подхода можно было бы оставить для режимов CSAA указание количества coverage-сэмплов в виде «nx». То есть, вы выбираете, например, режим «Enchance the application setting», а затем выставляете нужный режим MSAA (например, 4x) и, если у вас есть желание, выставляете в другом списке нужный режим CSAA (например, 16x).

Второй путь сложнее в управлении, но обеспечивает большую гибкость.

Но достаточно теории, перейдем к практике.

Конфигурации тестовых компьютеров

Исследование производительности осуществлялось на компьютере следующей конфигурации:

  • Intel Core2 Duo Extreme X6800 (2930 MHz) (L2=4096K);
  • EVGA nForce 680i SLI на чипсете NVIDIA nForce 680i;
  • 2 ГБ оперативной памяти DDR2 SDRAM Corsair 1142MHz (CAS (tCL)=5; RAS to CAS delay (tRCD)=5; Row Precharge (tRP)=5; tRAS=15);
  • жесткий диск WD Caviar SE WD1600JD 160GB SATA
  • драйверы ForceWare 96.94 (настройки — по умолчанию; Transparency AA отключен)

Исследование качества осуществлялось на компьютере следующей конфигурации:

  • AMD Athlon 64 3700+ (2,2 ГГц, 1 МБ L2);
  • EPoX 9NPA+ SLI (чипсет nForce 4 SLI, PCI Express x16/x8+x8);
  • 2 ГБ оперативной памяти PC3200;
  • операционная система Windows XP с установленным Service Pack 2 (включая ряд выпущенных с момента выхода SP2 обновлений) и DirectX 9c.
  • драйверы ForceWare 93.71 (GeForce 7800), 97.02 (GeForce 8800) и Catalyst 6.11 (Radeon X1900)

В случае если обратное не оговаривается отдельно в тексте, то на видеокартах всегда были включены Transparency AA Supersampling / Adaptive AA Quality и AA Gamma Correction и отключены все оптимизации текстурной фильтрации (режим High Quality на GF и отключение Catalyst A.I. на R).

Производительность антиалиасинга GeForce 8800

Мы решили протестировать производительность двух самых «тяжелых» режимов антиалиасинга GeForce 8800 GTX: 16x и 16xQ. Забегая чуть вперед отметим, что режим 16x по своему качеству чуть превосходит режим 6x на видеокартах Radeon, а режим 16xQ является абсолютно недосягаемым по качеству для всех остальных современных видеокарт.

В качестве инструментария мы использовали:
  • Splinter Cell Chaos of Theory v.1.04 (Ubisoft) — DirectX 9.0, мультитекстурирование, настройки тестирования — maximum, shaders 3.0 (for NVIDIA cards)/shaders 2.0 (for ATI cards); HDR OFF!

  • Half-Life2 (Valve/Sierra) — DirectX 9.0, demo (ixbt01 Тестирование проводилось при максимальном качестве, опция -dxlevel 90, в файле dxsupport.cfg убраны предустановки для видов карт.

  • FarCry 1.33 (Crytek/UbiSoft), DirectX 9.0, мультитекстурирование, demo из уровня Research (запуск игры с опцией -DEVMODE), настройки тестирования все Very High.

  • DOOM III (id Software/Activision) — OpenGL, мультитекстурирование, настройки тестирования — High Quality (ANIS8x). Имеется пример автоматизации запуска с увеличением скорости и уменьшением числа рывков (прекешинг). (НЕ ПУГАТЬСЯ черного экрана после первого меню, так и должно быть! Он будет секунд 5-10, а потом должна пойти демка)

  • The Chronicles Of Riddick: Escape From Butcher Bay 1.10 (Starbreeze/Vivendi) — OpenGL, мультитекстурирование, настройки тестирования — максимальное качество текстур, Shader 2.0.

    Выражаю благодарность Ринату Досаеву (AKA 4uckall) и Алексею Островскому (AKA Дучче) за написание демо к данной игре, а также большое спасибо Алексею Берилло AKA Somebody Else за помощь

  • F.E.A.R. v.1.02 (Multiplayer) (Monolith/Sierra) — DirectX 9.0, мультитекстурирование, настройки тестирования — maximum, Soft shadows выключены.

  • Call Of Duty 2 DEMO (Ubisoft) — DirectX 9.0, мультитекстурирование, настройки тестирования — maximum, shaders 2.0, тестирование с помощью Benchemall, demo и скрипт для запуска, в readme есть инструкция

Желающие могут скачать результаты тестов формате EXCEL: Архив RAR и Архив ZIP

FarCry, Research (No HDR)



Результаты тестов: FarCry Research (No HDR)

Использование режима 16x (а это, напоминаем, MSAA 4x + CSAA 16x) в Far Cry даёт 38% падения производительности в разрешении 1600х1200.

Нам стало интересно, какой процент в это падение вкладывает новый алгоритм CSAA и мы провели дополнительное тестирование в FC в разрешении 1600x1200, но уже в режиме AA 4x и получили результат в 133,3 fps.

Таким образом, можно утверждать, что использование 16 coverage-сэмплов CSAA даёт на GeForce 8800 GTX примерно такое же падение производительности, какое даёт MSAA 4x.

При переходе на режим 16xQ производительность в 1600х1200 упала ровно на те же 30 fps, на которые она упала при переходе от режима без антиалиасинга к AA 4x, что полностью соответствует различиям между режимами 16x и 16xQ.

Наконец, следует отметить, что играбельные fps сохранились даже в разрешении 2560х1600 в режиме 16xQ.



F.E.A.R.



Результаты тестов: F.E.A.R.

В F.E.A.R. картина иная: во всех разрешениях мы имеем двукратные падения, которые опять увеличиваются по мере роста разрешения. Впрочем, играбельность опять сохраняется даже в самых тяжелых режимах.



Splinter Cell Chaos Theory (No HDR)



Результаты тестов: SCCT (No HDR)

В Splinter Cell картина вновь меняется: игра явно упирается во что-то помимо скорости закраски буфера кадра, и в результате даже самый качественный и сложный режим 16xQ демонстрирует не более чем 35% падения производительности.



Call Of Duty 2



Результаты тестов: СOD2

Нечто подобное мы можем наблюдать и в Call of Duty 2 с той лишь разницей, что падение в процентном отношении стало еще меньше.

Мы могли бы объяснить подобное поведение антиалиасинга в SCCT и CoD2 наличием в этих играх большого количества сложных шейдеров, которые заставляют ускоритель делать множество тактов, на протяжении которых ROP успевают записать в буфер все необходимые сэмплы, но эта теория несколько меркнет в свете результатов, продемонстрированных GeForce 8800 GTX в F.E.A.R., которая также может похвалиться наличием в своём коде большого количества шейдерных программ.

Чем же обусловлено столь сильное падение производительности в F.E.A.R.? Возможно, дело кроется в сырых драйверах? Остается надеяться, что время ответит на эти вопросы.



Half-Life2: ixbt01 demo



Результаты тестов: Half-Life2, ixbt01

Half-Life 2 настолько сильно упирается в процессор, что AA 16x на GF8800GTX в HL2 оказывается практически бесплатным.

Чего, впрочем, нельзя сказать про режим 16xQ, который начинает «сдавать» с разрешения 1600x1200 и приводит к почти двукратному падению производительности в разрешении 2560x1600, что, впрочем, не мешает GeForce 8800 GTX выдавать в этом разрешении 77 средних fps.



DOOM III High mode



Результаты тестов: DOOM III

Несмотря на весьма существенное падение производительности в режиме 16xQ, GeForce 8800 GTX всё равно обеспечивает более чем играбельные fps в Doom 3 даже в разрешении 1600х1200.

Вместе с тем подобные более чем двукратные падения производительности настораживают: а если бы речь шла не о Doom 3, а о современной игре, в которой и без AA fps не слишком высоки?

Chronicles of Riddick, demo 44



Результаты тестов: Chronicles of Riddick, demo 44

Общая картина фактически повторяет увиденное выше в Doom 3, разве что абсолютные fps несколько ниже. В некотором смысле это позволяет надеяться на то, что производительности антиалиасинга под OpenGL сейчас сдерживается сыростью драйверов, и что в дальнейшем проценты будут снижаться, а fps — расти.

Но давайте посмотрим на качество, демонстрируемое протестированными нами режимами антиалиасинга.

Качество антиалиасинга GeForce 8800

Приступив к исследованию качества антиалиасинга мы столкнулись с забавным затруднением: оказалось очень непросто найти игровые приложения, в которых была бы хорошо видна разница между всеми режимами антиалиасинга. Как-то так получилось, что в последние годы основная часть выпускаемых игр либо представляла собой мрачные темные стрелялки, в которых не всегда можно было понять работает ли AA вообще (Doom 3, Quake 4, Prey, F.E.A.R., Splinter Cell); либо не позволяла сохраняться в произвольных местах (Call of Duty 2, Fahrenheit, Prince of Persia: The Two Thrones, Tomb Raider: Legend); либо вообще не поддерживала антиалиасинг (Gothic 3).

Поэтому мы, сами того не заметив, вернулись к уже набившим оскомину играм 2004-го года — Far Cry и Half-Life 2. В своё оправдание скажем лишь, что мы исследуем качество антиалиасинга, а именно эти игры наиболее ярко демонстрируют все его слабые стороны. Наконец, на десерт у нас есть и одна новинка — The Elder Scrolls 4: Oblivion, который мы добавили в наши тесты, чтобы проверить, как GeForce 8800 справляется с антиалиасингом одновременно с FP16 HDR.

Far Cry

Сначала посмотрим на базовое качество сглаживания границ треугольников на примере сцены из Far Cry.

  GeForce 7800 GeForce 8800 Radeon X1900
2x
  JPG | PNG JPG | PNG JPG | PNG
4x
  JPG | PNG JPG | PNG JPG | PNG
8x/6x
    JPG | PNG JPG | PNG
8xS/8xQ
  JPG | PNG JPG | PNG  
16x
    JPG | PNG  
16xQ
    JPG | PNG  


Сначала — о режимах одной лишь GF8800. Режим 4x предсказуемо лучше режима 2x, а вот начиная с режима 8x (напоминаем, что за неимением лучших вариантов мы используем названия режимов из панели управления ForceWare) обнаруживаются некоторые странности.

Во-первых, режим 8x, конечно, лучше режима 4x, но явно не в два раза, что следует из его названия.

Во-вторых, режим 16x определенно уступает по качеству режиму 8xQ, а режим 16xQ почти не отличается от режима 8xQ. Таким образом, первый же тест подтверждает наше предположение о том, что режим 16x может уступать по качеству «меньшему» режиму 8xQ — еще раз советуем MVIDIA пересмотреть наименования режимов антиалиасинга в панели управления драйвером.

Теперь — о сравнении антиалиасинга между разными видеокартами. На наш взгляд, с режимами 2x и 4x все три видеокарты справились одинаково; небольшая разница в пользу GeForce на приведенном нами фрагменте скриншота обусловлена отличиями в наклонах решеток расположения субсэмплов.

Затем, режим 8x GeForce 8800 оказался сопоставимым по своему качеству с режимом 6x на Radeon X1900 (еще один повод для NVIDIA задуматься над переименованием режимов), а 8xQ — с режимом 8xS на GeForce 7800.

В целом следует признать, что режимы 8xQ и 16xQ обеспечивают почти идеальное (и почти идентичное) качество сглаживания границ треугольников и существенно превосходят в этом лучший режим видеокарты Radeon — 6x.

Half-Life 2

Перейдем к тестированию в Half-Life 2. Здесь мы хотим проверить не только качество сглаживания границ треугольников, но и посмотреть, насколько эффективно GF8800 справляется со сглаживанием прозрачных текстур. Поэтому первый набор тестовых скриншотов делался в режимах Transparency AA Multisampling (на GF) и Adaptive AA Performance (на R). Итак…

Transparency AA Multisampling / Adaptive AA Performance

Сначала — первый фрагмент скриншота:
Фрагмент №1


  GeForce 7800 GeForce 8800 Radeon X1900
2x
  JPG | PNG JPG | PNG JPG | PNG
4x
  JPG | PNG JPG | PNG JPG | PNG
8x/6x
    JPG | PNG JPG | PNG
8xS/8xQ
  JPG | PNG JPG | PNG  
16x
    JPG | PNG  
16xQ
    JPG | PNG  


Несколько неожиданным образом режим 8xQ на GF8800 не справился со сглаживанием наклоненного столба, уступив по качеству не только режимам 16x и 16xQ, но и режиму 8x.

Что же до сравнения видеокарт между собой, то неожиданную прыть продемонстрировал Radeon: режим 6x почти догнал по качеству сглаживания границ треугольников режимы 16x и 16xQ на GF8800, а по качеству сглаживания прозрачных текстур (решетки на стреле крана) фрагмента Radeon и вовсе оказался вне конкуренции (что, в общем-то, не удивительно, учитывая особенности функционирования режима TAA MS на GeForce).

(Обратите внимание — на GF8800 в HL2 наблюдаются проблемы с правильным отображением тумана. На данный момент решения у этой проблемы нет.)

Фрагмент №2

  GeForce 7800 GeForce 8800 Radeon X1900
2x
  JPG | PNG JPG | PNG JPG | PNG
4x
  JPG | PNG JPG | PNG JPG | PNG
8x/6x
    JPG | PNG JPG | PNG
8xS/8xQ
  JPG | PNG JPG | PNG  
16x
    JPG | PNG  
16xQ
    JPG | PNG  


На этом фрагменте становится очевидной разница в качестве сглаживания прозрачных текстур — уже начиная с режима 4x Radeon оказывается по этому показателю вне досягаемости. Вместе с тем, со сглаживанием границ треугольников лучше справляется все же GF8800.

Таким образом по качеству сглаживания границ трегольников лидирует NVIDIA, но если принять во внимание качество сглаживания прозрачных текстур, то победа остаётся за Radeon с AA 6x, с которым не смог справиться даже режим 16xQ.

Transparency AA Supersampling / Adaptive AA Quality

Впрочем, нам трудно представить себе человека, который будет использовать режим TAA MS на GF8800 — эта видеокарта обладает избыточной производительностью, и сейчас нет никакого смысла понижать на ней сложность режимов антиалиасинга. Поэтому давайте посмотрим на тот же скриншот, но уже сделанный в режимах Transparency AA Supersampling / Adaptive AA Quality:

Фрагмент №1

  GeForce 7800 GeForce 8800 Radeon X1900
2x
  JPG | PNG JPG | PNG JPG | PNG
4x
  JPG | PNG JPG | PNG JPG | PNG
8x/6x
    JPG | PNG JPG | PNG
8xS/8xQ
  JPG | PNG JPG | PNG  
16x
    JPG | PNG  
16xQ
    JPG | PNG  

Непонятное поведение режима 8xQ на GF8800 продолжается, а вот качество сглаживания прозрачных текстур на обеих GF несомненно выросло и фактически сравнялось с таковым у Radeon.

Давайте посмотрим на второй фрагмент того же скриншота:

Фрагмент №2

  GeForce 7800 GeForce 8800 Radeon X1900
2x
  JPG | PNG JPG | PNG JPG | PNG
4x
  JPG | PNG JPG | PNG JPG | PNG
8x/6x
    JPG | PNG JPG | PNG
8xS/8xQ
  JPG | PNG JPG | PNG  
16x
    JPG | PNG  
16xQ
    JPG | PNG  

В первых трех режимах качество сглаживания прозрачных текстур между всеми видеокартами практически сравнялось, но… на GF8800 режим 8xQ неожиданно серьезно проиграл режиму 8x (чего, по идее, быть не может ни при каких раскладах).

Еще один любопытный момент заключается в анализе «утончения» тонких линий в различных режимах на разных видеокартах. Подобное «утончение» является признаком работы гамма-коррекции антиалиасинга. И тут мы сталкиваемся с одним странным явлением: на Radeon «утончение» наблюдается только на скриншоте с AA 6x (это при том, что на Radeon нельзя управлять гамма-коррекцией; она на нём считается «всегда включенной»), в то время как на GF8800 его отсутствием выделяется скриншот с AA 8xQ.

Почуяв тут нечто неладное мы решили сделать еще одну серию тестов, отключив на этот раз в настройках ForceWare гамма-коррекцию.

TAA Supersampling + No Gamma Correction / Adaptive AA Quality

Фрагмент №1

  GeForce 7800 GeForce 8800 Radeon X1900
2x
  JPG | PNG JPG | PNG JPG | PNG
4x
  JPG | PNG JPG | PNG JPG | PNG
8x/6x
    JPG | PNG JPG | PNG
8xS/8xQ
  JPG | PNG JPG | PNG  
16x
    JPG | PNG  
16xQ
    JPG | PNG  

Обратите внимание, насколько резко выросло качество AA в режиме 8xQ! Но в чем заключается связь между отключением гамма-коррекции и столь неожиданным влиянием этого шага на всего лишь один режим антиалиасинга на GF8800? Давайте посмотрим на второй фрагмент:

Фрагмент №2

  GeForce 7800 GeForce 8800 Radeon X1900
2x
  JPG | PNG JPG | PNG JPG | PNG
4x
  JPG | PNG JPG | PNG JPG | PNG
8x/6x
    JPG | PNG JPG | PNG
8xS/8xQ
  JPG | PNG JPG | PNG  
16x
    JPG | PNG  
16xQ
    JPG | PNG  

Отключение гамма-коррекции на GF7800 и 8800 действительно расставило всё по своим местам — режимы 8xQ и 16xQ вернули себе звание самых качественных режимов не только на GF8800, но и вообще среди всех современных видеокарт. Но чем вызвана подобная деградация качества при включении GC? Нам хочется верить, что это всего лишь ошибка в драйверах ForceWare 97.02, которая будет исправлена в ближайшем будущем. Пока же пользователям GF8800 стоит помнить о том, что включение гамма-коррекции на их видеокарте далеко не всегда приводит к повышению качества антиалиасинга.

Не менее любопытное поведение достаточно неожиданно продемонстрировал Radeon X1900: если сравнить скриншоты с Radeon в режимах 2x и 4x с аналогичными режимами на GF, то становится ясно, что в HL2 в режимах 2x и 4x на драйверах Catalyst 6.11 на Radeon X1900 не работает гамма-коррекция! Как такое вообще возможно? Это вопрос к программистам ATI/AMD…

The Elder Scrolls 4: Oblivion

Последней игрой в нашей тестовой обойме, как мы и обещали, будет TES4: Oblivion. Но прежде чем перейти к самим скриншотам мы вынуждены вновь обратиться к теме драйверных глюков и багов.

Дело в том, что тестирование в Oblivion едва не сорвалось из-за совершенно непонятного поведения Catalyst при форсировании в этой игре антиалиасинга. Во-первых, по не до конца понятной нам причине особый Chuck Patch, созданный ATI специально для форсирования AA при включенном HDR в Oblivion, вот уже полгода не могут научить форсировать режим 6x — уже и Chuck Patch встроен в официальный Catalyst; уже и дополнение для Oblivion вышло; уже NVIDIA выпустила GF8800, которая влегкую форсирует в Oblivion любой режим AA безо всяких «патчей»; а программисты ATI всё никак не найдут способа форсировать не только 2x и 4x, но и 6x…

Но тут, как говорится, «сами себе злобные буратины», просто не будет у нас для Radeon режима 6x и всё. Однако потом случилось «во-вторых». Началось всё с того, что у нас вообще не форсировался никакой антиалиасинг на Radeon X1900 в Oblivion. Мы перепробовали все мыслимые версии Chuck Patch и Catalyst, но ни одна AA форсировать не желала. Тогда мы вечно молодым методом тыка по настройкам панели управления определили, что форсирование AA в Oblivion на Radeon не работает, если… отключен Catalyst A.I. (стоит ли объяснять, что для тестирования качества мы Catalyst A.I. всегда отключаем, чтобы устранить оптимизации текстурной фильтрации и подмену шейдеров?).

Желающие объяснить нам глубокую логику подобного поведения настроек драйвера Catalyst могут сделать это на форуме, в ветке обсуждения нашего исследования. Мы же тихо сказали несколько добрых ласковых слов в адрес ATI и перешли к сравнению качества:



  GeForce 8800 Radeon X1900
2x
  JPG | PNG JPG | PNG
4x
  JPG | PNG JPG | PNG
8x
  JPG | PNG  
8xQ
  JPG | PNG  
16x
  JPG | PNG  
16xQ
  JPG | PNG  


Итак, режимы 2x и 4x по своему качеству фактически одинаковы между GF8800 и RX1900. Более высоких режимов Radeon не поддерживает. А жаль, потому как режимы 8xQ и 16xQ вновь оказываются самыми качественными и не оставляют никаких шансов режимам, которые доступны на Radeon. Также можно наблюдать уже отмеченную нами аномалию: режим 16x уступает по качеству режиму 8xQ.

В целом же можно сделать вывод, что NVIDIA не врёт и что ROP G80 действительно всё равно, для буферов какого формата рассчитывается антиалиасинг, потому что качество и логика следования режимов, форсированных в Oblivion, ничем не отличается от качества и логики следования режимов в Far Cry и Half-Life 2 с отключенной гамма-коррекцией.

Ну, а Oblivion с HDR и форсированным антиалиасингом 16xQ выглядит просто потрясающе ;-)

Заключение и выводы

Foxconn GeForce 8800 GTX 768MB PCI-E — по сути очередная референс-карта, однако выгодно отличающаяся от остальных как комплектом поставки, так и небольшим модифицированием системы охлаждения. Поэтому если не будет перекосов в ценах, то данный продукт весьма интересен любителям всего самого мощного и нового.

Карта отработала отменно, нареканий не было,

Более полные сравнительные характеристики видеокарт этого и других классов вы можете увидеть также в наших 3DGiТогах.

Что касается нового антиалиасинга чипа G80, то по результатам тестирования мы можем сделать следующие выводы:

  • Вне всяческих сомнений новые режимы антиалиасинга GeForce 8800 обеспечивают непревзойденное качество сглаживания краёв треугольников и как минимум не уступают конкурентам в сглаживании прозрачных текстур. Фактически мы близки к тому, чтобы утверждать, что режимы 8xQ и 16xQ являются достаточными для рисуемой в реальном времени трёхмерной графики, и смысл в дальнейшем повышении качества «игрового» AA практически отсутствует.

  • Приятно осознавать, что для большинства современных приложений производительности даже самого качественного антиалиасинга GeForce 8800 GTX более чем достаточно. Но мы не можем не отметить довольно внушительные падения от включения антиалиасинга в процентном отношении — в будущем это может привести к невозможности использования высоких степеней AA на GF8800. Вопрос заключается в том, когда это самое будущее наступит.

  • Вместе с тем, мы остались недовольны работой текущих драйверов GeForce 8800: организацией управления антиалиасингом в панели управления ForceWare и странными ошибками в работе AA в Half-Life 2. Мы надеемся, что программисты компании NVIDIA услышат наше недовольство и обратят внимание на наши советы, иначе это «но» будет постоянно висеть над в остальном совершенно прекрасном антиалиасингом GeForce 8800.

Наконец, необходимо понимать, что сегодня мы сравнивали качество антиалиасинга нового поколения видеочипов NVIDIA с качеством, обеспечиваемым старыми, уходящими поколениями видеочипов Radeon. Полноценное сравнение, результаты которого будут справедливы не только на ближайшие несколько месяцев, но и, возможно, на последующие несколько лет, мы сможем провести не раньше, чем компания AMD выпустит первые видеокарты на базе чипа R600.

По результатам исследования Foxconn GeForce 8800 GTX 768MB PCI-E получает награду в номинации «Отличная поставка» (за декабрь).


А также в номинации «Оригинальный дизайн».



Справочник по ATI RADEON X1300-1600-1800-1900-х серий

Справочник по NVIDIA GeForce 7300-7600-7800-7900-х серий





Благодарим компанию FOXCONN Russia и лично Александра Трухачева за предоставленную видеокарту

Блок питания для тестового стенда предоставлен компанией TAGAN

Монитор Dell 3007WFP для тестовых стендов предоставлен компанией NVIDIA




Дополнительно

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.