Выбор драйвера: какой лучше? Часть 1.
Выбор драйвера для Riva TNT2

02.01.2000


Качество изображения

  Не знаю, задавались ли вы этим вопросом, а если да, то к какому выводу пришли. Рассмотрим все подробнее, на примере Quality-тестов Game2 из 3Dmark 2000. Сразу скажу, что разница есть и она большая, но приводить кучу скринов для каждой из протестированных версий драйверов я не буду и вот почему — разница эта есть между всей линейкой 2.x и драйверами 3.68/5.22/6.18/6.31. Никакой разницы в качестве внутри линейки нет — все 2.х дают одинаковое изображение и 3.68/5.22/6.18/6.31 дают одинаковое изображение, поэтому я буду сравнивать только два драйвера 2.08 и 6.31
  Итак, фрагмент:

Detonator 2.08

Detonator 6.31

  Разница очевидна и видна невооруженным глазом. Detonator 6.31 дает более смазанную картинку. Эта разница настолько велика, что, кажется, может перечеркнуть все предыдущие тесты и однозначно склонить вас к установке именно драйвера серии 2.х. Почему же драйверы 3.68/5.22/6.18/6.31 «мажут»?



Mipmap LOD Bias

  Во всех Detonator-ах есть настройка Mipmap Detail Level, которая и регулирует LOD Bias. Значение Best Image Quality соответствует LOD Bias = 0, значение Best Performance — LOD Bias = 1.25. При мип-маппинге используются несколько текстур разного разрешения, а LODBias регулирует, какие из этих текстур будут использоваться при фильтрации. Как вы уже, наверное, знаете, Best Image Quality дает более четкую картинку, а Best Performance — очень размазанную (при этом, самого «перформанса» почти не прибавляется). Соответственно, чем меньше значение LODBias (оно, кстати, может быть и дробным и отрицательным), тем более четкую картинку мы получим.
  Значение LODBias, для драйверов 6.x, задается в реестре DWORD-ключём "LODBIASADJUST" в ветке

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\
Class\Display\000x\NVIDIA\Direct3D]

  Кажется, что в детонаторах всех серий, LODBias для Best Image Quality равен нулю ("LODBIASADJUST"=dword:00000000), однако линейка 2.х таки дает более четкую картинку. Почему? Начиная с 3.x, NVIDIA изменила значения для LODBias, для доступных пресетов (Best Quality, High Quality и т.п.) и качество аналогичного 2.08, для 6.31, надо искать где-то в отрицательной их области. Но как это сделать? Ведь минимальное значение, которое можно задать в драйвере — Best Image Quality и соответственно ничего ниже задать нельзя. Можно! Правда, требуется работа, с указанным выше ключом, в реестре. Кроме того, это связано с некоторыми другими неудобствами, о которых я скажу ниже.

  Приведу несколько отрицательных значений (DWORD-ключ LODBIASADJUST задавать в десятичной системе исчисления!).

LODBias

-0.1

-0.25

-0.4

-0.5

-0.6

-0.75

-0.9

-1.0

-1.1

-1.25

-1.4

-1.5

LODBIASADJUST

255

254

253

252

251

250

249

248

247

246

245

244

  Немного поэкспериментировав с разными значениями на драйвере 6.31, пытаясь добиться картинки, аналогичной 2.х в Quality-тесте Game2, я нашел, что LODBias, равный –0.5, драйвера 6.31, идеально соответствует LOD Bias 0 драйверов 2.х (к слову, этот тест отлично для этого походит — панорамный скрин, четко видны границы мип-уровней и малейший их «сдвиг» сразу бросается в глаза, при последовательном переключении между скринами, с помощью ACDSee).

Detonator 2.08     LODBias: 0

Detonator 6.31     LODBias: — 0.5

  Можете даже не пытаться увидеть разницу, ее просто нет J. Кроме того, предлагаю вашему вниманию полные «Image Quality Game 2 скрины» Det. 2.08, 6.31 и 6.31 LODBias –0.5, в архиве ~ 785 KB.

  Здесь возникает вопрос, а почему не пойти еще дальше? Если при отрицательном LODBias картинка получается более четкой, то почему не использовать, например значения –1.0 или –2.0? Можно, но только осторожно J. При определенном отрицательном значении (разном для каждой игры), начинают вылезать артефакты (underfiltering — муар, мерцание на удаленных текстурах), причем на скрине, в большинстве случаев, картинка выглядит превосходно (очень четкой), но в динамике это «живой ковер». Попробуйте, например, прогнать тот же 3dmark 2000 Game 2 тест, со значениями LOD Bias –1.0 для 6.х драйвера, или –0.5 для 2.x драйвера и, обратите внимание, на структуру брусчатки — она уже будет не периодическая, а «волнообразно мерцающая» (см. также FAQ).
  Стоит отметить, что установка отрицательного LODBias через реестр, имеет один недостаток, — если вы зайдете в D3D-свойства детонатора и что-нибудь там измените, нажав «ОК» или «Apply», в ключ LODBIASADJUST пропишется (в зависимости от версии детонатора) либо некорректное, либо дефолтное значение (0). После чего придется прописывать отрицательный LODBias в реестр заново. Это неудобство можно частично обойти, создав файл(ы) реестра, с заранее известными значениями. В этом случае, чтобы установить желаемый LODBias, вам достаточно лишь будет «дабл-кликнуть» по соответствующему файлу, а не ковыряться в реестре вновь и вновь.
  Вот пример для LODBias –0.5

REGEDIT4
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ Class\Display\0000\NVIDIA\Direct3D]
"LODBIASADJUST"=dword:000000fc

  Только не забудьте, что создаваемые файлы, должны содержать в конце пару пустых строк, в противном случае, они не будут вносить никаких изменений в реестр.
  К сожалению, все возможности по регулировке LODBias имеются только в Direct3D. В OpenGL такой возможности нет, и программисты NVIDIA ее, похоже, добавлять не собираются. Что касается качества графики, которую дают 2.х и старшие детонаторы в OpenGL-играх, можно сказать только одно — разницы нет, все драйверы дают одинаково четкую картинку.



Артефакты

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



Линейка 2.x

  Имеет проблемы с играми на движке UT (конкретно в UT и Unreal 226 (не 225f!)), которые выражаются в ошибках в выборе текстуры для некоторых мип-уровней при использовании World Texture Detail (Skin Detail) — High. В этом случае, через некоторое время, игра (драйвер?) «путает» текстуры на мип-уровнях и, например, вместо использования на втором из них, текстуры более низкого разрешения, чем первого, использует совершенно левую, «взятую от фонаря», текстуру! Выглядит это примерно следующим образом:

UT — Detonator 2.x

  При выборе текстуры второго мип-уровня, для стен, произошла ошибка и на ее месте оказалась текстура одного из игроков (скин) J.
  Этого глюка не наблюдается на более новых версиях драйверов, а также, при использовании для 2.х, в настройках игры, World Texture Detail (Skin Detail) — Medium. Кроме того, есть данные, что этого глюка нет с некоторыми версиями UT.



Линейка 5.x

  Имеет глюки с тенями в игре Soldier of Fortune. Почти все проверенные мною драйверы этой серии (5.08, 5.13, 5.16, 5.22, 5.30) дают ненормальные, «квадратные в сеточку» тени.

Detonator 5.x

Detonator 2.x/3.x/6.x

  Я сказал «почти все» — это значит, что Detonator 5.32 — единственный из проверенных 5.х, дает нормальные тени (см. также FAQ).



5.x и 6.x

  На протестированных драйверах этих серий имеют место зависания в 32бит-цвете игры NFS PU при экстремальном разгоне видеокарты (в данном случае 166/210), чего не наблюдается на драйверах 2.х. Часто, зависон наступает в одном и том же месте и чаще всего в «Нормандии». При умеренном разгоне (например 150core/183mem) таких проблем нет. Я недавно нашел решение этой проблемы в GF-FAQ и заключается оно в отключении, в графических настройках игры, опции «Lens Flare» (световые блики от солнца). После этого NFS PU на указанных драйверах виснуть и в самом деле перестает. Природа глюка не понятна … NFS HS, например, прекрасно бегает с той же опцией «Lens Flare» на любых драйверах.



Немного об Unreal и Unreal Tournament

  В этих играх имеются некоторые проблемы, связанные не с драйверами, а самим игровым движком. Например, с точностью построения моделей оружия, в 16-битном цвете, в Unreal и в меньшей степени UT. Наиболее яркие примеры — Rocket Launcher и Enforcer:

  

  Этот глюк — результат использования W-буфера движком Unreal. W-буфер позволяет полностью избавиться от артефактов сравнения глубины на удалённых объектах. Недостатком W-буфера является плохая работа с объектами, расположенными слишком близко к камере, что и показано на скрине выше. Однако, мы можем изменить формат W-буфера в 16-битном цвете, с помощью ключа реестра:

w16Format, тип DWORD, допустимые значения 1-2, значение по умолчанию — 1.

для драйверов 2.х в ветке
[HKEY_LOCAL_MACHINE\Software\NVIDIA Corporation\RIVA TNT\Direct3D]

и для драйверов 3.x/5.x/6.x в ветке
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\
Class\Display\000x\NVIDIA\Direct3D]

  Этот ключ, скорее всего, меняет точность w-буфера (значение 1 соответствует 16-битному W-буферу, а значение 2 — 32-битному). Посмотрите на результат!

  


Об Unreal Tournament персонально

  При использовании 16-битных видеорежимов, в этой игре, модели оружия как бы "тонут" в стенах, причем w16Format эту проблему не решает L.

  

  Unwinder достал исходники Direct3D драйвера UT и выяснил причину этого глюка. При использовании 16-битного W-буфера Тим Свинни пытается избавиться от артефактов, связанных с ним, вытянув модель оружия в 4 раза по Z-координате, причем проверка у него в коде некорректная, и он растягивает модели оружия в 16-битных режимах всегда, независимо от того, используется W-буфер или нет. Соответственно, даже отключение W-буфера, не избавляет от этого артефакта. Надо сказать, что это «растягивание» частично помогло решить проблему с построением оружия в UT, (оно почти не глючит, в сравнении с Unreal), но какой ценой!

  И, наконец, стоит отметить плохое качество текстур в 16-битном цвете. Они выглядят словно «зашкуренными», нет мелких деталей L.

16bit

32bit

  Причина этого довольно странная. В Direct3D драйвере UT, Тим Свинни использовал специфические настройки первой стадии блендинга для чипов 3dfx (без этого на них не работает мультитекстурирование). Из-за этого, на чипах 3dfx, в Direct3D, картинка значительно отличалась от других карт (очень сильно искажены цвета). Решил эту проблему Тим довольно "оригинальным" способом: он просто домножил RGB-компоненты текстур для других чипов на 1.4 для того, чтобы приблизить качество текстур к искаженным Voodoo'шным. Именно из-за этого и получилось такое низкое качество 16-битных текстур в Direct3D, т.к. при домножении слишком ярких цветов на 1.4, происходит потеря цветовой информации. Здесь можно посоветовать только, играть в 32-бит, в котором последних двух глюков нет.
  Однако, если вы играете в Unreal Tournament в 16-ти битном, например у вас недостаточно мощная машина или просто нужна максимальная скорость для многопользовательской игры, можете попробовать подправленный Unwinder-ом, UT D3D-драйвер, в котором указанные глюки убраны. Просто скопируйте его в каталог Unreal Tournament\System, поверх имеющегося (не забыв предварительно забэкапить последний J). Драйвер тестировался на UT v.4.32 на GF256DDR и TNT2Pro, глюков замечено не было. На более старых версиях игры, он работать не будет, на более новых — возможно будет.

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

 1 

 2 

 3 

 4