Что DirectX грядущий нам готовит

или Хочешь играть - умей переделать Radeon


Король умер?

Основы компьютерного сообщества потрясены до основания. Бессменная майка лидера графических решений американской nVidia на время перешла к ее основному конкуренту канадской Ati. Похоже, легендарный суффикс FX, взывающий к древним языческим культам вуду и давший название новой линейке легендарных GeForce, сыграл с nVidia зловещую шутку. Неудачи посыпались как из рога изобилия. Cначала затяжной выход NV30. Результат - полный провал (использование дорогой памяти DDR-II, громоздкая система охлаждения, по звуку напоминающая рев реактивной турбины на атомной электростанции, дефицит работоспособных чипов, низкая производительность). Далее еще хуже - скандал с Futuremark по поводу "заточки" драйверов в сторону увеличения производительности и ухудшения качества в 3D Mark 2003 (кстати, вспыхнувший недавно с новой силой). Компьютерные издания пестрят броскими заголовками, зачастую нелестными в адрес видеокарт nVidia. Что же остается делать нам, поколению геймеров, выросших на линейке TNT-GeForce4? Мы любили nVidia за соотношение цена/качество, сбалансированные драйверы, высочайшую производительность. И что же, в один момент разрушить "этот дивный мир"? Перейти на линейку Radeon? Однозначный ответ трудно представить. Однако сегодняшняя ситуация до боли напоминает многолетней давности противостояние умирающего 3D-монстра 3Dfx и стремительно взлетевшую на графический Олимп nVidia. Многие поклонники Voodoo c пеной у рта доказывали, что Voodoo3 быстрее TNT2 и что Glide гораздо круче OpenGL. Но это было далеко не так. "Энвидиевские" карточки обгоняли "вудушки", игры разрабатывались под OpenGl, а поклонникам брэнда 3Dfx оставалось только скрипеть зубами и переплачивать деньги за продукцию, значительно уступающую в скорости. Так что прежде чем покупать новую видеокарту, постарайтесь забыть это страшное слово "привычка"!


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

Так в чем же дело? Почему именно в 2003 году так кардинально изменилась обстановка в 3-D мире? Попробуем спокойно и обстоятельно разобраться в реально возникшей проблеме.

 
  1. DirectX vs.OpenGl. Если в тестах (как профессиональных, так и игровых) под OpenGL линейка FX опережает или идет наравне c Radeon, то в DirectX терпит досадное поражение. Ну и что скажет стойкий "энвидиевец": "Cуществует огромное количество игр под OpenGL, так почему я должен продать свой Ti4200 за бесценок и купить дорогущий Radeon 9800?". Cуществует. Но что будет дальше? Вот в чем вопрос. Основной движок, использующий OpenGl (Quake3), на сегодняшний день безнадежно устарел, и наиболее дальновидные разработчики кликнули своими мышками в сторону DirectX. Кстати, вспомните-ка, в какую последнюю игру вы играли под OpenGl? EliteForce2, Worms3D. А под DirectX? MaxPayne2, Halo, Need For Speed Underground, Korean War: Forgotten Conflict, StarWars Galaxies, Far Cry, XIII, Thron 2.0, City Of Heroes, Madden2004, Vampire, FFXI, Collin McRae 3, Kelly Slater's Pro Surfer, Perimeter, Painkiller, Black9, FlightSim 2004, Halo, Call of Duty, HalfLife2, Tomb Raider Angel Of Darkness. Вот далеко не полный список игр, уже вышедшиx или готовящихся к выпуску в недалеком будущем. Комментарии, как говорится, излишни. Cитуация снова до боли знакомая. Кто сейчас помнит такой API, как Glide? Он разрабатывался исключительно под видеокарточки 3Dfx, игр под него было огромное количество, однако его благополучно вытеснил OpenGL, который, как известно, великолепно работал и сейчас работает с картами nVidia.
  2. Microsoft+Ati=DirectX9. Все вышеперечисленные игры, которые наверняка займут лидирующие места как на международных игровых выставках, так и на компьютерах хардкорных геймеров, требуют видеокарт, аппаратно поддерживающих DirectX9. Карты FX тоже поддерживают DirectX9, имеют более высокие частоты ядра и памяти, чем конкуренты. Так почему же они проигрывают линейке Radeon, особенно в высоких разрешениях и при включенной анизотропной фильтрации? Во-первых, DirectX9 разрабатывался Microsoft вместе с инженерами Ati и "затачивался" непосредственно под линейку Radeon 9500-9800. Во-вторых, если раньше скорость работы видеокарты зависела от пропускной способности памяти и скорости заполнения, то с выходом DirectX8 и особенно DirectX9 основная нагрузка легла на пиксельные шейдеры. Естественно, что шейдеры, разработанные Ati, воспринимаются DirectX9 c большим энтузиазмом:). В-третьих, компания nVidia создала собственный компилятор шейдеров, который функционирует приблизительно так. Пиксельные шейдеры DirectX 9 не реализовываются напрямую GPU. DirectX перемещает шейдер в промежуточный код, а затем драйвер видеокарты компилирует его в команды пиксельного процессора. Во время компиляции промежуточного кода реализуется NVIDIA Unified Compiler Technology, технология, входящая в новый революционный драйвер ForceWare, пришедший на смену устаревшим "детонаторам". Главная задача компилятора - заставить на выходе работать команды с максимальной скоростью без потери качества, применив команды, чья аппаратная поддержка есть только у GeForce FX. То есть, грубо говоря, производительность линейки Fx сильно зависит от "правильной" заточки драйверов. Очередной скандал с очередным билдом 340 3D Mark 2003 снова показал, что эти заточки серьезно ухудшают качество линейки FX, в то время как Radeonы остаются на прежних местах. Однако справедливости ради надо отметить, что драйверы серии ForceWare вывели линейку FX из совсем уж плачевного состояния. Но вот какую линейку?
  3. Oтсутствие альтернативы цена/качество/производительность. Геймерское сообщество до сих пор с теплом вспоминает GeForce Ti4200. Цена до 200 долларов, отличная производительность, гибкие возможности разгона, с легкостью превращающие крепкого середнячка в hi-end-решение. В 2003 году nVidia, в основном, продавала три видеокарты - FX 5200, FX5600, FX5900. Все аппаратно поддерживали DirectX9, но только одна, FX5900, составила серьезную конкуренцию флагману Ati Radeon9800, две остальные даже Ultra-версии едва обгоняли (а в некоторых тестах безбожно отставали от GeForce Ti4200), не говоря уже о позорной капитуляции перед линейкой Radeon9500-9700.


Что делать?

Если логические доводы, а также тестирование серьезных компьютерных изданий для вас пустой звук, а компания nVidia - это непререкаемый авторитет в области игровых решений, и скорость видеокарты является решающей в покупке, выход один - GeForce FX 5950Ultra (разогнанный вариант FX 5900). Однако не забудьте про деньги, которые берут из больших толстых кошельков:). Если вы хотите получить видеокарту, главное достоинство которой цена/качество/производительность, советую присмотреться к таблице 1 (цены указаны по состоянию на 30 ноября 2003 года www.kosht.com).

Название карты Типичный объем памяти Название ядра Техпроцесс Шина памяти Ядро/ Память Количество конвейеров рендеринга Цена
Radeon9500 64Mb R300 0.15 128-bit 270/540 4(8) 86-150
Radeon9500 128Mb R300 0.15 128-bit 270/540 4(8) 155-165
Radeon9500 128Mb R300 0.15 256-bit 270/540 4(8) 165-173
Radeon9500Pro 128Mb R300 0.15 128-bit 270/540 8 ?
Radeon9700 128Mb R300 0.15 256-bit 270/540 8 ?
Radeon9700Pro 128Mb R300 0.15 256-bit 325/620 8 ?
Radeon9600SE 128Mb RV350 0.13 64-bit 325/400 4 ?
Radeon9600 128Mb RV350 0.13 128-bit 325/400 4 115-142
Radeon9600Pro 128Mb RV350 0.13 128-bit 400/600 4 164-222
Radeon9600XT 128Mb RV360 0.13 128-bit 500/600 4 ?
Radeon9800 128Mb R350 0.15 256-bit 325/580 8 279-302
Radeon9800SE 128Mb R350 0.15 128-bit 325/500 4(8) 213-226
Radeon9800SE Gold 128Mb R350 0.15 256-bit 360/680 4(8) ?
Radeon9800Pro 128Mb R350 0.15 256-bit 380/680 8 360-541
Radeon9800XT 256Mb R360 0.15 256-bit 412/730 8 581-623

Сразу отметим, что видеокарты Radeon 9000-9200 не были включены в "белый список". Несмотря на то, что они более выигрышные, по сравнению с FX 5200 DirectX9, а значит, и пиксельные шейдеры 2.0 они не поддерживают, поэтому в 2004 году на них не поиграешь в высоких разрешениях и с включенной анизотропной фильтрацией. Как видите, линейка Radeon 9500-9800 (дело в том, что все карты этого семейства отличаются друг от друга частотами ядра и памяти и незначительными изменениями, а в остальном это старая-добрая архитектура R300) достаточно многочисленна и самое главное - сделать правильный выбор. Radeon 9700-9800 заранее отбрасываем. По производительности и качеству они нас устраивают, однако цена свыше 200 долларов устраивает меньшую часть геймеров. Остаются Radeon 9500, 9500Pro, 9600Pro. Рассмотрим их подробнее. 9600Pro - достаточно свежее решение с очень высокими для карт такого ценового диапазона частотами ядра и памяти. Однако она имеет шину доступа памяти 128-bit и четыре конвейера рендеринга. 9500Pro тоже имеет шину доступа памяти 128-bit, но конвейеров рендеринга уже восемь. А вот и самый интересный экземпляр - Radeon 9500, имеющий 256-bit шину доступа памяти и 8 конвейеров рендеринга, четыре из которых закрыты. На нем остановим наш выбор. Так почему же из такого многообразия продукции Ati мы выбрали устаревшую карту, снятую с производства, а не новомодный Radeon 9600Pro или Radeon 9600XT. Cкоростные показатели ядра и памяти, как мы это увидели в случае с FX, не всегда свидетельствуют о высокой производительности.

А наличие 256-bit шины доступа памяти и возможность включения четырех дополнительных конвейеров позволяют нам получить настоящее hi-end решение Radeon9700. Как правило, карты с заблокированными конвейерами выпускались компаниями Saphire или PowerColor, внешне они похожи друг на друга как две капли воды, так как обе использовали референс дизайн от Ati. Правда, у первой лучше разгонялась память, а у второй - ядро. Появление этих карт вызывало бурю восторгов в среде компьютерных энтузиастов (примечателен тот факт, что цены на них в течение года не то что упали, но даже чуть выросли).


Немного практики

Первый способ для разблокировки конвейеров был достаточно экстремальным, требовалась перепайка резистора, затем последовал более гуманный метод: расстояние между резисторами заливалось токопроводящим клеем. Третий, самый безопасный, был разработан Алексеем Николайчуком, автором бессмертной утилиты RivaTuner. Четыре конвейера включались программно. Нам попался экземпляр от компании PowerColor, имеющий на борту память Infineon cо временем доступа 3.6 нс. Итак, приступим.

  1. Распаковываем драйверы Сatalyst в отдельную папку.
  2. Запускаем патч SoftR9x00, находящийся по адресу RivaTuner\PatchScripts\Ati.
  3. В выпадающем списке выбираем файл ati2mtag.sy_ (если используем официальные драйверы) или ati2mtag.sys (если используем модифицированные, например, radeon2.ru).
  4. Устанавливаем пропатченный драйвер через диспетчер устройств, перегружаемся.
  5. Убеждаемся, что все прошло успешно. RivaTuner сообщает о 8 конвейерах рендеринга. DeviceID в свойствах видеокарты показывает 4E44 (если бы модификация не прошла, было бы 4144). Запускаем тесты и игры пока в демонстрационном режиме. Дело в том, что удачной разблокировке поддаются порядка 70% видеокарт, в остальных случаях появляются артефакты в виде "шахматных досок". Программная переделка удалась!!!


Много тестов

Тестирование проводились в следующей конфигурации: материнская плата EpoX 8KHA+, AtlonXP T-bred 2600+(155X13), 512 Mb PC2700, Seagate Barracuda 4 40Gb, BP PowerMan300WT, SB Live 5.1, WindowsXP Pro SP1, VIAHyperion4in1449v, Catalyst 3.9, DirectX 9.0В). Тесты и игры запускались в двух вариантах по умолчанию и в максимальных настройках и только в разрешении 1024x768 (больше не позволял 15-дюймовый LCD-монитор).

  Radeon9500 270/540 Radeon9500 (9700) 270/540 Radeon9500 (9700) 350/550 Radeon9800 380/660
3DMark 2001SE(default) scores 10257 12483 12876 16270
3DMark 2001SE(6AA) scores 4822 7938 8736  
3Dmark2003b.3.3.0(default) scores 2767 4172 4789 5600
3Dmark2003b.3.3.0(6AA/16AF) scores 834 1410 1613  
Aquamark3(default) fps 20.77 29.9 32.7 40
Codecreatures Benchmark Pro 1.0(default) fps 21.8 34.2 41.2 46
Codecreatures Benchmark Pro 1.0(4AA) fps 15.5 24.1 27.7  
GunMetal 1.20S Test1(default) fps 9.67 17.51 19.87 29
GunMetal 1.20S Test2(default) fps 12.19 22.22 25.37 36.8
X2-Rolling Demo(default) fps 27.98 39.12 41.15  
Quake3 HighQuality demo Quaver fps 178.9 192.8 193  
Seriuos Sam SE OpenGL(default) demo Yodeller fps 138.6 152.2 153  
Unreal 2(default) fps 60.51 76.95 78.91  
Halo(maximum) fps 19.46 30.9 36.61  
Tomb Raider Angel of Darkness (default) fps 26.67 36.85 43.3  
Tomb Raider Angel of Darkness (maximum) fps 13.23 27.44 32.6  

Включение дополнительных четырех конвейеров дало значительный прирост в производительности. Теперь попытаемся разогнать память и ядро, опять-таки, с помощью RivaTuner. Но тут нас ожидало разочарование: память не хотела гнаться. Максимум, что удалось выжать, это 10 МГц. Зато ядро гналось без проблем, что повлекло увеличение cкорости в тестах и играх, аппаратно использующих DirectX Codecreatures Benchmark Pro, Aquamark3, Halo. Зато игры под OpenGl Quake3, Serious Sam никак не отреагировали на это радостное событие:). Кстати, вы обратили внимание на четвертую колонку нашей таблицы? Дополнительное тестирование проводилось на материнской плате EpoX RDA3, AthlonXP Barton 3000+(200X10.5), 512 Mb PC3200, Radeon9800 (380/660). Если сравнить наш Radeon и Radeon9800 (380/660), то можно увидеть, что прирост скорости, по сравнению с ценой, не очень высок. Однако пусть цифры не вводят вас в заблуждение. В тестах нового поколения битва идет за каждый fps. И в этих тестах модифицированный Radeon выглядит весьма достойно.


Утешительные выводы

В следующем году выйдет достаточное количество игр, поддерживающих DirectX9. И прежде всего, HalfLife2. В этой игре, по предварительным тестам, карты от Ati работают, в среднем, на 30% быстрее, чем карты от nVidia. Однако OpenGL тоже нельзя сбрасывать со счетов. Так как разработкой оного занимается великий и ужасный Джон Кармак, с выходом Doom3 ситуация может резко измениться. Но обещанного "Дума" три года ждут. А мы живем днем сегодняшним.

Автор благодарит Зубовича Сергея и Максимова Владимира за помощь в написании статьи.

Александр ЗЕЛЕНЕР,
abit@tut.by

Версия для печатиВерсия для печати

Номер: 

51 за 2003 год

Рубрика: 

Hardware
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!
 

Комментарии

Аватар пользователя Грунтов Дима
Отличная статья. Молодец Александр. Только вот одна ошибочка имеется: при перечислении игр Halo два раза написал.
Аватар пользователя Killer{R}
Ну зато может сам писал а не Copy-Paste юзал как некоторые другие авторы. Хотя... с другой стороны и с копи-пасте можно перенять чужие ошибки )