Настройки Reference драйверов Detonator


Думаю, рассказывать владельцам продукции nVidia что такое Detonator не стоит. Для многих это слово стало синонимом слова "драйвер".

Появился он осенью 1998 года, одновременно с триумфальным чипсетом Riva TNT, и, вероятно, nVidia не предполагала делать его универсальным для всех своих будущих продуктов на несколько лет вперед. Но так уж получилось, что их новый ускоритель Riva TNT2, вышедший весной 1999 года, архитектурно совершенно не отличался от предшественника, поэтому делать отдельные драйвера для него не было никакого смысла. Отсюда, скорее всего, и появилась достаточно оригинальная идея — выпускать единый универсальный драйвер для всех продуктов сразу. Это решение дает несколько важных преимуществ. Во-первых, у пользователей не будет проблем с совместимостью. Во-вторых, это обеспечивает регулярное обновление драйверов даже для устаревших ускорителей. Ну, а в-третьих, у всех ускорителей nVidia почти совершенно одинаковые настройки. Это позволяет не проводить исследования каждого ускорителя, а лучше исследовать драйвер сразу для всех. Чему и посвящена эта статья.

Основное внимание будет уделяться последним драйверам Detonator серии 5.xx. Настройки всех версий драйверов очень схожи, поэтому почти все, сказанное о нем, будет справедливо и для остальных.

Настройки

В главном разделе драйвера можно узнать версию BIOS, количество установленной памяти (системной и локальной), процессор и другую полезную информацию. Но в нем нет никаких настроек, поэтому мы, не задерживаясь, переходим к самому интересному — Additional Properties. Это меню содержит несколько закладок: Color Correction, Overlay Color Control, Direct3D Settings, OpenGL Settings и Other Options. Рассмотрим их все по порядку.

Color Correction

В этом разделе есть возможность достаточно тонкой настройки цветов. Можно менять яркость (Brightness), контрастность (Contrast) и гаммы (Gamma). Причем настраивать можно как отдельно каждый цветовой канал, выбирая для него все три параметра, так и все цвета сразу, как в настройках монитора. Также можно сохранять созданные схемы и быстро менять в любой момент. Вероятно, все это может пригодиться для людей, профессионально работающих с графикой, а также просто для привередливых к качеству цветопередачи пользователей.

Overlay Color Control

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

Direct3D Settings

Это настройки рендеринга через API Direct3D. Здесь мы постараемся оптимальным образом настроить все параметры для наилучшего качества и скорости.

По порядку:

Enable fog table emulation — функция табличного тумана. В основном, она пригодится для любителей старых игр, поскольку теперь эту функцию на сегодня уже мало кто использует. Тем не менее, она необходима и для некоторых совсем свежих игр. Например, в Need For Speed: Porshe Unleashed для нормальной работы необходимо, чтобы эта опция была всегда включена. В противном случае будет виден только оранжевый (или синий) экран. Поскольку падения скорости при ее включении не наблюдается, я рекомендую для наилучшей совместимости оставить ее включенной.

Adjust Z-buffer depth to rendering depth if unequal — как следует из названия, эта опция привязывает глубину Z-буфера к используемой приложением глубине цвета. В редких случаях ее отключение может помочь избавиться от артефактов. Но, на мой взгляд, не имеет никакого смысла ее выключать, поскольку глубина Z-буфера, равная глубине цвета, обычно является оптимальной. nVidia также рекомендует оставить опцию включенной.

Enable alternate depth buffering technique — включение этой опции заставляет ускоритель использовать альтернативный метод Z-буферизации для приложений, работающих в 16-битном цвете. Это несколько повышает нагрузку, поэтому скорость, соответственно, чуть падает. Рекомендуется включать, только если наблюдаются артефакты "выпадения" треугольников в играх в 16-битном цвете (к примеру, видно скрытые за какой-либо поверхностью треугольники). Обычно этого не происходит, так что не стоит лишний раз снижать скорость. Лучше оставить выключенной.

Display logo when running Direct3D applications — если эту опцию включить, то при запуске D3D-игр будет появляться логотип nVidia. Никаких функций это не несет, поэтому решайте сами, насколько это вам нужно. Поскольку я не вижу смысла ее включать, предлагаю оставить так, как стоит по умолчанию — выключенной.

Далее идут настройки MIP-Mapping. Они практически не влияют на скорость, поэтому для нас важнее всего настроить их на максимальное качество.

Automatically generate X mipmap levels. При установке этой опции в 0, драйвер будет передавать функции создания MIP-уровней самому приложению. Как правило, это оптимальный вариант при использовании билинейной фильтрации или трилинейной аппроксимации (т.е. на всех картах TNT/TNT2). Переходы между MIP-уровнями в этом случае заметны гораздо меньше. В случае использования трилинейной или анизотропной фильтрации (на GeForce256/2), лучше всего установить максимальное значение — 12. При этом будет наиболее качественно обеспечиваться уменьшение четкости текстур с расстоянием.

Следующий параметр — Auto-mipmap method. Он позволяет принудительно установить для большинства игр метод фильтрации текстур. В случае 5.xx и 3.xx драйверов можно выбрать два варианта — 8-tap anisotropic и Bilinear. Первый обеспечивает наилучшее качество изображения без потери производительности по сравнению со вторым. Поэтому для всех карт на GeForce256 я настоятельно советую использовать именно его. С картами на TNT/TNT2 сложнее. Они не поддерживают анизотропную фильтрацию и не могут совмещать трилинейную фильтрацию с режимом мультитекстурирования, который последние два года используется повсеместно. Вместо "честной" трилинейной фильтрации в режиме мультитекстурирования используется низкокачественная трилинейная аппроксимация. Ее преимущества над обычной билинейной довольно сомнительны: границы между MIP-уровнями не видны, но зато на месте границ видны довольно неприятные искажения текстур. Поэтому я советую лично все попробовать и выбрать для себя более подходящий режим.

Стоит также сказать, что при отключении мультитекстурирования TNT вполне качественно выполняет полноценную трилинейную фильтрацию. Но только в том случае, если игра позволяет отключать мультитекстурирование. Мне известны только две таких игры — Unreal и Unreal Tournament (не считая игр на том же движке). В настройках игры необходимо отключить мультитекстурирование и включить трилинейную фильтрацию. Качество возрастет, но падение производительности будет весьма заметным.

Следующая опция — Mipmap detail level. Она позволяет регулировать детализацию удаленных MIP-уровней. Максимальное качество обеспечивается при установке Best Image Quality. Я настоятельно советую использовать именно ее, поскольку, как я уже говорил выше, на скорости эти установки почти не отражаются, но зато на качестве — отражаются и очень сильно. К сожалению, эта настройка не работает на GeForce256. Вероятно, это баг в драйверах, который будет исправлен в следующих версиях. Но в данный момент все обстоит так, как есть. И ситуация не изменилась с первых версий 3.xx. Я думаю, что об этой настройке поначалу просто забыли, а потом уже окончательно махнули рукой. Надеюсь, что они об этом еще вспомнят.

Все установки можно сохранить и потом без проблем вызывать нужный набор. (Для этого нужно нажать Save As и ввести подходящее имя).

В нижней части панели находится кнопка More Direct3D… Она открывает меню с некоторыми дополнительными опциями:

Первая опция — Texel Alignment. Она дает возможность установки смещения центра текселя (элемента текстуры) относительно стандартного положения. NVidia утверждает, что по умолчанию стоит значение, предусмотренное спецификациями Direct3D. Однако спецификации предусматривают размещение текселя в его стандартном положении, а по умолчанию установлено небольшое смещение. В принципе, это может несколько улучшить качество изображения в некоторых играх, однако есть и обратный эффект — иногда текст в Direct3D-приложениях становится из-за этого смещения несколько размазанным. Если вы встречались с такой проблемой и хотите вернуть текст в нормальное состояние, установите регулятор в крайнее правое положение (Center). А если с качеством все в порядке, я советую оставить значение, стоящее по умолчанию.

PCI Texture Memory Size — позволяет определить, какое количество памяти зарезервировать под текстуры в PCI-режиме. Для владельцев PCI-карт я советую установить значение 10-16Mb, этого хватит для всех современных Direct3D-игр. Владельцам AGP-ускорителей я рекомендую поставить минимальное значение для экономии оперативной памяти.

Рассмотрим также раздел Antialiasing.

Full Scene Anti-Aliasing (FSAA) призван бороться с так называемым "лестничным" эффектом, который возникает на краях трехмерных объектов. Повышение разрешения — это тоже своего рода анти-алиасинг. В драйверах Detonator есть возможность использовать другой вид анти-алиасинга — Super Sampling. Суть этого метода в том, что изображение рассчитывается в разрешении, многократно превышающем экранное. Перед выводом на экран, изображение сжимается до экранного разрешения, но для формирования цвета каждого экранного пикселя используются от 2-х до 16-ти рассчитанных текстурных субпиксела. Это приводит к сглаживанию "лестничного" эффекта и общему повышению качества 3D-изображения. Разумеется, чем больше субпикселей используется для формирования одного пикселя, тем выше качество, но и пропорционально меньше скорость. При максимальном режиме — 16х FSAA будет падение скорости в 10-16 раз! Тем не менее, при средних значениях (4х) скорость во многих играх остается на весьма комфортном уровне. Подобрать режим FSAA, сочетающий хорошую скорость с высоким качеством, чаще всего можно только опытным путем.

Настройки драйвера позволяют выбрать один из 9-ти значений качества FSAA.

Кратко опишу их все (слева направо):

  1. No FSAA — анти-алиасинг отключен.
  2. 2х FSAA — анти-алиасинг на основе двух субпикселов со сглаживанием только по вертикали.
  3. 4х FSAA Low MIP — этот режим обеспечивает полное сглаживание на основе 4-х субпикселов. Low MIP означает низкую детализацию MIP-уровней.
  4. 4x FSAA High MIP — тот же режим, что и предыдущий, но с высокой детализацией MIP-уровней. (На мой взгляд, обеспечивает наилучшее соотношение скорость/качество)
  5. 4x (3x3) FSAA High MIP — а вот этот режим особенный. Хотя ускорителем рассчитывается только 4 субпикселя на каждый пиксель, при формировании изображения, для каждого пикселя используются не только свои, но и соседние субпикселы, в результате чего обеспечивается качество сглаживания на уровне 9х FSAA, а скорость близка к стандартному 4х FSAA.
  6. 9x FSAA Low MIP — 9 субпикселей. Низкая детализация MIP-уровней.
  7. 9x FSAA High MIP — Высокая детализация MIP-уровней.
  8. 16х FSAA Low MIP — см аналогично предыдущим.
  9. 16х FSAA High MIP

Обычно режимы после 5-го дают слишком низкую скорость. Остальные режимы лучше подбирать специально под каждую игру. В некоторых играх (например, Driver) можно с очень хорошей скоростью играть в 5-ом режиме. А в некоторых — невозможно даже на 2-ом (NFS5).

Если поставить галочку напротив Force antialiasing in all applications, то анти-алиасинг будет принудительно использоваться во всех Direct3D-играх. Но только на карте GeForce256 или GeForce2. На TNT/TNT2 анти-алиасинг не работает ни в каком виде (ни принудительно, ни "добровольно").

При желании, на TNT (и TNT2) можно поставить старый Detonator 1.20. В играх, поддерживающих FSAA, таких, как Revolt, Expendable, Rollcage и Incoming, можно испытать эту функцию. Впрочем, скорость будет крайне невелика, и проводить такой эксперимент стоит только для того, чтобы получить представление, что дает анти-алиасинг в смысле качества.

OpenGL Settings

В этом разделе собраны все настройки OpenGL. Как обычно, рассмотрим все опции по порядку.

Enable buffer region extension. Функция (расширение OpenGL), используемая в некоторых программах 3D-моделирования. В таких приложениях включение этой опции должно привести к довольно значительному росту производительности.

Следующая опция — Allow the dual plane extension to use local video memory — тесно связана с первой. Она позволяет использовать для этого расширения локальную память ускорителя. Это также должно повышать скорость, но может и привести к ошибкам.

Если вы не работаете с программами моделирования вроде CAD, я советую оставить выключенными эту и предыдущую опции.

Use fast linear-mipmap-linear filtering — включение этой опции приводит к ухудшению и так не особо качественной трилинейной аппроксимации на ускорителях Riva TNT/TNT2. И хотя таким образом можно выжать несколько дополнительных fps, качество становится просто непотребным. Поэтому я не советую владельцам TNT ее включать. На GeForce 256 включение этой опции никак не отражается на качестве и скорости 3D-графики.

Enable anisotropic filtering — ее включение разрешает использование OpenGL-приложениями расширения для анизотропной фильтрации. В Quake3: Arena анизотропная фильтрация используется вместо трилинейной. Если опцию отключить, то останется обыкновенная трилинейная фильтрация. Надо сказать, по качеству анизотропная фильтрация не оставляет шансов трилинейной. При этом по скорости обычная билинейная, трилинейная и анизотропная фильтрации отличаются очень мало. Поэтому владельцам GeForce настоятельно советую эту опцию оставить включенной. На TNT/TNT2 она в любом случае не работает.

Enable alternate depth buffering technique — подобно аналогичной настройке в Direct3D, эта опция включает альтернативный механизм Z-буферизации в 16-битном цвете. В некоторых случаях позволяет избавиться от артефактов (хотя ни в одной OpenGL-игре я их не видел). Падение скорости от включения крайне незначительно. Пока не понадобится бороться с этими артефактами, я советую оставить стандартный механизм Z-буферизации (а значит, опцию оставить выключенной).

Если поставить галочку перед Disable support for enhanced CPU instruction sets, то в драйверах будет отключена поддержка расширенных наборов команд процессоров. А именно: AMD 3DNow! и Intel SSE. Естественно, оказывает влияние только на системы с процессорами K6-2, K6-3, Athlon, Duron, Pentium III и Celeron 533A или выше. Т.е. на все процессоры, которые эти расширенные наборы поддерживают. Так что для владельцев указанных процессоров я рекомендую оставить эту опцию выключенной. Для процессоров без расширенных наборов команд эта настройка ничего не меняет.

Enable full scene antialiasing — включает принудительное использование FSAA во всех OpenGL-приложениях. Приводит к сглаживанию "лестничного" эффекта, но и к серьезному падению производительности. Как и в случае Direct3D, анти-алиасинг работает исключительно на GeForce 256 и GeForce2.

Далее рассмотрим три оставшиеся настройки.

Default color depth for textures — устанавливает цветность текстур, используемых в играх по умолчанию. Если установить Always use 32bpp, то все текстуры станут 32-битными. Это не приведет к повышению качества, ведь 32-битными они станут только по размеру, а по качеству так и останутся теми, которые и были изначально. Поэтому я советую использовать Always use 16bpp. Игры, имеющие настоящие 32-битные текстуры, будут использовать их в любом случае.

Buffer flipping mode — позволяет выбрать режим работы с буфером кадра из двух — page flipping и block transfer. Также можно установить Auto-select и предоставить драйверу самому выбирать оптимальный для имеющейся конфигурации режим работы. Тестирования в Quake2 и Quake3 показали, что драйвер вполне с этим справляется: во всех случаях устанавливался лучший из двух режимов. Поэтому рекомендуемое значение — Auto-select.

Vertical sync — можно включать/выключать синхронизацию с обратным ходом луча монитора (или просто VSync). Можно установить одно из трех значений — Always Off, Off by default и On by default. Первое означает, что VSync в любом случае будет отключен. Это может привести к артефактам "разрыва" изображения по краям (этот эффект называется tearing). Но зато fps перестают зависеть от частоты обновления монитора, и общая производительность резко повышается.

Второе отключает VSync по умолчанию, но оставляет приложению возможность его включить.

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

Я советую устанавливать значение Vertical sync в Always Off, потому что артефакты обычно незаметны, а прибавка в скорости очень даже солидная.

Use up to X MB of system memory for textures in PCI mode — аналогично Direct3D, дает возможность установить количество системной памяти, отводимой для хранения текстур для PCI-видеокарт. Для AGP-ускорителей изменение значения этого параметра не влияет на скорость. Для экономии памяти рекомендуется установить минимальное значение.

Other Options

В последнем разделе можно установить некоторые параметры работы с монитором.

Monitor Timing — устанавливает режим тайминга монитора. Можно выбрать одно из 3-х значений — Auto-Detect, General Timings Formula и Discrete Monitor Timings. Первый режим дает возможность Windows получить информацию от самого монитора (рекомендуется для всех современных мониторов). На некоторых старых мониторах эта функция не работает, поэтому владельцам таких моделей придется самим установить необходимое значение, используя документацию к монитору.

Недокументированные настройки

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

NVTweak

В драйверах Detonator версий 3.xx и 5.xx встроена возможность разгона любой видеокарты. Но этот раздел пока скрыт от пользователей. Мы можем исправить эту ошибку nVidia.

Для начала запустим программу редактирования реестра. Для этого в командной строке необходимо набрать regedit. Появится несколько каталогов, как при работе с файлами. В этих каталогах есть подкаталоги, в общем, аналогия с файловой системой полная. Драйвер ищет переменную по этому пути: HKEY_LOCAL_MACHINE\Software\NVIDIA Corporation\Global\NVTweak

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

В папке NVTweak необходимо создать переменную CoolBits типа dword и присвоить ей значение 3.

После этих действий, в Additional Properties появится новая закладка под названием Hardware Options.

Если поставить галочку перед Allow clock frequency adjustment, то после перезагрузки компьютера появится возможность изменять частоту чипа (Core clock frequency) и памяти (Memory clock frequency) ускорителя.

Надо сказать, что, несмотря на многочисленные предупреждения, разгон является довольно безопасным занятием. В худшем случае, система просто зависнет и придет в норму после перезагрузки. Поэтому советую разгонять достаточно смело. При установке частоты, отличной от заводской, необходимо нажать Test new settings, иначе драйвер ее не установит.

Постепенно увеличивайте частоту сначала чипа с шагом в 5МГц. После каждого раза запускайте Quake3 и Quake2. Если начали появляться артефакты, вернитесь на 5МГц назад. Значит, оптимальная частота чипа найдена. Аналогичным образом разгоняется и память. Мне, например, удалось разогнать GeForce256 SDR со стандартных 120/166 (частота чипа/памяти) до 145/210МГц, в результате чего скорость повысилась примерно на 30%.

После нахождения оптимальной частоты чипа и памяти, установите галочку напротив Apply this settings at startup. Тогда выбранные вами частоты будут устанавливаться при запуске Windows.

Кроме Hardware Options, в драйверах еще появилась опция для Direct3D. Найти ее можно в разделе More Direct3D:

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

Render no more than X frame(s) ahead — позволяет установить количество кадров, которое разрешено подготовить процессору, прежде чем их обработает ускоритель. Большое количество кадров повышает скорость (своего рода кэширование процессора), но зато приводит к неприятному эффекту — лагу. Это означает, что игра будет с заметным опозданием реагировать на управление (клавиатуры, мыши, джойстика). Так что не рекомендую устанавливать значение более 3.

Недокументированные значения Mipmap detail level

Про эту настройку я уже рассказывал выше. Напомню только, что она меняет детализацию удаленных MIP-уровней в Direct3D. Эту опцию можно регулировать через драйверы, но даже при установке максимального качества текстуры, скажем, в Unreal и Unreal Tournament, выглядят размазанными и нечеткими. С помощью изменений в реестре можно значительно повысить качество изображения в этих играх.

Необходимо изменить значение переменной LodBiasAdjust в разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Display\0000\NVIDIA\Direct3D

Для драйверов версии 2.xx — [HKEY_LOCAL_MACHINE\Software\NVidia Corporation\Riva TNT\Direct3D]

При установке значений от 0 до 127 (десятичные значения) детализация понижается. А при установке от 255 до 128 — повышается. При чрезмерном повышении детализации появляется артефакт — "дрожание" текстур на удаленных объектах. Необходимо подобрать наилучшее значение, сочетающее максимальную четкость и отсутствие заметных артефактов. Я считаю, что оптимальным значением для Detonator 5.xx и 3.xx является 240 (в шестнадцатеричном исчислении — f0), а для 2.xx — 247 (f7).

Чтобы не быть голословным, покажу эти два скриншота из Unreal Tournament:

    

Обратите внимание на текстуру пола. На левом кадре она становится нечеткой даже на небольшом отдалении. А на правом — четкость на очень высоком уровне.

Если после правок в реестре зайти в настройки драйвера, то значение этой переменной сбросится. Поэтому лучше заняться этим в последнюю очередь.

Я уже упомянул выше, что на GeForce 256 изменение значения Mipmap detail level в настройках драйвера не оказывает никакого эффекта. К сожалению, это справедливо и для установок через реестр. Так что наиболее четкой картинкой будут наслаждаться только владельцы TNT/TNT2.

Настройка качества FSAA в OpenGL

Рассмотрим следующую переменную. Находится она в разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Display\0000\NVIDIA\OpenGL

FSAAQuality — как можно догадаться из названия, эта переменная позволяет изменять качество FSAA в OpenGL, что невозможно через обычные настройки драйвера. Значения устанавливаются от 0 до 2.

  • 0 — это режим 2x FSAA, самый низкокачественный, но и самый быстрый. Именно он и установлен по умолчанию.
  • 1 — режим 4x FSAA с низкой детализацией MIP-уровней. Качество сглаживания хорошее, но текстуры выглядят размазано.
  • 2 — режим 4x FSAA с высокой детализацией MIP-уровней. Кроме отличного качества сглаживания, этот режим имеет очень четкие текстуры.

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

Я провел несколько тестов с целью выявить производительность GeForce256 в режиме FSAA. Система: Celeron 450, 128Мб SDRAM, Creative Annihilator 32Mb.


Как видно из таблиц, падение скорости от включения анти-алиасинга очень велико и скорость находится на приемлемом уровне во всех режимах только в разрешении 640x480.

Заключение

Я не ставил цели в этой статье подробно рассказать обо всех настройках Detonator. Через реестр можно менять более трех десятков самых различных параметров, и об их доскональной настройке можно издать целую книгу. Но в этой статье я рассказал о наиболее интересных и полезных настройках драйвера, изменяя которые обычный пользователь может реально повысить скорость или качество любимых игр.

Особая благодарность Алексею "Unwinder" Николайчуку и Andser
за помощь при исследовании недокументированных настроек драйверов Detonator.




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

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

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

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