Игорь Лагунов (Buntar)
01.08.2001
Ключи DirectX
Ключи OpenGL
OpenGL private
DirectX
Данные настройки находятся с в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\ATI Technologies\Driver\000x\atidxhal, где 000х - номер видеоадаптера в системе.
Ключ реестра - это строковый параметр с присвоенным ему определенным значением. Большинство ключей имеют определенные дефолтные значения (значения по умолчанию). Поэтому ключ может быть не прописан явно, но при этом он будет влиять на производительность и корректную работу видеосистемы компьютера. Поэтому мы всегда предупреждаем: "Не увлекайтесь добавлением ключей в реестр, особенно если вы не знаете точно, на что данный ключ влияет".
Чтобы как-то помочь вам разобраться что к чему, мы открыли этот раздел FAQ
После наименования ключа в скобках указаны значения, которые он может принимать.
- xAGPTexture (0/1) - Включение AGP текстурирования, прописывать явно не требуется, т.к. включено по умолчанию.
- AntiAlias (0/1/2) - Включение FSAA (полноэкранного сглаживания). Значение по умолчанию - "0". Значение "1" - включено, если это указано в настройках приложения, "2" - всегда отключено. В самых общих чертах, задача FSAA - сглаживание неровностей ("пилы") границ объектов в 3D-сцене. Алгоритм работы сводится к обработке (рендерингу) модели в высоком разрешении и преобразование ее изображения в сглаженное (downsampling) путем усреднением цветов соседних пикселей. Мы не рекомендуем пользоваться этой функцией. Во-первых, это ведет к большему падению производительности, во-вторых, эта функция плохо реализована в самих драйверах и или не работает совсем или работает только в низких разрешениях. Вообще-то, это тема для отдельного обзора и мы постараемся в будущем осветить ее более подробно.
- AntiAliasRatio (384/448/512) - степень FSAA или количество сэмплов, используемое для сглаживания. "384" при двухсэмплевом АА, "448" при трехсэмплевом, "512" при 4x. Ни на что не влияет, если AntiAlias равен "0".
- ColorFill (0/1) - ускорение закраски полигона однородным цветом. Значение по умолчанию "0". Для определения степени влияния этого ключа на производительность и т.п. требуются тесты. Пока что можем сказать, что явных ошибок вроде не вызывает.
- DisableHierarchicalZ (0/1) - ключ, который у большинства пользователей твердо ассоциируется с включением HyperZ. Что не совсем верно. Значение по умолчанию "0". HierarchicalZ должен отбраковывать невидимые полигоны в Z-буфере (буфере глубины), т.е проще говоря, 3D-объекты, которые перекрываются другими, расположенными ближе к точке обзора, не должны обсчитываться нашим видеоадаптером. Но функция реализована не полностью корректно, или на железном уровне или в биосе, и достаточно часто вызывает визуальные артефакты, поэтому HierarchicalZ должен быть выключен, особенно на Radeon LE и разогнаных видеоадаптерах с DDR памятью. Если убрать его из реестра, ключ окажется включенным. Тесты показывают, что, похоже, на платах с SDRAM памятью ключ проблем не вызывает.
- DisableHyperZ (0/1) - отключение HyperZ. Для всех видеоадаптеров кроме Radeon LE значение по умолчанию 0 - включен. Используется для включения HyperZ на LE, но только в связке с ключом "FastZClearEnabled".
- DitherAlpha (0/1/2) - способ растрирования при альфа-смешивании. Значения: "0" - диффузное растрирование ошибок, "1" - упорядоченное растрирование ошибок, "2" - отключено. По умолчанию равно "0".
- EnableUntransformedInLocalMem (0/1) - включение возможности для драйвера видеокарты сохранять нетрансформированные вершины в локальной видеопамяти вместо того, чтоб полностью хранить их в системной памяти. По идее должно равняться "1", чтобы приложения, имеющие такую возможность, использовали её, когда это необходимо. Отключение должно уменьшать быстродействие и вызывать ошибки, если необходимые значения не успевают при необходимости быстро попасть обратно в видеопамять для проведения операций над ними. Значения по умолчанию мы не знаем, рекомендуем не трогать данный ключ.
- EnableWaitUntilIdxTriList2 (0/1) - предположительно включает ожидание окончания рендеринга, вызываемого функцией "DrawPrimitive" и только после этого возвращает управление вызвавшей программе. Значение по умолчанию "1". Теоретически возврат управления до окончания рендеринга может несколько поднять быстродействие, но на практике вызывает ошибки (к тому же этот режим в DirectX SDK рекомендуется лишь при отладке). При установке драйверов всегда явно прописан в реестре.
- ExportBumpMappedTex (0/1) - включение поддержки рельефного текстурирования. В последних версиях драйверов явно прописан в реестре со значением "1".
- ExportCompressedTex (0/1) - включение поддержки компрессии текстур. В реестре уже давно присутствует явно со значением 1 - компрессия разрешена. Поднимает производительность, несколько снижая качество картинки. С нашей точки зрения, снижение качества практически незаметно.
- ExportWBuffer (0/1) - значение "1" включает поддержку W-буфера, служащего для увеличения точности работы Z-буфера, который в свою очередь отвечает за расчет значений глубины пикселей в отображаемой сцене. Устраняет некоторые глюки с точностью глубины (например, в UT). В последних версиях драйверов ключ прописан явно со значением "1".
- ExportYUVTex (0/1) - включение поддержки текстур YUV-формата.
- FastZClearEnabled (0/1) - пожалуй, самый известный ключ из всех, здесь рассматриваемых. По сути именно он отвечает за тот прирост производительности видеоадаптера, который мы видим при включении HyperZ на Radeon LE. Технически ключ работает примерно следующим образом: Z-буфер разбивается на отдельные блоки и неиспользуемый блок отмечается целиком, вместо того, чтобы последовательно заполнять нулями неиспользуемые участки. Такая технология помимо всего прочего уменьшает еще и нагрузку на шину памяти. По умолчанию включен на всех видеоадаптерах Radeon, кроме LE. В некоторых тестах, большей частью синтетических, увеличивает производительность до 30%. В реальных играх - на 2-5% или не влияет вообще.
- GameGamma (0/1) - позволяет изменять гамму в играх. В ближайшее время рассмотрим подробнее.
- LVB (0/1) - Local Vertex Buffer. Позволяет Vertex буферу использовать локальную видеопамять адаптера. Отключение высвобождает некоторый объем памяти, но уменьшает скорость T&L, т.к. блоку T&L приходится обращатся к системной памяти. Значение по умолчанию "1". Отключение этого параметра устраняет ошибку с исчезновением оружия в игре Project IGI.
- NONPOW2TextureCaps (0/1) - включение поддержки текстур с размерами, не равными степени двух.
- PixelShaderVersion (10/11) - устанавливает версию пиксельных шейдеров, которую драйвер должен сообщать приложению. "10" означает DirectX 8 v1.0 , "11" - DirectX8 v1.1 . Radeon поддерживает только некоторые пиксельные шейдеры, а не всю спецификацию целиком, поэтому в большинстве случаев этого ключа в реестре быть не должно. Исключение - тесты, написанные под Radeon для демонстрации данной технологии
- PureDevice (0/1) - включение специального модуля API D3D Pure HAL Device, производящего для отдельных, оптимизированных под это приложений, аппаратный расчет вершин треугольников посредством прямой передачи вызова в драйвер карточки, минуя все стадии предварительной обработки данных.
- TableFogEnable (0/1) - ключ, отвечающий за визуализацию тумана в играх. К сожалению, в драйверах данная функция реализована криво По этой причине значение по умолчанию "0" и использование ключа не рекомендуется, - ни на одном из свежих драйверов у вас все равно ничего путного не получится.
- TCL (0/1) - поддержка аппаратного T&L. Естественно, что значение по умолчанию "1" - включено.
- VertexShaderVersion (0/10) - устанавливает версию Vertex Shader , которую драйвер должен сообщать приложению. "10" означает DirectX 8 v1.0. По нашим данным использование ключа вызывает ошибки, не прописывайте его в реестре.
- Vsync (0/1) - включение вертикальной синхронизации вывода кадров видеоадаптером с рефрешем монитора. При значении Vsync = "1", fps не смогут превысить частоту вертикальной развертки монитора. В последних драйверах ключ присутствует явно со значением "1". Если у вас не самый новый монитор с рефрешем 60-75 Гц при разрешении 800х600, то Vsync стоит отключить, это поднимет производительность. Но стоит обратить внимание на то, что при этом могут наблюдаться внезапные, очень короткие, резкие "разрывы" изображения в ходе игры.
- WfogEnable, ZfogEnable (0/1) - еще два ключа, которые по идее разработчиков должны отвечать за визуализацию тумана в играх. Увы, пока не работают и к использованию не рекомендуются.
- ZFormats - определяет значение глубины Z-буфера:
- "1" - 16-ти битный;
- "3" - 16;24 - битный;
- "7" - 16;24 - битный с 8-ми битным шаблоном;
- "11" - 16;24;32 - битный;
- "15" - 16;24;32 - битный с 8-ми битным шаблоном.
Значение по умолчанию, явно прописанное в реестре - "7".
Пока что за пределами нашего внимания остались еще две группы ключей: первая - это включение всевозможных тайлингов, которые теоретически должны увеличивать производительность, особенно, тайлинги текстур. Правда, могут быть проблемы совместимости с приложениями, использующими прямой доступ к кадровому буферу или памяти. В ближайшее время мы проведем ряд тестов для уточнения этого момента и выложим дополнения в FAQ. Вторая группа ключей - работа с памятью и T&L тоже требует дополнительного тестирования и изучения с нашей стороны.
OpenGL
Настройки OpenGL находятся с в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\ATI Technologies\Driver\000x\OpenGL,
где 000х - номер видеоадаптера в системе.
В этом разделе ключ реестра имеет параметр DWORD с присвоенным ему определенным значением. Как и в DirectX, большинство ключей имеют определенные значения по умолчанию, которые работают даже если параметр не прописан явно. Поэтому предупреждаем: "Не добавляйте ключи в реестр, если не знаете точно, на что данный ключ влияет".
После наименования ключа в скобках указаны значения, которые он может принимать.
- OGLConvertTextures32To16 (0/1) - принудительное конвертирование 32-битных текстур в 16-битные. Добавляет скорость, уменьшая нагрузку на память, но снижает качество. Значение по умолчанию "1". Решайте сами, что вам важнее, к тому же, что в большинстве случаев разницы вы не увидите
- OGLDisableDitherWhenAlphaBlending (0/1) - отключение дизеринга (размытия) при альфа-смешивании. Влияет только на полупрозрачные объекты в 16-битном цвете. Значение по умолчанию "0" - включено. Так как разницы в скорости мы не заметили, хотя теоретически ключ должен несколько снижать производительность, то оставляем все как есть.
- OGLEnableHWPageFlip (0/1) - включение аппаратного ускорения смены страниц при работе в полноэкранном режиме. Немного увеличивает скорость. Значение по умолчанию "1".
- OGLEnableFullSceneAA (0/1) - принудительное включение полноэкранного сглаживания в OpenGL приложениях. Значение по умолчанию "0" - отключено.
- OGLEnableKTXBufferRegion (0/1) - Включает расширение GL_KTX_buffer_region, отвечающее за обновление перемещенных частей изображения. Насколько нам известно, на сегодня используется только в 3D Studio Max. Значение по умолчанию "1".
- OGLEnableTextureCompression (0/1) - включение поддержки компрессии текстур. Значение по умолчанию "1" - включено.
- OGLForce16BitZBuffer (0/1) - форсирует 16-битный Z-буфер, принудительно устанавливая его в 16 бит, даже если в настройках приложения указан 32-битный. Добавляет скорость, снижая точность Z-буфера и выключая stencil-буфер. Значение по умолчанию "0" и менять его не рекомендуется, могут появиться ошибки.
- OGLLODBias (1,2,3,4,5,6) - установка уровня детализации при мипмепинге. Более высокое значение увеличивает точность и четкость изображения, снижая производительность. Значение по умолчанию "6" - максимальное качество.
- OGLMaxAnisotropy (0/4/16) - включение анизотропной фильтрации текстур. "0" - отключена, "4" - высокое качество, "16" - наилучшее качество. Включение улучшает качество картинки, снижая при этом производительность (на частотах 183/183 и выше достигается практически "бесплатно"). По умолчанию отключено.
- OGLSubPixelPrecision (2/4) - увеличение точности вычисления положения пикселя на экране в кадровом буфере. Как любое увеличение качества достигается за счет снижения производительности. Значение по умолчанию "4".
- OGLTracing (0/1) - включение отслеживания вызовов OpenGL. Выключение должно немного добавлять скорость. Ключ явно в реестре не прописан, поэтому значение по умолчанию неизвестно.
- OGLWaitVerticalSync (0/1) - включение вертикальной синхронизации с разверткой монитора. Многие сообщают, что у них ключ не работает даже при установке значения "1". Надо проверять
OpenGL private
Настройки OpenGL private находятся с в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\ATI Technologies\Driver\xxxx\OpenGL\private, где 000х - номер видеоадаптера в системе.
Как и OpenGL ключи, имеет параметр DWORD с присвоенным ему определенным значением. Во многих случаях о значениях по умолчанию судить тяжело.
- enable3DNow (0/1) - включение поддержки соответствующих расширенных наборов команд процессоров AMD, Cyrix и IDT.
- enableSSE (0/1) - тоже самое для процессоров выше Intel Pentium II.
- enableAALines (0/1) - включение line antialiasing (не путайте с FSAA). Используется только в профессиональных приложениях, делает модели более гладкими.
- enableAGPTextures (0/1) - включение AGP текстурирования. Включено по умолчанию.
- disableScreenSavers (0/1) - не разрешает запускаться скринсейверам OpenGL.
- disableHyperZ (0/1) - по-моему, даже объяснять ничего не нужно - ключ аналогичный ключу "DisableHyperZ" в настройках DirectX с одной лишь разницей. Он всегда по умолчанию равен "0", даже на Radeon LE, (т.е. HyperZ по умолчанию всегда включен на всех видеокартах).
- enableHierarchicalZ (0/1) - аналогичен ключу "DisableHierarchicalZ" только с противоположным знаком, включает отбраковку невидимых, перекрытых другими, полигонов в Z-буфере (буфере глубины). В отличии от DirectX, в OpenGL эта функция проблем не вызывает и положительно влияет на увеличение производительности системы. Ключ включен ("1") по умолчанию.
- enableZCompression (0/1) - включение Z-компрессии - сжатия значений глубины сцены, до их помещения в Z-буфер. Повышает производительность, ошибок не обнаружено.
- ZcompForAllConfigs (0/1) - форсирование использования Z-компрессии при любой конфигурации. Желательно, чтоб включено.
- enableFastZMaskClear (0/1) - включение быстрой очистки Z-буфера. Ключ, аналогичный FastZClearEnabled в DirectX. В большинстве приложений существенно увеличивает производительность. Проблем не вызывает.
- enableDynamicDither (0/1) - включение данного ключа улучшает качество дизеринга без потери в скорости. Влияет только на 16-битный цвет.
- enableAnisotropicFiltering (0/1) - включение анизотропной фильтрации, по умолчанию равно "0" - отключена.
- enableMicroTile (0/1) - включение одной из форм тайлинга. Теоретически должно увеличивать производительность.
- enableMacroTile (0/1) - включение одной из форм тайлинга. Теоретически должно увеличивать производительность.
- enableTCL (0/1) - включение поддержки аппаратного T&L. Значение по умолчанию "1" - включено.
- enableMultiTexture (0/1) - включение мультитекстурирования. Скорее всего включено по умолчанию.
- enableVidMemTextures (0/1) - включение возможности использовать локальную видеопамять для хранения текстур. Значение по умолчанию "1" - включено.
- tclDlistInAGP (0/1) - включение возможности для драйвера хранить списки полигонов в AGP памяти. Скорее всего включено по умолчанию. Надо разбираться заставляет ли ключ принудительно помещать эти данные в системную память или отдает принятие решения об этом "на откуп" драйверу.
- tclDlistInLocal (0/1) - включение возможности для драйвера хранить списки полигонов в локальной видеопамяти. Желательно не включать на картах с объмом памяти менее 64 Мб.
- useFastAALines (0/1) - включение использования более быстрой, но и менее точной формы AALines.
- forceSingleBuffer (0/1) - включение форсирует singlebuffering. Обычно не рекомендуется, но будем разбираться точнее.
- useBlt (0/1) - включение Bit Block Transfer. Актуально для приложений, использующих оконный интерфейс GUI. У нас при тестировании в обычных приложениях снижало производительность.
- waitForIdleAfterSubmit (0/1) - ключ аналогичный EnableWaitUntilIdxTriList2 - ожидание завершения завершения запущенных команд и только после этого возврат управления вызвавшей программе. Теоретически включение уменьшает быстродействие, увеличивая стабильность.
- zFormat9x_16 (0/1)
- zFormat9x_32 (0/1) - форсирует соответствующие значения глубины Z-буфера. Лучше эти ключи не трогать, а оставлять выбор на усмотрение приложения.
|