dd_action('wp_footer', function() { ?>

6.4 3D Analyze — эмуляция возможностей старых видеокарт

3D Analyze — настройка эмуляции старой видеокарты и DirectX для игры

📌 Содержание

Часть 1. Что такое 3D-Analyze и зачем она нужна

  1. Что такое 3D-Analyze
  2. Для чего была создана программа
  3. Как 3D-Analyze работает
  4. Что 3D-Analyze не умеет
  5. Почему игра иногда запускается после одной галочки
  6. 3D-Analyze как инструмент диагностики
  7. Для каких игр 3D-Analyze особенно полезна
  8. Для какого железа её использовали
  9. Разработчик программы
  10. Как развивался проект
  11. Версия 2.36
  12. Версия 2.36b
  13. Почему программа перестала быть необходимой
  14. Чем 3D-Analyze отличается от обычного графического оптимизатора
  15. Главное правило работы с программой
  16. Что нужно знать перед дальнейшим изучением программы
  17. Что в итоге делает 3D-Analyze
  18. Зачем нужен подробный разбор всех настроек
  19. Итог части 1

Часть 2. Полный разбор всех настроек

  1. Главное окно программы
  2. DirectX 8.1 and 9.0 Options
  3. Performance
  4. Освещение и Stencil
  5. force anisotropic filtering
  6. force windowed mode
  7. Pixel and Vertex Shader
  8. force max pixel shader version 1.1
  9. force max pixel shader version 1.4
  10. skip pixel shader version 1.1
  11. skip pixel shader version 1.4
  12. skip pixel shader version 2.0
  13. force low precision pixel shader
  14. force high precision pixel shader
  15. save shader to file
  16. Hardware Limits (cap bits)
  17. emulate HW TnL caps
  18. emulate other DX8.1 caps
  19. emulate pixel shader caps
  20. emulate bump map caps
  21. emulate max. sim. textures
  22. Hardware Limits (features)
  23. emulate cube maps
  24. emulate DXT textures
  25. KYRO zbuffer/stencil fix
  26. VOODOO flicker fix
  27. Game / Demo Fixes
  28. NOLF2 texture/ib fix
  29. Gun Metal Demo fix
  30. Mafia shadow fix
  31. LOTR texture fix
  32. Matrox Reef Demo fix
  33. Spider-Man fix
  34. Ruby benchmark — NV4x
  35. Ruby benchmark — R42x
  36. OpenGL Options
  37. OpenGL — performance logging
  38. OpenGL — counters
  39. OpenGL — force small texture (32×32)
  40. OpenGL — disable textures
  41. OpenGL — disable rendering
  42. OpenGL — force anisotropic filtering
  43. Fragment and Vertex Programs
  44. DirectX Device ID’s
  45. VendorID
  46. DeviceID
  47. Зачем нужны готовые VendorID/DeviceID
  48. Misc
  49. force wireframe mode
  50. force reference rast.
  51. debug logging
  52. force 100 hz
  53. remove stuttering
  54. Save batch file!
  55. Color MipMap
  56. Anti-Detect Mode
  57. Anti-Detect Mode — shaders
  58. Anti-Detect Mode — textures
  59. Z-Buffer
  60. force 16 bit zbuffer (without stencil)
  61. force 16 bit zbuffer (with stencil)
  62. force 24 bit zbuffer (without stencil)
  63. force 24 bit zbuffer (with stencil)
  64. Чем Z-Buffer отличается от Stencil Buffer
  65. Что делать, если функция ничего не меняет
  66. Самые важные различия между похожими функциями
  67. Какие настройки являются диагностическими
  68. Какие настройки являются настройками совместимости
  69. Какие настройки являются специализированными исправлениями
  70. Какие настройки лучше не трогать без причины
  71. Базовый принцип настройки после изучения интерфейса
  72. Итог второй части

Часть 3. Практическое использование

  1. Перед началом работы
  2. Основной принцип настройки
  3. Первый запуск через 3D-Analyze
  4. Если игра не запускается
  5. Определяем графический API
  6. Как определить Direct3D-игру
  7. Как определить OpenGL-игру
  8. Первый диагностический тест
  9. Как понять результат диагностики
  10. Как определить проблему с T&L
  11. Комбинация для отсутствующего HW T&L
  12. Когда не нужно использовать force SW TnL
  13. Игры с проблемой Pixel Shader
  14. Важное правило для Shader-настроек
  15. Диагностика проблем с текстурами
  16. Если проблема связана с размером текстур
  17. Проблема с DXT
  18. Как определить проблему с Cube Mapping
  19. Проблемы с Z-Buffer
  20. Как тестировать Z-Buffer правильно
  21. Как понять, нужен ли Stencil
  22. 16-bit или 24-bit Z-Buffer
  23. Проблемы с освещением
  24. Проблемы со Stencil
  25. Проблемы с fullscreen
  26. Диагностика через Wireframe
  27. Как искать причину низкого FPS
  28. Тест CPU и GPU через T&L
  29. Тест текстурной нагрузки
  30. Тест геометрии
  31. Тест шейдеров
  32. Когда использовать VendorID
  33. Когда использовать DeviceID
  34. Типичная ошибка при подмене видеокарты
  35. Когда использовать Anti-Detect Mode
  36. Почему нельзя включать Anti-Detect без причины
  37. Типичные ошибки пользователя
  38. Правильная схема поиска решения
  39. Почему проверять нужно не только запуск
  40. Почему один и тот же параметр работает по-разному
  41. Совмещение с DxWnd
  42. Совмещение с dgVoodoo
  43. Главная проблема при использовании нескольких wrappers
  44. Правило для нескольких DLL
  45. Конфликт DLL
  46. 32-bit и 64-bit
  47. 2D-игры
  48. 2D + 3D
  49. Практическая схема для 2D-игры
  50. Практическая схема для 3D-игры
  51. Примеры готовых комбинаций
  52. Комбинация №2 — игра требует Pixel Shader
  53. Комбинация №3 — игра не работает с Pixel Shader 2.0
  54. Комбинация №4 — проблема с DXT
  55. Комбинация №5 — проблема с Cube Map
  56. Комбинация №6 — проблемы с Z-Buffer
  57. Комбинация №7 — игра требует определённую видеокарту
  58. Комбинация №8 — мерцание на Voodoo
  59. Комбинация №9 — Kyro
  60. Комбинация №10 — Mafia и мерцание теней
  61. Комбинация №11 — проблема производительности
  62. Как составлять собственный профиль
  63. Почему полезно записывать настройки
  64. Как использовать Save batch file
  65. Что делать после успешного запуска
  66. Почему длительный тест важен
  67. Как искать причину вылета
  68. Что делать, если 3D-Analyze сама не помогает
  69. Когда нужен dgVoodoo
  70. Когда нужен DxWnd
  71. Когда не нужно использовать ничего
  72. Универсальная таблица диагностики
  73. Универсальная формула для Direct3D
  74. Универсальная формула для производительности
  75. Универсальная формула для артефактов
  76. Универсальная формула для вылетов
  77. Самое важное правило совместимости
  78. Практический порядок при сложной конфигурации
  79. Что считать рабочей конфигурацией
  80. Финальная методика
  81. Итог части 3

Приложение

Полная таблица функций 3D-Analyze v2.36b

  1. DirectX — Performance
  2. DirectX — Pixel and Vertex Shader
  3. DirectX — Hardware Limits (cap bits)
  4. DirectX — Hardware Limits (features)
  5. Game / Demo Fixes
  6. OpenGL — Performance
  7. Fragment and Vertex Programs
  8. Misc
  9. Countdown for disable rendering / disable state switches
  10. Remove Stuttering
  11. Color MipMap
  12. Z-Buffer
  13. Как выбирать Z-Buffer
  14. Anti-Detect Mode
  15. DirectX Device IDs
  16. VendorID и DeviceID — важное различие
  17. SELECT
  18. RUN
  19. Save batch file
  20. Сводная таблица по типу проблемы
  21. Что включать в первую очередь, а что оставить на крайний случай
  22. Краткая формула выбора функции
  23. Самое важное при работе со всей таблицей

Часть 1. Что такое 3D-Analyze и зачем она нужна а

1. Что такое 3D-Analyze

3D-Analyze — утилита для Windows, созданная для работы со старыми графическими приложениями через Direct3D и OpenGL.

Программа появилась в период, когда видеокарты сильно отличались по набору поддерживаемых функций. Одна игра могла требовать Hardware T&L, другая — определённую версию Pixel Shader, третья — конкретный формат текстур или тип Z-Buffer. Если видеокарта не сообщала о наличии нужной функции, игра могла отказаться запускаться, даже если часть требуемых операций можно было выполнить другим способом.

3D-Analyze позволяет вмешиваться в этот процесс. Она изменяет отдельные параметры и сведения о возможностях графического устройства, которые получает приложение. Благодаря этому некоторые старые игры и тесты можно запустить на оборудовании, которое программа изначально считала неподходящим. В документации 3D-Analyze это описывается как изменение Direct3D CAP-битов и других графических параметров.

При этом 3D-Analyze нельзя считать универсальным эмулятором видеокарты.

Это важное отличие.

Если программа сообщает игре, что у видеокарты есть определённая возможность, это ещё не означает, что соответствующая функция появилась в самом GPU. В некоторых случаях 3D-Analyze может изменить способ обработки операции, но многие аппаратные

2. Для чего была создана программа

Основная задача 3D-Analyze — обойти ограничения старых графических приложений и помочь им работать с несовместимым или нестандартным оборудованием.

Наиболее известный пример — Hardware T&L.

Hardware Transform & Lighting выполнял часть обработки геометрии непосредственно на видеокарте. Некоторые игры проверяли наличие этой возможности при запуске. Если её не было, игра могла завершиться ещё до появления главного меню.

3D-Analyze могла изменить соответствующие сведения, чтобы приложение выбрало подходящий режим работы. В некоторых случаях обработка передавалась программному T&L, то есть выполнялась процессором. Поэтому игра могла запуститься, но это не означало, что старая видеокарта внезапно получила производительность современного GPU.

Та же идея используется и для других функций:

  • изменения заявленных возможностей видеокарты;

  • ограничения некоторых возможностей;

  • изменения работы с текстурами;

  • работы с Z-Buffer и Stencil;

  • изменения параметров Pixel Shader;

  • диагностики производительности;

  • записи информации о работе графического API;

  • поиска причин графических ошибок.

3. Как 3D-Analyze работает

Упрощённо обычная схема запуска игры выглядит так:

Игра → Direct3D/OpenGL → драйвер видеокарты → GPU

При использовании 3D-Analyze программа вмешивается между приложением и графической подсистемой:

Игра → 3D-Analyze → Direct3D/OpenGL → драйвер → GPU

Поэтому её настройки влияют не на саму видеокарту, а на взаимодействие приложения с графическим API.

В зависимости от выбранной функции программа может:

  • изменить сведения о возможностях устройства;

  • изменить некоторые параметры графического API;

  • отключить определённую операцию;

  • заставить приложение использовать другой путь обработки;

  • заменить отдельный механизм другим способом;

  • перехватывать и записывать информацию для диагностики.

Именно поэтому результат зависит не только от видеокарты, но и от конкретной игры, её версии, используемого API и драйвера.

4. Что 3D-Analyze не умеет

Это один из главных моментов, который необходимо понимать до начала работы.

3D-Analyze не превращает одну видеокарту в другую.

Например, если GPU физически не имеет Pixel Shader определённой версии, простое включение соответствующей опции не создаёт полноценный аппаратный Pixel Shader.

В оригинальной документации программы прямо указано, что 3D-Analyze не выполняет программную эмуляцию Pixel Shader и Vertex Shader. Отдельное исключение — Cube Mapping, для которого программа могла использовать обычную 2D-текстуру вместо исходного механизма.

Поэтому нужно различать две совершенно разные задачи:

Изменить проверку возможности

и

реально выполнить отсутствующую аппаратную функцию.

Первая задача для 3D-Analyze является обычной. Вторая во многих случаях ей недоступна.

5. Почему игра иногда запускается после одной галочки

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

Условно процесс мог выглядеть так:

  1. Игра получает список возможностей GPU.

  2. Проверяет необходимые CAP-биты.

  3. Определяет поддерживаемые версии шейдеров.

  4. Проверяет форматы текстур и буферов.

  5. Выбирает графический режим.

  6. Создаёт необходимые Direct3D-объекты.

  7. Запускает рендеринг.

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

Например:

«HW T&L отсутствует — запуск запрещён».

Если заставить игру увидеть необходимую возможность, она может перейти к следующему этапу и нормально запуститься.

Но это только начало.

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

  • вылет;

  • чёрный экран;

  • неправильные текстуры;

  • артефакты;

  • проблемы с освещением;

  • низкая производительность.

Поэтому задача 3D-Analyze — не просто «обмануть игру», а подобрать такой режим работы, при котором приложение сможет пройти все необходимые этапы запуска и рендеринга.

6. 3D-Analyze как инструмент диагностики

Программа полезна не только для запуска игр.

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

Например, можно:

  • отключить текстуры;

  • отключить отрисовку;

  • включить каркасный режим;

  • собирать счётчики;

  • записывать производительность;

  • получать журналы работы;

  • сохранять данные о шейдерах;

  • проверять влияние отдельных графических операций.

Документация 3D-Analyze отдельно отмечает возможность создания подробных CSV-журналов с данными о FPS и других параметрах.

Это позволяет использовать программу не только по принципу:

«игра не запускается — поставим несколько галочек».

Гораздо полезнее применять её как диагностический инструмент:

изменили один параметр → запустили → посмотрели результат → определили причину → перешли к следующему параметру.

Такой подход особенно важен при работе со старыми играми.

7. Для каких игр 3D-Analyze особенно полезна

Наибольший интерес программа представляет для игр и приложений эпохи:

  • DirectX 7;

  • DirectX 8;

  • DirectX 8.1;

  • раннего DirectX 9;

  • старых OpenGL-приложений.

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

Одни GPU имели Hardware T&L, другие работали преимущественно через CPU.

Одни поддерживали Pixel Shader, другие — нет.

Различались также:

  • количество текстурных блоков;

  • поддерживаемые форматы текстур;

  • Z-Buffer;

  • Stencil Buffer;

  • Vertex/Pixel Shader;

  • Cube Mapping;

  • возможности смешивания и освещения.

В архивной документации 3D-Analyze перечислены десятки протестированных приложений, включая Morrowind, Battlefield 1942, Max Payne, Halo, Far Cry, Flight Simulator 2004, Serious Sam и различные бенчмарки.

8. Для какого железа её использовали

3D-Analyze получила известность прежде всего среди владельцев старых видеокарт, которым не хватало отдельных возможностей, требуемых играми.

Особенно часто речь шла о:

  • NVIDIA GeForce;

  • ATI Radeon;

  • 3dfx Voodoo;

  • PowerVR Kyro;

  • других ранних Direct3D-ускорителях.

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

Например, видеокарта могла достаточно быстро рисовать простую сцену, но игра отказывалась запускаться из-за отсутствия Hardware T&L.

Именно такие ситуации были одной из главных областей применения 3D-Analyze.

9. Разработчик программы

Автором 3D-Analyze является Thomas Bruckschlegel, а программа распространялась под названием ToMMTi-Systems.

Архивные страницы 3DCenter указывают Thomas Bruckschlegel как автора версии 2.36. Эта версия датирована 10 декабря 2004 года.

Проект развивался постепенно. Архив 3D-Analyze содержит большое количество промежуточных версий — от ранних выпусков 1.x до версий 2.x. Архивная база указывает начало разработки проекта примерно с 2002 года.

То есть 3D-Analyze не появилась сразу в виде большого окна с десятками параметров. Возможности добавлялись по мере появления новых задач и обнаружения проблем с конкретными видеокартами, играми и графическими тестами.

10. Как развивался проект

История развития хорошо показывает назначение программы.

В ранних версиях появились базовые функции для тестирования и изменения поведения Direct3D.

Затем добавлялись:

  • программный T&L;

  • дополнительные Hardware Limits;

  • диагностические журналы;

  • расширенные настройки шейдеров;

  • работа с различными ограничениями видеокарт;

  • исправления для отдельных игр;

  • функции для тестовых приложений;

  • дополнительные режимы работы с текстурами и буферами.

Например, в истории изменений зафиксировано появление emulate HW TnL, затем отдельного раздела Hardware Limits и отладочного журнала. Позже появились средства работы с Pixel/Vertex Shader 3.0 и изменения Anti-Detect Mode.

Это важный момент: интерфейс 3D-Analyze отражает не единую концепцию настроек, разработанную за один раз, а многолетнее накопление отдельных инструментов и исправлений.

Поэтому некоторые пункты сегодня выглядят необычно или предназначены только для конкретного поколения оборудования.

11. Версия 2.36

Версия 2.36 стала одним из последних крупных выпусков программы.

Она получила поддержку работы с Shader Model 3.0 в декомпиляторе шейдеров и изменения в механизме Anti-Detect Mode для шейдеров версии 2.0 и выше.

К этому моменту 3D-Analyze уже включала несколько совершенно разных групп функций:

  • производительность;

  • Direct3D capabilities;

  • аппаратные ограничения;

  • Pixel/Vertex Shader;

  • исправления конкретных игр;

  • OpenGL;

  • Z-Buffer;

  • диагностические режимы;

  • подмену идентификаторов устройства.

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

12. Версия 2.36b

3D-Analyze v2.36b — финальная версия, с которой обычно связывают программу сегодня.

В этом выпуске были изменены два режима для Ruby Benchmark:

  • Ruby benchmark - NV4x;

  • Ruby benchmark - R42x.

Также была исправлена ошибка, связанная с заменой текстур в режиме Ruby Benchmark.

Сам проект после этого фактически перестал развиваться как современный инструмент.

Для нашего руководства это означает следующее:

2.36b — не современная программа для новых игр.

Её основная ценность сегодня — работа с историческим программным обеспечением и старым графическим оборудованием, а также изучение того, как работал графический стек Windows в эпоху DirectX 8/9.

13. Почему программа перестала быть необходимой

Со временем изменилась сама структура PC-графики.

Появились новые поколения:

  • GPU;

  • DirectX;

  • Shader Model;

  • драйверов;

  • игровых движков.

Разработчики игр стали использовать другие методы определения возможностей оборудования.

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

Поэтому ниша, для которой создавалась 3D-Analyze, постепенно исчезла.

Но для старых игр проблема никуда не делась.

Если сегодня запускать игру начала или середины 2000-х на нестандартной конфигурации, старый графический движок всё ещё может проверять возможности, которых современная система предоставляет иначе или которые конкретный wrapper не показывает игре.

Именно поэтому 3D-Analyze продолжает представлять интерес для энтузиастов ретро-игр и владельцев старого оборудования.

14. Чем 3D-Analyze отличается от обычного графического оптимизатора

3D-Analyze не следует использовать как универсальную программу для повышения FPS.

У неё есть функции, способные увеличить скорость в конкретных ситуациях, но это не основная идея проекта.

Программа предназначена прежде всего для изменения поведения графического приложения.

Например:

Оптимизатор:

уменьшает качество изображения ради увеличения FPS.

3D-Analyze:

изменяет то, какие возможности видит приложение и какие графические операции оно использует.

Поэтому одна и та же настройка может:

  • помочь одной игре;

  • не изменить ничего в другой;

  • полностью сломать третью.

Это нормальное поведение для такого инструмента.

15. Главное правило работы с программой

Не существует универсального набора галочек, который нужно включать для всех игр.

Каждая настройка должна иметь конкретную причину.

Например, если проблема связана с отсутствием Hardware T&L, нужно исследовать настройки T&L.

Если игра не поддерживает необходимый формат текстуры, нужно смотреть раздел текстур.

Если проблема возникает из-за Z-Buffer, бессмысленно начинать с Pixel Shader.

Если игра запускается, но неправильно отображает шейдеры, изменение VendorID может вообще не иметь отношения к проблеме.

Поэтому правильная работа с 3D-Analyze строится по схеме:

найти проблему → определить требуемую функцию → найти соответствующую настройку → изменить минимум параметров → проверить результат.

16. Что нужно знать перед дальнейшим изучением программы

Чтобы уверенно пользоваться 3D-Analyze, достаточно постепенно разобраться в нескольких понятиях:

Direct3D;

OpenGL;

Hardware T&L;

Software T&L;

Pixel Shader;

Vertex Shader;

CAP bits;

текстурные форматы;

Z-Buffer;

Stencil Buffer;

Render States;

Device ID;

Vendor ID.

Не требуется изучать их как программист.

В следующих частях руководства каждый термин будет объяснён простым языком и непосредственно связан с конкретными настройками 3D-Analyze.

17. Что в итоге делает 3D-Analyze

Если свести назначение программы к одной формуле:

3D-Analyze позволяет изменить условия, в которых старая игра работает с графическим API.

Она может заставить приложение:

  • увидеть определённую возможность;

  • не использовать определённую возможность;

  • выбрать другой режим;

  • работать с изменёнными параметрами;

  • использовать программную обработку там, где это предусмотрено;

  • обойти некоторые ограничения старого оборудования;

  • предоставить диагностическую информацию о работе приложения.

Но программа не может произвольно добавить в GPU отсутствующие физические вычислительные блоки.

Это различие будет основой всего дальнейшего руководства.

18. Зачем нужен подробный разбор всех настроек

Интерфейс 3D-Analyze содержит много параметров, которые нельзя правильно использовать только по названию.

Например, emulate pixel shader caps и force max pixel shader version 1.1 выглядят похожими, но решают разные задачи.

То же самое относится к:

  • disable textures и force small texture;

  • force SW TnL и emulate HW TnL caps;

  • force zbuffer и настройкам Stencil;

  • disable rendering и force wireframe mode;

  • VendorID/DeviceID и Anti-Detect Mode.

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

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

Для каждой функции будет указано:

Назначение

Что именно делает параметр.

Как работает

Что меняется в работе игры или графического API.

Когда включать

Какая проблема требует этой функции.

Когда не включать

В каких случаях она бесполезна или опасна.

Результат

Что пользователь должен увидеть после запуска.

Совместимость

С какими другими настройками её можно сочетать и какие сочетания могут конфликтовать.

19. Итог части 1

3D-Analyze — специализированная утилита эпохи DirectX 8/9, созданная Thomas Bruckschlegel в рамках ToMMTi-Systems.

Её задача — не «ускорить любую игру» и не превратить слабую видеокарту в мощную. Основное назначение программы — изменять взаимодействие старого приложения с графическим API, обходить отдельные проверки возможностей видеокарты, менять некоторые графические параметры и помогать исследовать работу Direct3D/OpenGL.

Проект развивался с начала 2000-х годов, получил множество отдельных функций и исправлений, а версия 2.36 была выпущена 10 декабря 2004 года. В архиве проекта сохранилась длинная последовательность версий от 1.x до 2.36, что показывает постепенное расширение возможностей программы.

Главное, что нужно запомнить перед дальнейшей работой:

3D-Analyze не создаёт новую видеокарту. Она изменяет то, как приложение взаимодействует с существующей графической системой.

Именно с этого принципа начинается правильная настройка программы.

В следующей части будет разобран весь интерфейс 3D-Analyze v2.36b по пунктам: DirectX Performance, Pixel and Vertex Shader, Hardware Limits, Game/Demo Fixes, OpenGL, DirectX Device ID, Misc, Anti-Detect Mode и Z-Buffer. Каждый параметр будет объяснён отдельно и простым языком.

Часть 2. Полный разбор всех настроек

Во второй части разберём интерфейс 3D-Analyze v2.36b пункт за пунктом.

Названия параметров оставлены на английском в точности так, как они указаны в программе. Объяснение даётся простым языком: что делает функция, что меняется при её включении, когда она нужна и какие проблемы может вызвать.

Главное правило этой части:

Не следует включать настройки просто потому, что они звучат полезно. Каждая функция предназначена для конкретной задачи.

1. Главное окно программы

После запуска 3D-Analyze пользователь видит несколько основных областей.

File Selection

Здесь выбирается программа, которую будет запускать 3D-Analyze.

В поле отображается путь к исполняемому файлу, например:

C:\Games\OldGame\game.exe

SELECT

Открывает окно выбора файла.

Здесь указывается основной .exe игры или другого приложения.

RUN

Запускает выбранное приложение с установленными параметрами 3D-Analyze.

Важный порядок действий

Сначала выбирается EXE:

SELECT → игра.exe

После этого устанавливаются параметры.

И только затем нажимается:

RUN

Это соответствует исходной инструкции программы.


2. DirectX 8.1 and 9.0 Options

Это самая большая часть интерфейса.

Она предназначена для приложений, использующих Direct3D.

Здесь находятся четыре основных блока:

  1. Performance

  2. Pixel and Vertex Shader

  3. Hardware Limits (cap bits)

  4. Hardware Limits (features)

  5. Game / Demo Fixes

Большая часть настроек 3D-Analyze находится именно здесь.

3. Performance

Раздел Performance содержит функции для изменения поведения рендеринга и диагностики производительности.

Важно понимать: не все параметры этого раздела предназначены для ускорения.

Многие из них являются тестовыми инструментами.

3.1. disable textures

Назначение

Полностью отключает использование текстур.

Как работает

Игра продолжает создавать и обрабатывать 3D-сцену, но текстурирование отключается.

Вместо обычных текстурированных поверхностей пользователь получает объекты без привычного текстурного оформления.

Зачем это нужно

Главное назначение — диагностика.

Можно сравнить производительность:

текстуры включены → FPS

и

текстуры отключены → FPS

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

Когда включать

  • при поиске причины низкого FPS;

  • при тестировании старой видеокарты;

  • при сравнении нагрузки на GPU;

  • для проверки, связана ли проблема с текстурами.

Когда не включать

Для обычной игры эта функция не нужна.

Она не исправляет отсутствующие текстуры и не повышает качество изображения.

3.2. disable rendering

Назначение

Отключает фактическую отрисовку сцены.

Как работает

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

Это позволяет отделить нагрузку приложения и процессора от нагрузки видеокарты.

Что показывает тест

Если игра с disable rendering выполняет сцену значительно быстрее, чем в обычном режиме, ограничение, вероятно, находится на стороне графического пути.

Это не обязательно означает, что виноват именно GPU. Причина может быть связана с передачей данных, драйвером, AGP или другими операциями графического конвейера.

Когда использовать

Только для диагностики производительности.

Важно

Это не игровой режим.

Изображение нормально отображаться не будет.

3.3. disable state switches

Назначение

Отключает переключения графических состояний.

Что такое state

Direct3D хранит множество состояний, определяющих, как будет выполняться последующая отрисовка:

  • освещение;

  • смешивание;

  • текстурирование;

  • Z-тест;

  • режимы фильтрации;

  • другие параметры рендеринга.

Как работает

3D-Analyze подавляет соответствующие изменения состояний.

Когда используется

Это диагностическая функция.

Она особенно связана с тестированием disable rendering.

Когда не использовать

Для обычного запуска игры включать её не следует.

Изменение ожидаемых игрой состояний способно привести к неправильному изображению.

3.4. performance logging

Назначение

Записывает показатели производительности в файл.

Для DirectX используется:

PerfLog_DX.csv

Для OpenGL:

PerfLog_GL.csv

Что записывается

В журнал попадают различные показатели, включая:

  • FPS;

  • количество полигонов;

  • полигонов в секунду;

  • среднее количество полигонов на сцену;

  • другие доступные программе статистические данные.

Для DirectX 9 также доступны дополнительные показатели, связанные с overdraw и количеством обработанных пикселей.

Как использовать

  1. Выбрать игру.

  2. Включить performance logging.

  3. Запустить игру через 3D-Analyze.

  4. Выполнить необходимую сцену или тест.

  5. Завершить игру.

  6. Открыть созданный CSV-файл.

Важно

Логирование само создаёт небольшую дополнительную нагрузку.

Поэтому при точном сравнении FPS желательно не использовать одновременно лишние диагностические элементы.

3.5. counters

Назначение

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

В DirectX 3D-Analyze поддерживает несколько счётчиков:

  • FPS;

  • количество полигонов за кадр;

  • количество полигонов в секунду;

  • использование видеопамяти;

  • эффективный overdraw после Z-теста;

  • количество фактически нарисованных пикселей после Z-теста.

Последние два показателя относятся к DirectX 9.

Зачем нужен

Это один из лучших инструментов для первичной диагностики.

Например:

низкий FPS + высокая нагрузка по полигонам

может указывать на геометрическую нагрузку.

низкий FPS + большое количество обработанных пикселей

может указывать на высокую нагрузку по заполнению.

резкий рост использования VRAM

может помочь обнаружить проблемы с размещением ресурсов в памяти.

Важно

Счётчик FPS сам по себе не объясняет причину тормозов.

Он только показывает результат.

3.6. force small texture (32×32)

Назначение

Заменяет используемые приложением текстуры на очень маленькую текстуру размером 32×32 пикселя.

Зачем это нужно

Это диагностический тест для оценки влияния текстурной нагрузки и памяти.

Если игра становится заметно быстрее после включения этой функции, стоит проверить:

  • объём видеопамяти;

  • загрузку текстур;

  • работу AGP;

  • размещение текстурных данных.

Важно

Это не обычная оптимизация качества.

Картинка будет выглядеть неправильно.

Функция предназначена для тестирования.

3.7. force zbuffer

Назначение

Пытается заставить приложение использовать Z-Buffer, даже если оно работает с W-Buffer.

Что такое Z-Buffer

Z-Buffer хранит информацию о глубине объектов.

Благодаря ему видеокарта понимает, какая поверхность должна быть видна, а какая находится за другой поверхностью.

Когда нужен

Используется при проблемах совместимости, связанных с выбором типа буфера глубины.

Возможные проблемы

Некоторые игры могут ожидать именно W-Buffer.

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

3.8. force wbuffer

Работает в противоположную сторону.

Назначение

Пытается использовать W-Buffer вместо Z-Buffer.

Когда применять

Только если есть основания подозревать проблему с используемым способом хранения глубины.

Не использовать

Если игра нормально работает с обычным Z-Buffer.

4. Освещение и Stencil.

4.1. disable lighting

Назначение

Отключает стандартную обработку освещения DirectX.

Результат

Освещение объектов изменяется или исчезает.

Зачем нужно

Это диагностический инструмент.

Если после отключения освещения исчезают:

  • мерцание;

  • неправильные тени;

  • сильные артефакты;

  • проблемы со старыми драйверами,

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

В обычной игре

Не использовать без конкретной причины.

4.2. disable two sided stencil

Назначение

Отключает использование двухстороннего Stencil-режима и переводит обработку к более старому варианту, использовавшемуся в DirectX 8.

Что такое Stencil Buffer

Stencil Buffer используется для маскирования отдельных областей изображения.

Он может применяться для:

  • теней;

  • отражений;

  • масок;

  • некоторых специальных эффектов.

Когда нужен параметр

В основном при проблемах совместимости со старым оборудованием.

Важно

Изменение Stencil может повлиять на тени и другие эффекты.

5. force anisotropic filtering

Назначение

Принудительно включает максимально доступную для устройства анизотропную фильтрацию.

Что делает фильтрация

Она влияет на качество текстур, находящихся под большим углом к камере.

Например, поверхность пола или дороги вдаль может выглядеть более чёткой.

Что делает 3D-Analyze

Программа не создаёт новую аппаратную возможность.

Она просит приложение использовать максимально доступный режим и меняет переходы между уровнями MIP-карт с билинейного на трилинейный вариант.

Когда использовать

  • для экспериментов с качеством изображения;

  • при тестировании фильтрации;

  • в старых играх, где собственных настроек фильтрации недостаточно.

Когда не использовать

Если задача — добиться максимального FPS на слабом GPU.

6. force windowed mode

Назначение

Принудительно переводит приложение из полноэкранного режима в оконный.

Когда полезно

  • игра зависает при переходе в fullscreen;

  • появляются проблемы с разрешением;

  • возникают артефакты при смене режима;

  • старое приложение конфликтует с современным рабочим столом;

  • нужно протестировать игру в окне.

Диагностическое значение

Если в окне игра работает, а в полноэкранном режиме нет, это важная подсказка.

Проблему можно искать в:

  • переключении видеорежима;

  • частоте обновления;

  • драйвере;

  • совместимости fullscreen-режима.

7. Pixel and Vertex Shader

Этот раздел относится к программируемым частям графического конвейера.

Pixel Shader

Обрабатывает данные, связанные с отдельными пикселями или фрагментами изображения.

Vertex Shader

Обрабатывает вершины 3D-модели.

В старых играх разные видеокарты поддерживали разные версии этих механизмов.

Поэтому игра могла проверять:

«Поддерживает ли видеокарта Pixel Shader 1.4?»

И в зависимости от ответа выбирать определённый графический путь.

8. force max pixel shader version 1.1

Назначение

Ограничивает доступную приложению версию Pixel Shader уровнем 1.1.

Важное условие

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

Это не полноценная эмуляция Pixel Shader 1.1. Параметр изменяет выбор версии на поддерживаемом устройстве.

Когда использовать

Если игра неправильно работает с более новой версией Pixel Shader и необходимо заставить её выбрать более старый путь.

9. force max pixel shader version 1.4

Работает аналогично предыдущему параметру, но ограничивает максимальную версию Pixel Shader до 1.4.

Когда использовать

  • старая игра неправильно выбирает более новую версию;

  • необходимо проверить работу старого shader path;

  • требуется исключить использование более новой версии.

Важно

Это не способ добавить Pixel Shader 1.4 видеокарте, которая его физически не поддерживает.

10. skip pixel shader version 1.1

Назначение

Запрещает использование Pixel Shader 1.1.

Когда может потребоваться

Если конкретная версия шейдера вызывает ошибку или драйвер неправильно обрабатывает её.

Практический смысл

Игра получает возможность перейти к другому доступному варианту.

11. skip pixel shader version 1.4

Работает аналогично, но отключает путь через Pixel Shader 1.4.

Использование

Только при наличии конкретной проблемы с этим shader path.

12. skip pixel shader version 2.0

Назначение

Запрещает использование Pixel Shader 2.0.

Когда полезно

Например, когда старый драйвер или нестандартное устройство неправильно обрабатывает конкретный PS 2.0-код.

Результат

Игра может попробовать использовать более простой графический путь.

Если другого подходящего пути нет, игра может перестать работать.

13. force low precision pixel shader

Назначение

Преобразует Pixel Shader версии 2.0 и выше, чтобы использовать режим partial precision, когда это возможно.

Простыми словами

Часть вычислений выполняется с меньшей точностью.

Зачем

Это может уменьшить вычислительную нагрузку на некоторых старых GPU.

Возможный недостаток

Изображение может немного измениться:

  • цветовые переходы;

  • освещение;

  • эффекты;

  • точность вычислений.

Когда применять

Только как эксперимент с производительностью или совместимостью.

14. force high precision pixel shader

Работает в противоположную сторону.

Назначение

Pixel Shader, использующий partial precision, переводится в режим полной точности.

Возможный эффект

Повышается точность вычислений, но потенциально возрастает нагрузка.

Когда полезно

Если:

  • появляются ошибки в вычислениях;

  • эффекты выглядят неправильно;

  • драйвер некорректно работает с частичной точностью.

15. save shader to file

Назначение

Сохраняет обнаруженные Vertex Shader и Pixel Shader в файл:

shaders.out

Для чего нужен

Это диагностический инструмент.

С его помощью можно узнать, какие шейдеры реально использует приложение.

Практическое применение

Функция особенно полезна при исследовании:

  • несовместимости;

  • неправильного рендеринга;

  • конкретного shader path;

  • поведения игры на разных GPU.

3D-Analyze поддерживает сохранение shader-кода; начиная с версии 2.36 в декомпиляторе появилась поддержка Shader Model 3.0.

16. Hardware Limits (cap bits)

Это один из самых важных разделов программы.

Что такое CAP bits

CAP — сокращение от capabilities, то есть возможностей устройства.

Direct3D предоставляет приложению сведения о том, что умеет конкретное графическое устройство.

Например:

  • поддерживает ли оно Hardware T&L;

  • какие версии шейдеров доступны;

  • какие текстуры поддерживаются;

  • сколько текстур можно использовать одновременно;

  • какие операции доступны.

3D-Analyze может изменить часть этой информации.

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

17. emulate HW TnL caps

Назначение

Сообщает приложению, что устройство поддерживает Hardware T&L.

Как работает

Меняется информация о возможностях устройства.

Это позволяет пройти проверку игры, которая требует HW T&L.

Чего функция НЕ делает

Она не создаёт настоящий аппаратный блок T&L.

Это принципиально.

Если затем игре потребуется соответствующая обработка, может понадобиться программный T&L.

Когда применять

Классический случай:

игра требует HW T&L, а видеокарта его не имеет.

Особенно известным примером были карты Kyro, для которых эта функция изначально и была особенно полезна.

18. emulate other DX8.1 caps

Назначение

Изменяет дополнительные возможности DirectX 8.1, сообщаемые приложению.

Когда использовать

Если игра требует определённую возможность DX8.1, которой устройство не сообщает о поддержке.

Важно

Это широкая настройка.

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

Если известно, что игре требуется только HW T&L, сначала используется соответствующий пункт, а не весь набор DX8.1 CAP.

19. emulate pixel shader caps

Назначение

Изменяет сведения о возможностях Pixel Shader.

В документации 3D-Analyze указано, что функция может эмулировать соответствующие capability до уровня версии 3.0, после чего неподдерживаемые аппаратурой шейдеры пропускаются.

Что это означает

Функция в первую очередь меняет информацию о доступных возможностях.

Она не является полноценным программным эмулятором Pixel Shader.

Когда применять

Когда игра прекращает работу из-за проверки Pixel Shader capabilities.

Возможный результат

Игра может пройти первоначальную проверку, но это не гарантирует правильный рендеринг.

20. emulate bump map caps

Назначение

Изменяет сведения о поддержке bump mapping.

Что такое bump mapping

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

Например:

  • кирпичная стена;

  • камень;

  • металл;

  • рельефная поверхность.

Когда применять

Если игра требует соответствующую возможность, а видеокарта не сообщает о её наличии.

21. emulate max. sim. textures

sim. означает simultaneous — одновременно используемые текстуры.

Назначение

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

Почему это важно

Старые видеокарты сильно различались по этому параметру.

Игра может требовать больше текстурных слоёв, чем устройство заявляет.

Что делает функция

Позволяет изменить соответствующую capability, чтобы приложение не отказалось от нужного режима на этапе проверки.

Важно

Это не увеличивает физическое количество текстурных блоков GPU.

22. Hardware Limits (features)

В отличие от CAP bits, здесь находятся отдельные механизмы совместимости.

23. emulate cube maps

Назначение

Позволяет заменить использование Cube Map обычной 2D-текстурой.

Что такое Cube Map

Это набор изображений, описывающих окружение вокруг объекта.

Cube Mapping применяется для создания эффектов:

  • отражения;

  • окружающей среды;

  • некоторых видов освещения.

Как работает 3D-Analyze

Вместо полноценной Cube Map используется обычная 2D-текстура.

Поэтому это реальная замена одного способа представления данных другим, а не просто изменение capability.

Именно Cube Mapping является одним из немногих явно указанных в документации исключений из общего правила «3D-Analyze не эмулирует графические функции программно».

Возможный недостаток

Эффект может выглядеть иначе, чем в оригинальном режиме.

24. emulate DXT textures

Назначение

Позволяет работать с текстурами DXT1–DXT5 на оборудовании, которое не поддерживает соответствующий формат аппаратно.

Как работает

Сжатая текстура заменяется несжатым вариантом.

Плюс

Игра может получить возможность загрузить текстуру.

Минус

Несжатые данные занимают больше памяти.

Это особенно важно для старых видеокарт с небольшим объёмом VRAM.

Когда использовать

Когда игра требует DXT-текстуры, а видеокарта или драйвер не может нормально работать с этим форматом.

Важно

Исходная документация отдельно предупреждает, что DXT-опция способна вызывать ошибки.

25. KYRO zbuffer/stencil fix

Назначение

Исправляет проблему совместимости, связанную с ограничениями Kyro при использовании Z-Buffer и Stencil Buffer.

Когда применять

Только при использовании соответствующих карт Kyro и наличии проблемы.

Не использовать

На обычных NVIDIA/ATI-видеокартах этот пункт не нужен.

26. VOODOO flicker fix

Назначение

Исправляет проблемы с мерцанием изображения на Voodoo 3/4/5 в полноэкранном режиме.

Когда использовать

Если на Voodoo возникает:

  • мерцание;

  • нестабильное изображение;

  • проблемы после перехода в fullscreen.

Важно

Это специализированный fix.

На другом оборудовании его включение не имеет смысла.

27. Game / Demo Fixes

Этот раздел содержит готовые исправления для конкретных игр и демонстрационных программ.

Это принципиально отличается от универсальных параметров.

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

28. NOLF2 texture/ib fix

NOLF2 — No One Lives Forever 2.

Назначение

Исправляет проблему запуска/совместимости No One Lives Forever 2 при использовании 3D-Analyze.

Особенность

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

Когда использовать

Если запускается NOLF2 и проблема соответствует этому исправлению.

29. Gun Metal Demo fix

Назначение

Позволяет запускать Gun Metal Demo на видеокартах, отличных от NVIDIA.

Когда использовать

Только для соответствующего теста.

Важно

Это не универсальный параметр совместимости.

30. Mafia shadow fix

Назначение

Исправляет мерцание теней в Mafia, связанное с драйверами ATI.

Когда использовать

Если:

  • используется соответствующее оборудование;

  • проблема проявляется именно в тенях Mafia.

Результат

Исправление направлено на устранение мерцания, а не на увеличение производительности.

31. LOTR texture fix

LOTR — The Lord of the Rings.

Назначение

Исправляет проблему с текстурами на Kyro, из-за которой игра могла работать неправильно.

Использовать

Только при соответствующей конфигурации.

32. Matrox Reef Demo fix

Назначение

Изменяет используемый формат Stencil Buffer, чтобы Matrox Reef Demo мог работать с дополнительными видеокартами.

Документация указывает переход от D24X4S4 к D24S8 для совместимости с GeForce 3/4 и Radeon 8500 и более новыми картами соответствующих семейств.

Важно

Это специализированное исправление для демонстрационной программы.

33. Spider-Man fix

Назначение

Исправляет графическую проблему Spider-Man на Voodoo 5.

Когда использовать

Только на соответствующем оборудовании и при наличии проблемы.

34. Ruby benchmark — NV4x

Назначение

Позволяет запускать демонстрационные материалы ATI R4xx на NVIDIA NV4x.

Для чего это было нужно

Это связано с различиями между аппаратными возможностями и форматами данных двух производителей.

Важно

Параметр предназначен прежде всего для тестов и демонстраций.

35. Ruby benchmark — R42x

Назначение

Позволяет запускать соответствующий ATI R4xx тест с изменёнными форматами текстур.

Практический смысл

Основная цель — корректное сравнение результатов бенчмарков, а не обычная игра.

В версии 2.36b для режимов Ruby Benchmark были изменены настройки работы с 3Dc и исправлена ошибка замены текстур.

36. OpenGL Options

Правая часть окна предназначена для OpenGL-приложений.

Здесь набор возможностей меньше, чем в DirectX-разделе.

Это связано с тем, что большая часть специфических настроек 3D-Analyze относится именно к Direct3D.

37. OpenGL — performance logging

Работает по тому же принципу, что и DirectX-логирование.

Создаётся файл:

PerfLog_GL.csv

В журнале

Можно получить показатели производительности OpenGL-приложения.

Когда использовать

Для тестирования и сравнения производительности.

38. OpenGL — counters

Показывает доступные счётчики во время работы OpenGL-приложения.

Основные показатели:

  • FPS;

  • геометрическая нагрузка;

  • другие доступные программе значения.

Использование

Это диагностический режим, а не графический эффект.

39. OpenGL — force small texture (32×32)

Работает по тому же принципу, что и DirectX-вариант.

Результат

Используется очень маленькая текстура 32×32.

Зачем

Проверяется влияние текстурной нагрузки на производительность OpenGL-приложения.

40. OpenGL — disable textures

Отключает текстуры в OpenGL-приложении.

Использование

Для диагностики производительности и поиска проблем с текстурированием.

41. OpenGL — disable rendering

Отключает отрисовку для диагностического тестирования.

Использование

Позволяет оценить работу приложения без обычной нагрузки рендеринга.

42. OpenGL — force anisotropic filtering

Принудительно использует максимально доступную анизотропную фильтрацию.

Важно

Результат зависит от возможностей драйвера и конкретного GPU.

43. Fragment and Vertex Programs

В OpenGL эта группа связана с программируемыми графическими программами.

save programs to file (shaders.out)

Сохраняет обнаруженные Fragment и Vertex Programs в файл:

shaders.out

Зачем

Для анализа того, какие программы использует приложение.

Когда полезно

  • исследование старой игры;

  • поиск проблем с шейдерами;

  • анализ поведения драйвера;

  • сравнение разных конфигураций.

Функция сохранения Fragment/Vertex Programs появилась в истории развития 3D-Analyze ещё до версии 2.36.

44. DirectX Device ID’s

Этот раздел позволяет изменить идентификаторы устройства, которые приложение получает через DirectX.

На экране присутствуют два поля:

  • VendorID

  • DeviceID

Ниже приведены готовые примеры конфигураций для старых видеокарт:

  • NVIDIA GeForce Ti 4600;

  • NVIDIA GeForce FX 5900 Ultra;

  • ATI Radeon 8500;

  • ATI Radeon 9800 Pro.

45. VendorID

Что это

Vendor ID определяет производителя устройства.

Например, разные значения используются для:

  • NVIDIA;

  • ATI/AMD;

  • других производителей.

Что делает 3D-Analyze

Позволяет передать приложению изменённый идентификатор производителя.

Зачем

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

Например:

NVIDIA → один режим

ATI → другой режим

Изменение VendorID позволяет проверить, как игра поведёт себя при другом определении оборудования.

Важно

Это не меняет реального производителя видеокарты.

46. DeviceID

Что это

Device ID определяет конкретное устройство внутри семейства производителя.

Например, игра может различать разные GPU одного производителя.

Что делает параметр

Позволяет сообщить приложению другой Device ID.

Для чего

  • обход ошибочной проверки;

  • выбор другого графического пути;

  • совместимость с конкретной игрой;

  • тестирование поведения приложения.

Главный недостаток

Игра может начать использовать функции, которых у реального GPU нет.

Поэтому подмена Device ID — один из параметров, который следует применять осторожно.

47. Зачем нужны готовые VendorID/DeviceID

В нижней части окна приведены распространённые старые устройства.

Например:

NVIDIA GeForce Ti 4600

VendorID: 4318

DeviceID: 592

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

Но универсального правила здесь нет.

Нельзя считать:

«GeForce Ti 4600 подходит для всех игр».

Подмена устройства меняет только информацию, которую получает приложение.

48. Misc

В нижней части интерфейса находятся дополнительные функции.

Это смешанный раздел: здесь есть диагностика, совместимость и отдельные тестовые возможности.

49. force wireframe mode

Назначение

Переводит отображение полигонов в каркасный режим.

Вместо заполненных поверхностей показываются линии, образующие геометрию объектов.

Зачем

Очень полезный диагностический инструмент.

Можно увидеть:

  • насколько сложна геометрия сцены;

  • количество объектов;

  • форму моделей;

  • плотность полигонов.

Для обычной игры

Не использовать.

50. force reference rast.

Назначение

Заставляет приложение использовать программный Reference Rasterizer Microsoft вместо аппаратного рендеринга.

Что это такое

Reference Rasterizer — эталонный программный механизм Direct3D, предназначенный главным образом для разработки и тестирования.

Он позволяет проверить работу графического API без обычного аппаратного ускорителя.

Почему он очень медленный

Практически вся работа выполняется программно.

Когда нужен

  • тестирование;

  • диагностика;

  • проверка корректности графических функций;

  • исследование поведения приложения.

Когда не нужен

Для обычной игры.

51. debug logging

Назначение

Создаёт подробный отладочный журнал работы 3D-Analyze.

Когда использовать

Если игра:

  • запускается без 3D-Analyze;

  • падает при использовании 3D-Analyze;

  • зависает;

  • выдаёт неизвестную ошибку.

Как использовать

  1. Включить debug logging.

  2. Запустить игру через 3D-Analyze.

  3. Воспроизвести проблему.

  4. Закрыть игру.

  5. Найти созданный журнал.

  6. Проанализировать его.

Исторически эта функция использовалась самим разработчиком для диагностики проблем: к журналу рекомендовалось прикладывать конфигурацию системы, название игры и выбранные параметры 3D-Analyze.

52. force 100 hz

Назначение

Пытается установить частоту обновления экрана 100 Гц для DirectX-приложения.

Когда полезно

В старых играх иногда возникали проблемы с частотой обновления при переходе в fullscreen.

Когда применять

Если есть конкретная проблема с частотой обновления.

Важно

Монитор должен поддерживать выбранную частоту.

53. remove stuttering

Назначение

Пытается устранить микроподёргивания изображения, которые могут возникать даже при нормальном среднем FPS.

Главное отличие

Stuttering и низкий FPS — не одно и то же.

Например:

  • средний FPS = 60;

  • но кадры выдаются неравномерно;

  • изображение воспринимается как дёрганое.

Эта функция была добавлена для отдельных проблем старых видеокарт, в частности Radeon 9700 Pro и некоторых игр.

Важно

3D-Analyze предупреждает, что функция изменяет параметры Vertex Buffer и поэтому может вызвать ошибки в приложении.

Использовать её следует только при наличии реального stuttering.

54. Save batch file!

Назначение

Сохраняет выбранные настройки и путь к приложению в .bat-файл.

Зачем это нужно

Без сохранения пользователю приходится каждый раз заново:

  1. выбирать EXE;

  2. выставлять параметры;

  3. нажимать Run.

BAT-файл позволяет сохранить конфигурацию для повторного запуска.

Практическая польза

Можно создать отдельный BAT-файл для каждой игры:

Game1_3DA.bat

Game2_3DA.bat

Game3_3DA.bat

При этом каждая игра может иметь собственный набор настроек.

55. Color MipMap

В разделе Misc находятся два режима:

  • method 1

  • method 2

Что такое MIP-карты

Игра может хранить несколько версий одной текстуры разного размера.

Например:

  • 1024×1024;

  • 512×512;

  • 256×256;

  • 128×128;

  • 64×64.

Когда объект удаляется от камеры, используется меньшая версия.

Это называется MIP mapping.

Что делает Color MipMap

3D-Analyze визуально окрашивает разные уровни MIP-карты разными цветами.

Зачем

Можно определить:

  • какой уровень MIP используется;

  • насколько быстро игра переходит между уровнями;

  • где происходит резкая смена детализации;

  • как работает текстурирование.

Method 1 и Method 2

Они используют разные способы обработки текстур в DirectX.

Поэтому конкретная игра может нормально работать с одним методом и хуже с другим.

Метод 1 также может увеличить время загрузки приложения.

56. Anti-Detect Mode

Это один из наиболее необычных разделов программы.

Он содержит два пункта:

  • shaders

  • textures

Что такое Anti-Detect

Некоторые драйверы могли распознавать определённые особенности приложения или конкретные графические программы.

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

Это не «античит» и не защита от обнаружения игрока.

Речь именно о распознавании графического кода драйвером.

57. Anti-Detect Mode — shaders

Что делает

Изменяет Pixel Shader и Vertex Shader Code.

Цель — изменить код таким образом, чтобы драйвер не распознал исходный вариант.

Когда использовать

Только если известно, что конкретная проблема связана с распознаванием shader-кода драйвером.

Риски

Изменение шейдера может:

  • изменить результат;

  • вызвать ошибку;

  • нарушить работу игры;

  • ухудшить изображение.

Поэтому это не универсальная настройка совместимости.

58. Anti-Detect Mode — textures

Что делает

Изменяет цветовую информацию некоторых пикселей текстур.

Это делается для того, чтобы изменить характерные признаки данных, которые может распознавать драйвер.

Главный недостаток

Изменения могут быть видны на экране.

Это прямо отмечено в документации программы.

Когда использовать

Только при конкретной проблеме, для которой требуется такой обход.

Не использовать

Если игра нормально работает без этой функции.

59. Z-Buffer

В нижней части окна находится отдельный блок управления Z-Buffer.

Здесь представлены четыре варианта:

  1. 16-bit без Stencil;

  2. 16-bit со Stencil;

  3. 24-bit без Stencil;

  4. 24-bit со Stencil.

60. force 16 bit zbuffer (without stencil)

Назначение

Принудительно выбирает 16-битный Z-Buffer.

Плюс

Меньше памяти на хранение глубины.

Минус

Меньшая точность.

В некоторых сценах это может привести к проблемам с глубиной:

  • мерцанию поверхностей;

  • наложению объектов;

  • z-fighting.

Когда применять

Если игра или видеокарта плохо работает с более глубоким форматом.

61. force 16 bit zbuffer (with stencil)

Назначение

Использует 16 бит общего формата:

  • 15 бит — глубина;

  • 1 бит — Stencil.

Когда нужен

Если игре одновременно необходимы:

  • Z-Buffer;

  • Stencil Buffer.

Недостаток

Глубина становится менее точной, чем при полноценном 16-битном Z-Buffer без выделения бита под Stencil.

62. force 24 bit zbuffer (without stencil)

Назначение

Принудительно выбирает 24-битный Z-Buffer без Stencil.

Преимущество

Больше точность глубины.

Когда применять

Если игра требует 24-битный буфер или проблемы возникают при использовании более простого формата.

63. force 24 bit zbuffer (with stencil)

Назначение

Использует:

  • 24 бита для глубины;

  • 8 бит для Stencil.

То есть получается стандартная схема 24/8.

Когда требуется

Для игр, использующих:

  • точный Z-Buffer;

  • Stencil-эффекты;

  • тени;

  • отражения;

  • маскирование.

Важно

Не все видеокарты и игры поддерживают принудительный выбор такого формата. Документация 3D-Analyze отдельно предупреждает об этом для всех вариантов принудительного Z-Buffer.

64. Чем Z-Buffer отличается от Stencil Buffer

Это важно не путать.

Z-Buffer

Отвечает за:

насколько объект близко или далеко от камеры.

Он определяет видимость поверхностей.

Stencil Buffer

Отвечает за:

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

Он может использоваться для:

  • теней;

  • отражений;

  • масок;

  • специальных эффектов.

Поэтому запись:

24 bit Z + 8 bit Stencil

означает не «32-битный Z-Buffer».

Это два разных типа данных, находящихся в одном формате поверхности.

65. Что делать, если функция ничего не меняет

Это нормальная ситуация.

3D-Analyze не гарантирует, что каждый параметр будет иметь эффект в каждой игре.

Причины могут быть разные:

  • игра не использует соответствующую функцию;

  • используется другой графический API;

  • драйвер игнорирует изменение;

  • параметр влияет только на определённый этап запуска;

  • приложение использует собственный механизм;

  • проблема находится в другой части графического конвейера.

Поэтому отсутствие видимого эффекта не означает, что программа неисправна.

66. Самые важные различия между похожими функциями

emulate HW TnL caps

Меняет информацию о возможностях устройства.

force SW TnL

Заставляет T&L выполняться программно на CPU.

Это не одно и то же.


emulate pixel shader caps

Изменяет заявленные возможности Pixel Shader и может пропускать неподдерживаемые шейдеры.

force max pixel shader version

Ограничивает используемую версию Pixel Shader.

Это тоже разные задачи.


disable textures

Полностью убирает текстурирование.

force small texture

Оставляет текстурирование, но резко уменьшает используемый текстурный ресурс.


force zbuffer

Меняет тип буфера глубины относительно W-Buffer.

force 16/24 bit zbuffer

Меняет конкретную глубину выбранного Z-Buffer.


disable rendering

Отключает фактическую отрисовку.

force wireframe mode

Отрисовывает геометрию, но только каркасом.

67. Какие настройки являются диагностическими

Для диагностики особенно полезны:

  • counters;

  • performance logging;

  • disable textures;

  • force small texture;

  • disable rendering;

  • disable state switches;

  • force wireframe mode;

  • save shader to file;

  • save programs to file;

  • debug logging;

  • Color MipMap.

Эти функции помогают понять почему приложение работает неправильно или медленно, а не просто изменить картинку.

68. Какие настройки являются настройками совместимости

К этой группе относятся:

  • emulate HW TnL caps;

  • emulate other DX8.1 caps;

  • emulate pixel shader caps;

  • emulate bump map caps;

  • emulate max. sim. textures;

  • emulate cube maps;

  • emulate DXT textures;

  • force zbuffer;

  • force wbuffer;

  • варианты принудительного Z-Buffer;

  • force windowed mode;

  • VendorID;

  • DeviceID.

69. Какие настройки являются специализированными исправлениями

Сюда относятся:

  • KYRO zbuffer/stencil fix;

  • VOODOO flicker fix;

  • NOLF2 texture/ib fix;

  • Gun Metal Demo fix;

  • Mafia shadow fix;

  • LOTR texture fix;

  • Spider-Man fix;

  • Matrox Reef Demo fix;

  • Ruby benchmark - NV4x;

  • Ruby benchmark - R42x.

Их не следует включать «на всякий случай».

70. Какие настройки лучше не трогать без причины

Особенно осторожно следует обращаться с:

  • Anti-Detect Mode;

  • force high precision pixel shaders;

  • force low precision pixel shaders;

  • remove stuttering;

  • force 16/24 bit zbuffer;

  • force zbuffer;

  • force wbuffer;

  • VendorID/DeviceID;

  • emulate pixel shader caps;

  • emulate DXT textures.

Эти параметры могут менять фундаментальные условия, в которых работает графический движок.

71. Базовый принцип настройки после изучения интерфейса

После разбора всех функций можно сформулировать простое правило.

Если игра работает — ничего не менять.

Если игра не работает:

1. Определить ошибку.

2. Определить DirectX или OpenGL.

3. Понять, какую возможность требует игра.

4. Найти соответствующую функцию 3D-Analyze.

5. Включить только её.

6. Проверить результат.

7. Если проблема осталась — перейти к следующему параметру.

Такой порядок намного надёжнее, чем включение десяти или двадцати функций одновременно.

72. Итог второй части

3D-Analyze v2.36b содержит несколько совершенно разных типов настроек.

Performance

Используется в основном для изменения рендеринга и диагностики производительности.

Pixel and Vertex Shader

Управляет выбором и обработкой shader path.

Hardware Limits — cap bits

Меняет информацию о возможностях устройства, которую получает приложение.

Hardware Limits — features

Предоставляет отдельные механизмы совместимости для текстур, Cube Map и старых GPU.

Game / Demo Fixes

Содержит точечные исправления для конкретных игр, демо и видеокарт.

OpenGL

Предоставляет отдельный набор диагностических и графических параметров для OpenGL.

DirectX Device ID

Позволяет изменить VendorID и DeviceID, которые видит приложение.

Misc

Содержит диагностические инструменты и отдельные функции совместимости.

Anti-Detect Mode

Изменяет shader-код или данные текстур для обхода определённого распознавания драйвером.

Z-Buffer

Позволяет принудительно выбирать глубину буфера и наличие Stencil.

Главное — не считать все эти функции разновидностями одного и того же «эмулятора». Одни параметры изменяют информацию о возможностях GPU, другие меняют команды или режимы работы, третьи предназначены только для диагностики, а четвёртые исправляют конкретные ошибки конкретного оборудования.

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

Часть 3. Практическое использование

В первых двух частях мы разобрали назначение программы и её настройки. Теперь начинается самое главное: как применять 3D-Analyze на практике.

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

Правильная работа с 3D-Analyze строится по принципу:

сначала определить проблему → затем понять причину → выбрать минимальное вмешательство → проверить результат.

1. Перед началом работы

Перед настройкой необходимо подготовить отдельную копию игры или хотя бы сохранить исходные файлы.

Это особенно важно при использовании дополнительных DLL и сторонних wrappers.

Рекомендуется иметь:

  • чистый каталог игры;

  • резервную копию изменяемых DLL;

  • оригинальный EXE;

  • информацию о видеокарте;

  • используемый драйвер;

  • разрешение экрана;

  • версию Windows;

  • сведения о том, использует ли игра Direct3D или OpenGL.

Если игра уже запускается без 3D-Analyze, сначала нужно проверить её в исходном состоянии.

Это позволит понять, что именно изменилось после применения программы.

2. Основной принцип настройки

Необходимо разделить проблему на несколько этапов.

Этап 1. Запускается ли игра?

Если игра вообще не стартует, сначала исследуем:

  • проверку видеокарты;

  • Direct3D/OpenGL;

  • Hardware T&L;

  • Pixel Shader;

  • поддерживаемые форматы;

  • Z-Buffer;

  • VendorID/DeviceID.

Этап 2. Игра запускается, но изображение неправильное?

Тогда смотрим:

  • текстуры;

  • шейдеры;

  • освещение;

  • Z-Buffer;

  • Stencil;

  • Cube Mapping;

  • DXT;

  • фильтрацию.

Этап 3. Игра работает, но тормозит?

Тогда используем:

  • counters;

  • performance logging;

  • disable textures;

  • force small texture;

  • disable rendering;

  • force SW TnL.

Этап 4. Игра работает, но появляются случайные ошибки?

Проверяем:

  • Z-Buffer;

  • W-Buffer;

  • Stencil;

  • Vertex Buffer;

  • шейдеры;

  • драйвер;

  • дополнительные DLL.

3. Первый запуск через 3D-Analyze

Допустим, имеется игра:

C:\Games\Game\game.exe

Порядок действий:

  1. Запустить 3D-Analyze.

  2. Нажать SELECT.

  3. Выбрать game.exe.

  4. Не включать никакие дополнительные функции.

  5. Нажать RUN.

  6. Проверить результат.

Это очень важный тест.

Если игра запускается без каких-либо изменений, значит базовая совместимость есть.

В таком случае 3D-Analyze для обычной работы не требуется.

4. Если игра не запускается

Первое, что нельзя делать:

включать все функции подряд.

Нужно получить максимальное количество информации об ошибке.

Например:

Вариант A

Игра сообщает:

Hardware T&L required.

Сразу проверяем:

emulate HW TnL caps

Вариант B

Игра сообщает:

Pixel Shader 1.4 required.

Проверяем возможности Pixel Shader и соответствующие CAP-настройки.

Вариант C

Игра запускается, но сразу закрывается.

Причина может быть совершенно другой:

  • Z-Buffer;

  • текстуры;

  • шейдер;

  • драйвер;

  • неправильный DeviceID;

  • DLL.

Поэтому в этом случае нельзя автоматически включать emulate HW TnL caps.

5. Определяем графический API

Это один из самых важных этапов.

Игра может использовать:

  • DirectDraw;

  • Direct3D;

  • OpenGL;

  • несколько API одновременно.

Например, меню может работать через один механизм, а 3D-сцена — через другой.

Если игра использует OpenGL, настройки из раздела:

DirectX 8.1 and 9.0 Options

могут вообще не повлиять на её 3D-рендеринг.

В таком случае нужно работать с:

OpenGL Options

Поэтому перед настройкой желательно выяснить, какой API используется игрой.

6. Как определить Direct3D-игру

Обычно это можно определить несколькими способами:

  • документацией игры;

  • настройками запуска;

  • файлами конфигурации;

  • логами;

  • названием используемой DLL;

  • поведением игры при запуске.

Для старых Direct3D-игр часто встречаются:

  • d3d8.dll;

  • d3d9.dll;

  • ddraw.dll.

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

7. Как определить OpenGL-игру

Частый признак — наличие:

opengl32.dll

Однако здесь тоже нужно быть осторожным.

Windows предоставляет системную OpenGL DLL, поэтому сам факт её наличия ничего не доказывает.

Нужно установить, действительно ли приложение создаёт OpenGL-контекст.

8. Первый диагностический тест

Если неизвестно, что именно тормозит игру, можно использовать простую последовательность.

Тест №1

Обычный запуск.

Записываем:

  • FPS;

  • поведение изображения;

  • наличие артефактов.

Тест №2

Включаем:

counters

Смотрим показатели.

Тест №3

Включаем:

disable textures

Снова проверяем FPS.

Тест №4

Включаем:

force small texture (32x32)

Снова проверяем FPS.

Тест №5

Включаем:

disable rendering

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

Получается своеобразная карта нагрузки.

9. Как понять результат диагностики

Допустим:

Обычный режим: 15 FPS

Disable textures: 25 FPS

32×32 textures: 23 FPS

Disable rendering: 80 FPS

Это говорит о многом.

Рендеринг действительно является главным источником нагрузки.

Но разница между обычными текстурами и 32×32 небольшая, значит проблема может быть не только в размере текстур.

Теперь можно исследовать:

  • полигоны;

  • шейдеры;

  • фильтрацию;

  • T&L;

  • overdraw.

10. Как определить проблему с T&L

Рассмотрим типичный случай.

Старая игра запускается только на видеокартах с Hardware T&L.

На старой карте появляется сообщение о несовместимости.

Шаг 1

Включаем:

emulate HW TnL caps

Шаг 2

Запускаем игру.

Шаг 3

Если игра теперь проходит первоначальную проверку, но падает или показывает неправильное изображение, одной подмены capability недостаточно.

Шаг 4

Пробуем:

force SW TnL

Теперь часть обработки T&L должна выполняться программно.

Шаг 5

Снова запускаем игру.

11. Комбинация для отсутствующего HW T&L

Базовая комбинация:

emulate HW TnL caps

Если этого недостаточно:

emulate HW TnL caps + force SW TnL

Логика следующая:

emulate HW TnL caps

говорит игре:

«не считай устройство несовместимым из-за отсутствия HW T&L».

force SW TnL

затем позволяет использовать программный путь обработки.

Цена

Работа переносится на CPU.

Поэтому FPS может существенно снизиться.

12. Когда не нужно использовать force SW TnL

Если видеокарта уже имеет аппаратный T&L, включать программный вариант без причины не следует.

Это может:

  • увеличить нагрузку на CPU;

  • уменьшить FPS;

  • вызвать дополнительные задержки;

  • изменить поведение игры.

Поэтому:

SW T&L — это средство совместимости и диагностики, а не универсальный способ ускорения.

13. Игры с проблемой Pixel Shader

Допустим, игра требует Pixel Shader 1.4.

Есть несколько возможных ситуаций.

Ситуация 1

Видеокарта поддерживает PS 1.4, но игра неправильно определяет её.

Тогда сначала исследуем:

emulate pixel shader caps

Ситуация 2

Видеокарта поддерживает более новую версию, но игра выбирает проблемный shader path.

Можно проверить:

force max pixel shader version 1.1

или:

force max pixel shader version 1.4

Ситуация 3

Проблема возникает именно при использовании определённой версии.

Например, PS 2.0 вызывает ошибку.

Тогда можно проверить:

skip pixel shader version 2.0

14. Важное правило для Shader-настроек

Нельзя одновременно включать:

  • несколько force max;

  • несколько skip;

  • emulate pixel shader caps;

без понимания их назначения.

Например, бессмысленно одновременно говорить программе:

ограничить максимальную версию до 1.1

и

пропустить Pixel Shader 1.1.

Такая конфигурация может привести к отсутствию подходящего shader path.

15. Диагностика проблем с текстурами

Если игра запускается, но:

  • поверхности белые;

  • текстуры отсутствуют;

  • объекты прозрачные;

  • появляются квадраты;

  • игра вылетает при загрузке уровня,

необходимо проверить текстурную часть.

Первый тест:

disable textures

Если игра начинает работать стабильнее, это сильный признак проблемы в текстурировании.

Но disable textures не является исправлением.

Это только диагностический тест.

16. Если проблема связана с размером текстур

Следующий тест:

force small texture (32x32)

Если игра после этого становится стабильнее, возможны проблемы с:

  • памятью;

  • размером текстур;

  • загрузкой ресурсов;

  • старым драйвером;

  • ограничениями GPU.

Однако качество изображения при этом будет сильно нарушено.

Поэтому функция используется только для определения причины.

17. Проблема с DXT

Если игра использует DXT-сжатие, а оборудование работает с этим форматом неправильно, можно попробовать:

emulate DXT textures

Логика:

Игра → DXT-текстура → проблема

3D-Analyze → несжатое представление

Игра получает текстуру другим способом

Плюс:

  • можно обойти отсутствие аппаратной поддержки.

Минус:

  • возрастает расход памяти;

  • возможны ошибки;

  • производительность может измениться.

18. Как определить проблему с Cube Mapping

Признаки:

  • отсутствуют отражения;

  • поверхность выглядит полностью чёрной;

  • определённый эффект вызывает вылет;

  • ошибка появляется только на объектах с отражением.

Можно попробовать:

emulate cube maps

3D-Analyze заменяет Cube Map обычной 2D-текстурой.

Если после этого эффект появляется или игра перестаёт падать, проблема действительно могла быть связана с Cube Mapping.

Но изображение может отличаться от оригинала.

19. Проблемы с Z-Buffer

Типичные признаки:

  • поверхности мерцают;

  • два объекта визуально «борются» друг с другом;

  • стены просвечивают;

  • тени отображаются неправильно;

  • объекты появляются перед другими;

  • глубина сцены выглядит неверно.

Это может быть связано с Z-Buffer.

Тогда можно проверить:

  • force zbuffer;

  • force wbuffer;

  • 16-bit Z;

  • 24-bit Z;

  • варианты со Stencil.

20. Как тестировать Z-Buffer правильно

Нельзя менять четыре режима одновременно.

Последовательность:

Тест 1

Исходный режим.

Тест 2

force zbuffer

Тест 3

Если не помогло — отключаем его и проверяем:

force wbuffer

Тест 4

Если проблема связана с точностью глубины:

force 16 bit zbuffer

или:

force 24 bit zbuffer

Тест 5

Если игре нужен Stencil:

проверяем соответствующий вариант:

with stencil

21. Как понять, нужен ли Stencil

Если после включения варианта без Stencil:

  • исчезли тени;

  • пропали отражения;

  • перестали работать маски;

  • исчезли специальные эффекты,

игра, вероятно, использует Stencil Buffer.

Тогда следует проверить вариант:

with stencil

22. 16-bit или 24-bit Z-Buffer

Общее правило:

16-bit

Меньше памяти.

Но ниже точность глубины.

24-bit

Больше точность.

Но требуется больше памяти.

Если игра нормально работает в 24-bit, нет необходимости принудительно переводить её на 16-bit.

23. Проблемы с освещением

Если объекты:

  • слишком тёмные;

  • слишком яркие;

  • имеют неправильное освещение;

  • отображаются без света;

  • вызывают артефакты,

можно провести тест с:

disable lighting

Если проблема исчезает, это важная диагностическая информация.

Но отключение освещения не является нормальным решением для большинства игр.

24. Проблемы со Stencil

Если проблема связана с тенями или масками, можно проверить:

disable two sided stencil

Это особенно актуально для старых GPU и драйверов, которые неправильно работали с определёнными вариантами Stencil.

После включения необходимо проверить:

  • тени;

  • отражения;

  • освещение;

  • другие эффекты.

25. Проблемы с fullscreen

Если игра:

  • зависает при переключении разрешения;

  • показывает чёрный экран;

  • сразу закрывается после перехода в fullscreen;

  • неправильно работает с частотой обновления,

первый тест:

force windowed mode

Если в окне игра работает нормально, а в полноэкранном режиме нет, проблема, вероятно, находится не в основном 3D-рендеринге, а в переходе между видеорежимами.

После этого можно отдельно проверить:

force 100 hz

если монитор и выбранное разрешение поддерживают 100 Гц.

26. Диагностика через Wireframe

Если изображение выглядит странно, включаем:

force wireframe mode

Это позволяет посмотреть на геометрию без обычного заполнения полигонов.

Что можно обнаружить

  • чрезмерное количество полигонов;

  • повреждённую геометрию;

  • неправильные модели;

  • неожиданные поверхности;

  • особенности работы движка.

Это особенно полезно при исследовании старых игр и демо.

27. Как искать причину низкого FPS

Низкий FPS нельзя автоматически связывать с видеокартой.

Возможны:

  • CPU bottleneck;

  • GPU bottleneck;

  • слишком много полигонов;

  • слишком много пикселей;

  • тяжёлые шейдеры;

  • текстуры;

  • программный T&L;

  • драйвер;

  • синхронизация;

  • проблемы с памятью.

Поэтому сначала включаем:

counters

и:

performance logging

28. Тест CPU и GPU через T&L

Если игра использует программный T&L, сравниваем:

обычный режим

и:

force SW TnL

Если FPS резко падает при программном T&L, значит CPU становится существенным ограничением.

Если разница небольшая, причина может находиться в другом месте.

29. Тест текстурной нагрузки

Используем:

disable textures

Если FPS вырос значительно — текстурная часть важна.

Затем:

force small texture

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

Если 32×32 почти ничего не меняет, проблема может быть не в текстурах.

30. Тест геометрии

Включаем:

force wireframe mode

и смотрим на сложность сцены.

Дополнительно используем:

counters

Если сцена содержит огромное количество полигонов, старый GPU или CPU может не успевать обрабатывать геометрию.

31. Тест шейдеров

Включаем:

save shaders to file

После запуска смотрим shaders.out.

Если игра работает только при отключении определённой версии Pixel Shader, можно исследовать, какой shader path используется.

Это гораздо информативнее, чем случайное включение всех Shader-параметров.

32. Когда использовать VendorID

Подмена VendorID нужна только тогда, когда есть основание считать, что игра выбирает графический режим по производителю.

Например:

реальная видеокарта → ATI

игра → выбирает проблемный ATI path

Тогда можно проверить другой VendorID.

Но сначала необходимо убедиться, что именно определение производителя является причиной проблемы.

33. Когда использовать DeviceID

DeviceID имеет смысл, если игра различает конкретные модели.

Например:

один GPU → режим A

другой GPU → режим B

Если реальная карта попадает в проблемный путь, можно протестировать другой DeviceID.

Но это рискованнее обычного изменения capability.

Игра может включить функции, которых на реальном GPU нет.

34. Типичная ошибка при подмене видеокарты

Неправильный подход:

«Игра требует Radeon 9800 — поставим DeviceID Radeon 9800».

Это не гарантирует работу.

Игра может после проверки начать использовать:

  • Shader;

  • текстуры;

  • буферы;

  • форматы;

которые реальная видеокарта не поддерживает.

Подмена идентификатора полезна только тогда, когда проблема действительно находится в определении устройства, а не в его реальных возможностях.

35. Когда использовать Anti-Detect Mode

Это специализированный инструмент.

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

Порядок:

  1. Проверить игру без Anti-Detect.

  2. Проверить драйвер.

  3. Проверить обычные compatibility settings.

  4. Только затем тестировать shaders.

  5. Если требуется — отдельно тестировать textures.

Не следует включать оба режима одновременно.

36. Почему нельзя включать Anti-Detect без причины

Потому что он изменяет реальные данные.

В режиме:

shaders

изменяется shader code.

В режиме:

textures

изменяется содержимое текстур.

Поэтому новая проблема может появиться именно из-за Anti-Detect.

37. Типичные ошибки пользователя

Ошибка №1 — включить всё

Это самая распространённая ошибка.

Если одновременно включить 15 параметров и игра заработает, неизвестно, какой из них помог.

Если игра перестанет работать, неизвестно, какой параметр вызвал проблему.


Ошибка №2 — считать название функции буквальным

Например:

emulate pixel shader caps

не означает:

«создать настоящий Pixel Shader».

Название нужно понимать в контексте CAP bits.


Ошибка №3 — использовать настройки другой игры

Чужой конфиг может быть полезной подсказкой, но не универсальным рецептом.

У двух игр могут быть совершенно разные причины проблем.


Ошибка №4 — путать FPS и совместимость

Если игра не запускается, снижение нагрузки не решит проблему.

disable textures не исправит отсутствие HW T&L.

force wireframe не добавит Pixel Shader.

counters вообще ничего не исправляет.


Ошибка №5 — менять сразу несколько параметров

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

38. Правильная схема поиска решения

Используем следующую последовательность.

Шаг 1

Запустить игру без 3D-Analyze.

Шаг 2

Записать ошибку.

Шаг 3

Определить API.

Шаг 4

Определить требование игры.

Шаг 5

Выбрать одну соответствующую функцию.

Шаг 6

Запустить.

Шаг 7

Проверить:

  • запуск;

  • меню;

  • начало игры;

  • загрузку уровня;

  • текстуры;

  • освещение;

  • тени;

  • звук;

  • FPS;

  • стабильность.

Шаг 8

Если всё работает — остановиться.

Шаг 9

Если проблема осталась — перейти к следующей причине.

39. Почему проверять нужно не только запуск

Допустим, после включения:

emulate HW TnL caps

игра запустилась.

Это ещё не означает, что задача решена.

Нужно пройти хотя бы:

EXE → меню → новая игра → загрузка уровня → игровая сцена.

Некоторые ошибки появляются только после создания 3D-сцены.

Например:

  • EXE запускается;

  • меню работает;

  • уровень загружается;

  • при появлении первого персонажа игра падает.

В этом случае первоначальная проверка совместимости уже пройдена. Теперь нужно искать проблему в реальном рендеринге.

40. Почему один и тот же параметр работает по-разному

Результат зависит от нескольких компонентов:

Игра

графический движок

3D-Analyze

API

драйвер

GPU

операционная система

Если изменить хотя бы один элемент цепочки, результат может измениться.

Поэтому нельзя гарантировать, что конкретный набор параметров будет одинаково работать:

  • в Windows XP;

  • Windows 7;

  • Windows 10;

  • Windows 11.

3D-Analyze создавалась для совершенно другой программной среды.

41. Совмещение с DxWnd

DxWnd решает другую задачу.

Он предназначен главным образом для управления поведением старых Windows-приложений:

  • оконный режим;

  • координаты окна;

  • масштабирование;

  • совместимость;

  • перехват некоторых API;

  • управление таймингами.

Поэтому 3D-Analyze и DxWnd могут дополнять друг друга.

Условная схема:

Игра → DxWnd → графический API

и отдельно:

3D-Analyze → изменение Direct3D-поведения

Но конкретная совместимость зависит от игры и версии используемых DLL.

42. Совмещение с dgVoodoo

dgVoodoo выполняет другую задачу: оно переводит старые графические API на более современные.

Например, старый Direct3D/Glide-путь может быть перенаправлен через современный графический backend.

Получается принципиально другая цепочка:

Игра → старый API → dgVoodoo → современный API → GPU

3D-Analyze работает на другом уровне.

Поэтому комбинация возможна не всегда.

43. Главная проблема при использовании нескольких wrappers

Если одновременно используются:

  • 3D-Analyze;

  • dgVoodoo;

  • DxWnd;

  • собственный d3d8.dll;

  • собственный d3d9.dll;

возникает вопрос:

кто первым получает графический вызов?

Если две программы пытаются заменить одну и ту же DLL или перехватить один и тот же интерфейс, они могут конфликтовать.

Результат:

  • игра не запускается;

  • чёрный экран;

  • вылет;

  • неправильное разрешение;

  • отсутствие 3D;

  • настройки одной программы не работают.

44. Правило для нескольких DLL

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

Сначала:

чистая игра

3D-Analyze

проверка.

Затем:

чистая игра

dgVoodoo

проверка.

Только после этого:

dgVoodoo + 3D-Analyze

если действительно есть необходимость.

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

45. Конфликт DLL

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

Например:

  • d3d8.dll;

  • d3d9.dll;

  • ddraw.dll;

  • wrapper DLL;

  • модифицированная DLL;

  • DLL от другого compatibility layer.

Если не понимать, какая библиотека загружается первой, настройка становится случайной.

Поэтому при использовании wrappers всегда нужно проверять:

  • имя DLL;

  • разрядность;

  • каталог;

  • дату файла;

  • назначение;

  • какой API она перехватывает.

46. 32-bit и 64-bit

Большинство старых игр — 32-битные.

Поэтому для них необходимы 32-битные компоненты.

64-битная Windows сама по себе не означает, что 32-битная игра будет использовать 64-битную DLL.

Для старого приложения критично, чтобы подменяемая библиотека соответствовала разрядности процесса.

Если поставить DLL неправильной разрядности, игра может:

  • не запуститься;

  • сообщить об ошибке DLL;

  • закрыться сразу после запуска.

47. 2D-игры

Здесь необходимо сделать важное уточнение.

3D-Analyze не является универсальным инструментом для старых 2D-игр.

Если игра использует:

  • чистый DirectDraw;

  • программный 2D;

  • DOS;

  • старый GDI;

  • другой графический механизм,

большинство функций 3D-Analyze не принесёт пользы.

48. 2D + 3D

Однако многие игры имеют смешанную архитектуру.

Например:

меню → 2D

игровая сцена → Direct3D

видеоролик → другой механизм

В такой игре 3D-Analyze может влиять только на 3D-часть.

Поэтому ситуация:

«меню работает, а игра падает при загрузке уровня»

может быть совершенно нормальным признаком проблемы именно в 3D-части.

49. Практическая схема для 2D-игры

Если игра действительно 2D:

  1. Определить используемый API.

  2. Проверить DirectDraw/OpenGL/GDI.

  3. Не применять случайные Direct3D CAP-настройки.

  4. Проверить совместимость с Windows.

  5. Рассмотреть DxWnd или специализированный wrapper.

  6. Проверить частоту обновления и режим окна.

  7. Только после этого оценивать необходимость 3D-Analyze.

Если 3D-части нет, большая часть функций программы просто не будет иметь смысла.

50. Практическая схема для 3D-игры

Для полноценной 3D-игры алгоритм проще:

1. Определить API

2. Проверить запуск без 3D-Analyze

3. Определить ошибку

4. Проверить Hardware T&L

5. Проверить Shader requirements

6. Проверить текстуры

7. Проверить Z/Stencil

8. Проверить DeviceID/VendorID

9. Использовать специализированный Game Fix

10. Только после этого подключать дополнительные wrappers

51. Примеры готовых комбинаций

Ниже приведены не «универсальные пресеты», а типовые схемы поиска решения.


Комбинация №1 — игра требует HW T&L

Первый вариант

emulate HW TnL caps

Если игра после этого не работает

emulate HW TnL caps

  •  

force SW TnL

Проверяем

  • запускается ли игра;

  • не появились ли артефакты;

  • насколько упал FPS.

52. Комбинация №2 — игра требует Pixel Shader

Первый тест:

emulate pixel shader caps

Если игра выбирает неправильную версию:

force max pixel shader version 1.1

или:

force max pixel shader version 1.4

Всё зависит от конкретного требования игры.

53. Комбинация №3 — игра не работает с Pixel Shader 2.0

Проверяем:

skip pixel shader version 2.0

Если игра имеет альтернативный shader path, она может перейти на более простой вариант.

Если альтернативного пути нет, игра может перестать работать.

54. Комбинация №4 — проблема с DXT

Проверяем:

emulate DXT textures

Если игра начинает правильно загружать текстуры, проблема, вероятно, была связана с поддержкой формата.

После этого обязательно проверяем:

  • память;

  • скорость;

  • артефакты;

  • загрузку уровней.

55. Комбинация №5 — проблема с Cube Map

Проверяем:

emulate cube maps

Если проблема исчезла — проверяем качество отражений и других эффектов.

56. Комбинация №6 — проблемы с Z-Buffer

Последовательность:

force zbuffer

force wbuffer

16-bit Z

24-bit Z

варианты with stencil

Не включаем всё одновременно.

57. Комбинация №7 — игра требует определённую видеокарту

Сначала:

VendorID / DeviceID

Но только после проверки остальных возможностей.

Если проблема действительно связана с определением устройства:

VendorID + DeviceID

могут заставить игру выбрать другой render path.

58. Комбинация №8 — мерцание на Voodoo

Для соответствующей карты:

VOODOO flicker fix

Если проблема именно та, для которой предназначен fix, этого может быть достаточно.

Не нужно одновременно включать Anti-Detect, Z-Buffer и Pixel Shader.

59. Комбинация №9 — Kyro

Для проблем, связанных с:

  • HW T&L;

  • Z-Buffer;

  • Stencil;

могут использоваться:

emulate HW TnL caps

и при соответствующей проблеме:

KYRO zbuffer/stencil fix

Но это две разные задачи.

60. Комбинация №10 — Mafia и мерцание теней

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

Mafia shadow fix

Не следует дополнительно менять Z-Buffer, если он работает нормально.

61. Комбинация №11 — проблема производительности

Начинаем не с «ускоряющих» галочек, а с диагностики:

counters

  •  

performance logging

Затем:

disable textures

и:

force small texture

После этого анализируем результат.

Только когда причина понятна, выбирается реальное решение.

62. Как составлять собственный профиль

Для каждой игры желательно создать отдельный профиль.

Например:

Morrowind_3DA

или:

GameName_D3D

В нём фиксируем:

  • EXE;

  • используемый API;

  • видеокарту;

  • драйвер;

  • Windows;

  • разрешение;

  • выбранные параметры;

  • результат;

  • FPS;

  • известные проблемы.

63. Почему полезно записывать настройки

Через несколько дней легко забыть:

«Почему здесь включён emulate HW TnL caps

Если записать причину:

«Игра не запускалась без HW T&L»

конфигурация становится понятной.

Ещё лучше записывать:

Параметр

emulate HW TnL caps

Причина

игра блокировала запуск из-за отсутствия HW T&L

Результат

запускается

Побочный эффект

FPS ниже примерно на ...

Так постепенно формируется собственная база совместимости.

64. Как использовать Save batch file

После того как рабочая конфигурация найдена, можно сохранить BAT-файл.

Это удобно, если для игры используется отдельный профиль.

Например:

Game_3DA.bat

Теперь запуск выполняется через сохранённую конфигурацию.

Это особенно полезно для нескольких игр, каждая из которых требует собственного набора параметров.

65. Что делать после успешного запуска

Нельзя сразу считать работу законченной.

Нужно проверить:

Меню

Работает ли интерфейс?

Загрузка

Не зависает ли переход в игру?

Первая сцена

Есть ли текстуры?

Персонажи

Работает ли освещение?

Тени

Не появились ли артефакты?

Эффекты

Работают ли отражения, прозрачность и частицы?

Длительная игра

Не происходит ли постепенное падение производительности?

66. Почему длительный тест важен

Некоторые проблемы появляются только после длительной работы:

  • утечки памяти;

  • накопление ресурсов;

  • переполнение VRAM;

  • проблемы с текстурами;

  • нестабильность драйвера;

  • случайные вылеты.

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

67. Как искать причину вылета

Если игра падает:

Тест 1

Выключить все 3D-Analyze настройки.

Тест 2

Включить только одну необходимую функцию.

Тест 3

Запустить.

Тест 4

Включить:

debug logging

Тест 5

Сравнить результат.

Если падение появляется после конкретной настройки, причина становится значительно понятнее.

68. Что делать, если 3D-Analyze сама не помогает

Иногда проблема находится за пределами возможностей программы.

Например:

  • игра использует неподдерживаемый API;

  • необходим полноценный wrapper;

  • ошибка находится в Windows;

  • повреждены файлы игры;

  • драйвер работает неправильно;

  • проблема связана с защитой диска;

  • используется неподдерживаемая DLL;

  • игра требует старую версию DirectX runtime.

В таких случаях 3D-Analyze не должна быть единственным инструментом.

69. Когда нужен dgVoodoo

сли проблема заключается в старом графическом API и необходимо перенести его работу на современную графическую систему, имеет смысл рассматривать dgVoodoo.

Схема уже другая:

старое приложение → старый API → wrapper → современный API → современный GPU

Это особенно полезно для старых:

  • DirectDraw;

  • Direct3D;

  • Glide;

приложений.

3D-Analyze при этом может оказаться ненужной.

70. Когда нужен DxWnd

DxWnd полезнее, когда основная проблема связана с:

  • fullscreen;

  • оконным режимом;

  • разрешением;

  • масштабированием;

  • таймингами;

  • поведением старого Windows-приложения.

Если игра отлично рендерит изображение, но неправильно работает в современном оконном менеджере, сначала логичнее искать решение в этом направлении.

71. Когда не нужно использовать ничего

Это тоже важное правило.

Если игра:

  • запускается;

  • нормально отображается;

  • работает стабильно;

  • имеет приемлемый FPS;

то 3D-Analyze не нужна.

Не следует изменять работающую систему без причины.

72. Универсальная таблица диагностики

ПроблемаПервый тестСледующий шаг
Требуется HW T&Lemulate HW TnL capsforce SW TnL
Неправильный Pixel Shaderemulate pixel shader capsограничение/пропуск версии
PS 2.0 вызывает ошибкуskip pixel shader version 2.0проверить альтернативный shader path
Нет DXT-текстурemulate DXT texturesпроверить память и артефакты
Проблемы Cube Mapemulate cube mapsпроверить отражения
Проблемы глубиныforce zbufferZ/W-Buffer и глубина
Проблемы Stencilвариант with stencildisable two sided stencil
Низкий FPScountersдиагностические тесты
Проблемы текстурdisable texturesforce small texture
Проблемы fullscreenforce windowed modeпроверить частоту
Мерцание VoodooVOODOO flicker fixпроверить драйвер
Kyro Z/StencilKYRO zbuffer/stencil fixпроверить формат буфера
Mafia shadowsMafia shadow fixпроверить драйвер
Игра неправильно определяет GPUVendorID/DeviceIDтолько после проверки реальных capabilities
Неизвестный вылетdebug loggingанализ журнала

73. Универсальная формула для Direct3D

Для большинства старых 3D-игр можно использовать такую схему:

Проблема запуска

→ проверить HW T&L

→ проверить Pixel Shader

→ проверить CAP bits

→ проверить текстурные форматы

→ проверить Z/Stencil

→ проверить DeviceID

→ применить Game Fix.

74. Универсальная формула для производительности

Низкий FPS

→ counters

→ определить геометрическую нагрузку

→ проверить T&L

→ disable textures

→ force small texture

→ проверить shader load

→ проверить VRAM

→ сравнить CPU/GPU нагрузку.

Не следует начинать с случайного отключения графических функций.

75. Универсальная формула для артефактов

Артефакты

→ текстуры?

→ шейдеры?

→ Z-Buffer?

→ Stencil?

→ освещение?

→ Cube Map?

→ формат текстур?

→ драйвер?

→ wrapper?

Только после определения конкретной категории выбирается соответствующая функция.

76. Универсальная формула для вылетов

Вылет

→ отключить все настройки

→ воспроизвести

→ включить одну функцию

→ воспроизвести

→ включить debug logging

→ сравнить

→ исключить конфликт DLL

→ проверить wrapper

→ проверить разрядность DLL.

77. Самое важное правило совместимости

Если одновременно используются несколько инструментов, каждый из них должен иметь свою конкретную задачу.

Например:

DxWnd

управляет оконным режимом.

3D-Analyze

изменяет Direct3D capabilities.

dgVoodoo

переводит старый графический API на другой backend.

Это намного правильнее, чем использовать три программы только потому, что «так советуют для старой игры».

78. Практический порядок при сложной конфигурации

Если игра требует сразу несколько исправлений:

Сначала

чистая игра.

Затем

одна функция 3D-Analyze.

Затем

проверка.

Затем

следующая функция.

После получения стабильной конфигурации

добавляется wrapper, если он действительно нужен.

После каждого изменения

повторяется полный тест.

Это медленнее, чем включить всё сразу, но зато позволяет получить понятную и воспроизводимую конфигурацию.

79. Что считать рабочей конфигурацией

Конфигурация считается рабочей, если:

  • игра запускается;

  • проходит меню;

  • загружается игровой уровень;

  • основные эффекты работают;

  • нет постоянных артефактов;

  • нет случайных вылетов;

  • производительность приемлема;

  • конфигурация воспроизводится после повторного запуска.

Просто факт запуска EXE недостаточен.

80. Финальная методика

Для любой неизвестной игры можно использовать следующий алгоритм:

1. Запустить без 3D-Analyze.

2. Записать ошибку или визуальную проблему.

3. Определить API.

4. Определить требования игры.

5. Найти соответствующий параметр.

6. Включить только его.

7. Проверить запуск.

8. Проверить полноценную 3D-сцену.

9. Проверить изображение.

10. Проверить FPS.

11. При необходимости включить диагностику.

12. При необходимости добавить вторую настройку.

13. Проверить конфликт DLL.

14. Только после получения стабильной конфигурации сохранить её в BAT/профиль.

81. Итог части 3

Практическая работа с 3D-Analyze сводится не к поиску «волшебной галочки».

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

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

Если не хватает HW T&L — работаем с T&L.

Если проблема в shader path — работаем с Pixel Shader.

Если проблема в текстурах — проверяем форматы и текстурную нагрузку.

Если проблема в глубине — исследуем Z-Buffer и Stencil.

Если игра неправильно определяет видеокарту — рассматриваем VendorID/DeviceID.

Если проблема относится к конкретному старому GPU — используем соответствующий Game/Demo Fix.

Если проблема находится в старом API, а не в capability, рассматриваем wrapper.

Если проблема относится к fullscreen или оконному режиму, рассматриваем DxWnd.

Главное правило остаётся неизменным:

одна проблема — одна гипотеза — минимальное изменение — проверка результата.

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

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

Приложение

Полная таблица функций 3D-Analyze v2.36b

Ниже — справочная таблица по всем основным пунктам, присутствующим в интерфейсе 3D-Analyze v2.36b. Она рассчитана как практический справочник: что делает параметр, в какой ситуации его проверять и какой результат можно ожидать.

Важно: большинство функций 3D-Analyze — это не «улучшатели графики», а средства эмуляции, подмены возможностей видеокарты и обхода проблем совместимости. Поэтому включать их без причины не следует.

1. DirectX — Performance

ПунктНазначениеКогда включатьЧем помогает / возможный эффект
disable texturesОтключает использование текстур при рендерингеДля диагностики проблем с текстурами или загрузкой ресурсовПозволяет определить, связана ли ошибка с текстурами. Картинка становится неполной
disable renderingОтключает непосредственный вывод 3D-графикиДля диагностики производительности и определения причины зависания/перегрузкиЕсли FPS резко возрастает, основная нагрузка связана с рендерингом
force SW TnLПринудительно переводит Transform & Lighting на программную обработкуЕсли игре требуется HW T&L или аппаратная реализация работает неправильноМожет позволить запустить старую игру на неподходящей видеокарте. Увеличивает нагрузку на CPU
disable state switchesОграничивает/подавляет переключения состояний Direct3DПри проблемах, вызванных частыми сменами графических состоянийИногда устраняет артефакты или зависания. Может изменить визуальный результат
performance loggingВключает запись информации о производительностиПри исследовании падения FPS и поведения рендераДаёт диагностические данные, но само по себе не ускоряет игру
countersВключает счётчики работы графического APIДля анализа нагрузки и поиска узкого местаПомогает понять, насколько интенсивно игра использует различные операции
force small texture (32×32)Ограничивает размер используемых текстур до 32×32При подозрении на проблемы с большими текстурами или памятьюМожет уменьшить нагрузку и расход памяти, но резко ухудшает качество изображения
force zbufferПринудительно требует использование Z-BufferПри проблемах с глубиной сценыМожет исправить неправильное отображение перекрывающихся объектов
force wbufferПринудительно использует W-BufferДля старых игр, рассчитанных на W-BufferМожет исправить ошибки глубины, но на современных системах часто не нужен
disable lightingОтключает аппаратное освещениеЕсли освещение вызывает артефакты или паденияПомогает установить, связано ли нарушение изображения с lighting pipeline
disable two sided stencilОтключает поддержку двустороннего StencilПри проблемах с тенями, масками и некоторыми эффектамиМожет устранить артефакты на старых видеокартах
force anisotropic filteringПринудительно включает анизотропную фильтрациюЕсли игра неправильно определяет/не использует фильтрациюУлучшает чёткость наклонных поверхностей, но может увеличить нагрузку
force windowed modeПринудительно запускает игру в оконном режимеПри чёрном экране, зависании или проблемах fullscreenПозволяет проверить, связана ли ошибка с полноэкранным режимом

2. DirectX — Pixel and Vertex Shader

ПунктНазначениеКогда включатьЧем помогает
force max pixel shader version 1.1Ограничивает максимальную версию Pixel Shader до 1.1Если игра неправильно работает с более новыми shader pathЗаставляет движок использовать более простой вариант
force max pixel shader version 1.4Ограничивает максимальную версию Pixel Shader до 1.4При проблемах с PS 2.x и вышеМожет перевести игру на более старый shader path
skip pixel shader version 1.1Запрещает использование PS 1.1Если конкретная реализация PS 1.1 вызывает сбойИгра пытается выбрать другой доступный путь
skip pixel shader version 1.4Запрещает PS 1.4При ошибках именно в PS 1.4Позволяет проверить альтернативную реализацию
skip pixel shader version 2.0Запрещает PS 2.0Если игра падает при использовании PS 2.0Может заставить игру перейти на более простой режим
force low precision pixel shaderПринудительно использует низкую точность вычислений Pixel ShaderПри проблемах совместимости с shader precisionИногда позволяет старому GPU выполнить shader
force high precision pixel shaderПринудительно использует высокую точностьЕсли низкая точность вызывает визуальные ошибкиМожет улучшить корректность вычислений, но увеличить нагрузку
save shaders to file (shaders.out)Сохраняет перехваченные shader-программыПри глубокой диагностике shader-проблемПозволяет исследовать, какие shader-программы использует игра

Важное правило

Не следует одновременно включать:

  • несколько ограничений force max pixel shader;
  • несколько skip pixel shader;
  • противоположные варианты precision.

Сначала определяется конкретная проблема, затем выбирается одна соответствующая операция.

3. DirectX — Hardware Limits (cap bits)

Это одна из наиболее важных групп 3D-Analyze.

Здесь программа пытается изменить то, какие возможности видеокарты видит игра.

ПунктНазначениеКогда включатьЧем помогает
emulate HW TnL capsЭмулирует наличие возможностей Hardware Transform & LightingЕсли игра отказывается работать из-за отсутствия HW T&LМожет пройти проверку совместимости
emulate other DX8.1 capsЭмулирует дополнительные возможности, связанные с DirectX 8.1Если игра проверяет DX8.1 capabilities и неправильно определяет современное/старое устройствоПозволяет обойти некоторые проверки capabilities
emulate pixel shader capsИзменяет сообщаемые игре возможности Pixel ShaderЕсли игра неправильно определяет поддержку Pixel ShaderМожет заставить игру выбрать совместимый shader path
emulate bump map capsЭмулирует возможности bump mappingЕсли игра требует bump mapping, которого она не видитПозволяет пройти проверку возможностей bump mapping
emulate max sim. texturesЭмулирует необходимое количество одновременно используемых текстурЕсли игра проверяет число одновременных texture stagesМожет устранить отказ запуска из-за ограничения количества текстур

Главное отличие

Эти параметры не обязательно создают настоящую аппаратную возможность.

Например:

emulate HW TnL caps

может убедить игру, что HW T&L существует.

Но если реальная обработка невозможна, одной этой галочки недостаточно.

В таком случае может потребоваться:

emulate HW TnL caps + force SW TnL

4. DirectX — Hardware Limits (features)

ПунктНазначениеКогда включатьЧем помогает
emulate cube mapsЭмулирует поддержку Cube MappingЕсли игра требует Cube Maps, а оборудование/драйвер работает с ними неправильноМожет восстановить отражения и связанные эффекты
emulate DXT texturesЭмулирует поддержку DXT-сжатых текстурПри отсутствии или неправильной работе DXTПозволяет игре использовать DXT-текстуры другим способом
KYRO zbuffer/stencil fixИсправление специфических проблем Z-Buffer/Stencil на KyroДля соответствующих карт и игрМожет устранить ошибки глубины и Stencil
VOODOO flicker fixИсправление определённых проблем мерцания на VoodooПри характерном мерцании изображения на совместимом оборудованииУстраняет специфические артефакты

Здесь особенно важно

KYRO zbuffer/stencil fix и VOODOO flicker fix — специализированные исправления.

Их не нужно включать наугад на любой видеокарте.

5. Game / Demo Fixes

Эти пункты отличаются от обычной эмуляции capabilities. Они предназначены для конкретных игр или демонстрационных программ.

ПунктНазначениеКогда включатьЧем помогает
NOLF2 texture/bit fixИсправляет определённую проблему с текстурами/разрядностью в No One Lives Forever 2Только при соответствующей проблеме в NOLF2Может устранить неправильное отображение текстур
Gun Metal Demo fixСпециальное исправление для демоверсии Gun MetalПри проблемах с указанной demo-версиейОбходит известную особенность её графического кода
Mafia shadow fixИсправляет проблему с тенями в MafiaПри соответствующем дефекте тенейВосстанавливает корректное отображение теней
LOTR texture fixИсправление текстур для соответствующей игры Lord of the RingsПри проблемах с текстурамиПозволяет обойти известный способ обработки текстур
Matrox Reef Demo fixИсправление для Matrox Reef DemoТолько для соответствующей demoОбходит специфическую проблему демо
Spider-Man fixСпециализированное исправление для Spider-ManПри соответствующей проблеме игрыМеняет проблемный путь рендеринга
Ruby benchmark — NV4xИсправление/совместимость для Ruby Benchmark на GPU семейства NVIDIA NV4xПри тестировании соответствующей демо/benchmarkПозволяет корректнее запустить старый benchmark
Ruby benchmark — R42xИсправление/совместимость для Ruby Benchmark на соответствующем ATI/AMD GPU семейства R4xxДля соответствующей конфигурацииОбходит специфическую несовместимость benchmark

Правило Game Fix

Если название пункта не относится к вашей игре — его не включают.

6. OpenGL — Performance

ПунктНазначениеКогда включатьЧем помогает
performance loggingЗаписывает диагностическую информацию о производительности OpenGLПри исследовании FPS и нагрузкиПозволяет анализировать работу OpenGL-пути
countersВключает счётчики OpenGL-операцийДля диагностики производительностиПомогает определить характер нагрузки
force small texture (32×32)Принудительно уменьшает размер текстурДля диагностики текстурной нагрузкиМожет уменьшить использование памяти, но портит качество
disable texturesОтключает текстурыДля проверки, связана ли проблема с текстурированиемПозволяет быстро локализовать текстурную проблему
disable renderingОтключает рендерингДля диагностического сравнения производительностиПоказывает, насколько сильно сцена нагружает графический путь
force anisotropic filteringПринудительно включает анизотропную фильтрациюЕсли игра неправильно работает с фильтрациейУлучшает качество дальних/наклонных поверхностей

Важное отличие

Эти параметры относятся именно к OpenGL-пути.

Если игра использует Direct3D, соответствующие DirectX-настройки являются более релевантными.

7. Fragment and Vertex Programs

ПунктНазначениеКогда включатьЧем помогает
save programs to file (shaders.out)Сохраняет используемые OpenGL fragment/vertex programsПри исследовании shader-проблемПозволяет определить, какие программы передаются драйверу

Этот параметр особенно полезен при разработке собственного решения совместимости или исследовании старой игры.

Для обычного пользователя включать его постоянно нет необходимости.

8. Misc

force wireframe mode

НазначениеКогда включатьЧем помогает
Переводит отображение геометрии в каркасный режимДля исследования геометрии и рендерингаПозволяет увидеть полигоны без обычного заполнения

Использование

Особенно полезно для:

  • поиска повреждённой геометрии;
  • оценки сложности сцены;
  • исследования старого движка;
  • диагностики проблем с полигонами.
НазначениеКогда включатьЧем помогает
Записывает отладочную информацию в log.outПри вылетах, ошибках и неизвестном поведенииПомогает установить, на каком этапе возникает проблема

Это один из наиболее полезных инструментов при сложной диагностике.

Рекомендуемый порядок

  1. Запустить игру без 3D-Analyze.
  2. Воспроизвести ошибку.
  3. Включить debug logging.
  4. Повторить ошибку.
  5. Проанализировать log.out.
  6. Затем тестировать конкретные функции.

9. Countdown for disable rendering / disable state switches

В нижней части интерфейса имеется числовое поле, связанное с диагностическими режимами:

countdown for disable rendering / disable state switches

НазначениеКогда использоватьЧем помогает
Задаёт задержку/счётчик перед применением соответствующего диагностического режимаПри исследовании поведения игры во время запуска или создания сценыПозволяет применять отключение не сразу, а после определённого количества операций

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

Для стандартного запуска игры его лучше не менять.

10. Remove Stuttering

В интерфейсе находятся два режима:

  • quality mode
  • performance mode

Они предназначены для экспериментов с устранением рывков и микрофризов.

РежимНазначениеКогда пробоватьВозможный результат
quality modeРежим устранения stuttering с приоритетом качества/корректностиЕсли игра дёргается, но обычный FPS нормальныйМожет сделать вывод изображения более стабильным
performance modeРежим с приоритетом производительностиЕсли важнее плавность и минимизация задержекМожет уменьшить рывки, но поведение зависит от игры

Важно

Stuttering ≠ низкий FPS.

Игра может показывать 60 FPS и при этом ощущаться дёрганой.

Поэтому эти параметры следует тестировать отдельно от обычных средств ускорения.

11. Color MipMap

В интерфейсе доступны:

  • method 1
  • method 2
ПунктНазначениеКогда включатьЧем помогает
method 1Использует первый вариант диагностики/обработки MipmapПри проблемах с MipmapПомогает проверить источник артефактов
method 2Использует второй вариант обработки MipmapЕсли первый метод не помогаетПозволяет сравнить альтернативный путь

Что такое Mipmap

Mipmap — это набор уменьшенных копий текстуры.

Например:

1024×1024

512×512

256×256

128×128

64×64

32×32

При удалении объекта игра может использовать меньшую копию.

Если Mipmap работает неправильно, текстуры могут:

  • мерцать;
  • становиться слишком резкими;
  • выглядеть размытыми;
  • менять качество на расстоянии.

12. Z-Buffer

В нижней части программы находятся четыре варианта.

ПунктНазначениеКогда включатьЧем помогает
force 16 bit zbuffer (without stencil)Принудительный 16-битный Z-Buffer без StencilЕсли игра рассчитана на такой форматМожет решить несовместимость формата глубины
force 16 bit zbuffer (with stencil)16-битный Z-Buffer с StencilЕсли одновременно требуется StencilМожет восстановить тени/маски
force 24 bit zbuffer (without stencil)Принудительный 24-битный Z-Buffer без StencilПри проблемах с точностью глубиныДаёт более высокую точность
force 24 bit zbuffer (with stencil)24-битный Z-Buffer со StencilДля игр, которым нужны глубина + StencilМожет исправить проблемы с тенями и другими эффектами

13. Как выбирать Z-Buffer

Не нужно выбирать вариант случайно.

Используем такую последовательность:

Вариант 1

16 bit without stencil

если проблема сохраняется

Вариант 2

16 bit with stencil

если проблема сохраняется

Вариант 3

24 bit without stencil

если игре нужны Stencil-эффекты

Вариант 4

24 bit with stencil

В нижней части программы находятся четыре варианта.

ПунктНазначениеКогда включатьЧем помогает
force 16 bit zbuffer (without stencil)Принудительный 16-битный Z-Buffer без StencilЕсли игра рассчитана на такой форматМожет решить несовместимость формата глубины
force 16 bit zbuffer (with stencil)16-битный Z-Buffer с StencilЕсли одновременно требуется StencilМожет восстановить тени/маски
force 24 bit zbuffer (without stencil)Принудительный 24-битный Z-Buffer без StencilПри проблемах с точностью глубиныДаёт более высокую точность
force 24 bit zbuffer (with stencil)24-битный Z-Buffer со StencilДля игр, которым нужны глубина + StencilМожет исправить проблемы с тенями и другими эффектами

14. Anti-Detect Mode

В интерфейсе:

  • shaders
  • textures

Это специальный режим, предназначенный для изменения того, как определённые графические данные выглядят для приложения/драйвера.

ПунктНазначениеКогда включатьЧем помогает
shadersПрименяет Anti-Detect к shader-программамПри подозрении, что конкретный shader/его содержимое вызывает несовместимостьМожет обходить специфические проверки или проблемы
texturesПрименяет Anti-Detect к текстурным даннымПри специфических проблемах, связанных с распознаванием текстурМожет обходить отдельные проверки/ошибки

Важное предупреждение

Anti-Detect — не обычная настройка совместимости.

Её следует использовать только после того, как обычные способы диагностики уже проверены.

15. DirectX Device IDs

В нижней части окна присутствуют поля:

  • VendorID
  • DeviceID

Они позволяют задавать идентификатор производителя и устройства.

Также программа показывает примеры идентификаторов для известных видеокарт.

ПараметрНазначениеКогда использоватьРезультат
VendorIDИдентификатор производителя GPUЕсли игра неправильно выбирает графический режим по производителюИгра может выбрать другой vendor-specific путь
DeviceIDИдентификатор конкретного GPUЕсли игра проверяет модель видеокартыМожет заставить игру выбрать другой hardware profile

16. VendorID и DeviceID — важное различие

VendorID отвечает прежде всего на вопрос:

«К какому производителю относится устройство?»

DeviceID:

«Какая конкретно модель/семейство устройства определяется?»

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

Но это не добавляет реального железа.

Если игра после подмены начинает использовать функцию, которой GPU физически не обладает, возможны:

  • чёрный экран;
  • артефакты;
  • вылет;
  • зависание.

17. SELECT

ПунктНазначение
SELECTВыбор EXE-файла игры или приложения

Через него указывается исполняемый файл, который должен запускаться через 3D-Analyze.

Обычно выбирается главный:

game.exe

18. RUN

ПунктНазначение
RUNЗапускает выбранное приложение с установленными параметрами 3D-Analyze

Это основной способ проверить текущую конфигурацию.

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

19. Save batch file

ПунктНазначениеКогда использовать
Save batch file!Сохраняет команду/конфигурацию запуска в BAT-файлПосле получения рабочей конфигурации

Это особенно удобно, если для разных игр используются разные настройки.

20. Сводная таблица по типу проблемы

ПроблемаЧто проверять в первую очередь
Игра требует HW T&Lemulate HW TnL caps
HW T&L отсутствует физическиemulate HW TnL caps + force SW TnL
Неправильно определяется Pixel Shaderemulate pixel shader caps
Игра ломается на PS 2.0skip pixel shader version 2.0
Нужен старый shader pathforce max pixel shader version 1.1/1.4
Проблемы с текстурамиdisable textures
Проблемы с большими текстурамиforce small texture
DXT работает неправильноemulate DXT textures
Нет Cube Mappingemulate cube maps
Проблемы с глубинойforce zbuffer / Z-Buffer settings
Проблемы с тенямиZ-Buffer + Stencil
Мерцание VoodooVOODOO flicker fix
Проблемы KyroKYRO zbuffer/stencil fix
Проблемы Mafia с тенямиMafia shadow fix
Проблемы fullscreenforce windowed mode
Неизвестный вылетdebug logging
Нужно изучить shaderssave shaders to file
Нужно изучить OpenGL programssave programs to file
Непонятный FPScounters + performance logging
Проблемы геометрииforce wireframe mode
МикрофризыRemove Stuttering
Игра неправильно определяет GPUVendorID / DeviceID
Проблемы с конкретной игройсоответствующий Game/Demo Fix

21. Что включать в первую очередь, а что оставить на крайний случай

Первая группа — диагностика

Использовать чаще всего:

  • counters;
  • performance logging;
  • debug logging;
  • disable textures;
  • force small texture;
  • force wireframe mode;
  • save shaders to file.

Они помогают понять проблему, не пытаясь сразу её маскировать.


Вторая группа — совместимость

Использовать после определения причины:

  • emulate HW TnL caps;
  • emulate pixel shader caps;
  • emulate other DX8.1 caps;
  • emulate bump map caps;
  • emulate max sim. textures;
  • emulate cube maps;
  • emulate DXT textures;
  • Z-Buffer settings.

Третья группа — специальные исправления

Использовать только для соответствующих случаев:

  • Mafia shadow fix;
  • VOODOO flicker fix;
  • KYRO zbuffer/stencil fix;
  • NOLF2 texture/bit fix;
  • Gun Metal Demo fix;
  • LOTR texture fix;
  • Matrox Reef Demo fix;
  • Spider-Man fix;
  • Ruby Benchmark fixes.

Четвёртая группа — крайние меры

Использовать только после диагностики:

  • VendorID;
  • DeviceID;
  • Anti-Detect;
  • force SW TnL;
  • shader ограничения;
  • различные принудительные Z/W-Buffer режимы.

22. Краткая формула выбора функции

Можно пользоваться следующим правилом:

Не запускается

→ capabilities
→ T&L
→ Pixel Shader
→ VendorID/DeviceID

Запускается, но неправильная картинка

→ textures
→ shaders
→ Z-Buffer
→ Stencil
→ lighting
→ Cube Maps

Тормозит

→ counters
→ performance logging
→ textures
→ T&L
→ rendering

Мерцает

→ Z-Buffer
→ Stencil
→ Mipmap
→ специализированный Game Fix

Вылетает

→ debug logging
→ определить момент вылета
→ одна функция за раз
→ проверить DLL/wrapper

Чёрный экран

→ windowed mode
→ Z-Buffer
→ shader path
→ wrapper/API
→ драйвер

23. Самое важное при работе со всей таблицей

Все пункты 3D-Analyze можно условно разделить на четыре типа:

1. Диагностические

Показывают, где находится проблема.

2. Эмуляционные

Создают для игры видимость отсутствующей возможности.

3. Принудительные

Заставляют Direct3D использовать конкретный режим.

4. Специализированные

Исправляют конкретную игру, видеокарту или известный дефект.

Поэтому одинаково относиться ко всем галочкам нельзя.

Например:

counters

— инструмент диагностики.

emulate HW TnL caps

— инструмент совместимости.

force SW TnL

— принудительный режим обработки.

Mafia shadow fix

— специализированный исправляющий профиль.

Именно это различие является ключом к правильному использованию 3D-Analyze.


Итоговая шпаргалка

Сначала диагностируем. Потом определяем причину. Затем включаем одну соответствующую функцию. После проверки сохраняем рабочую конфигурацию.

Если включить все пункты одновременно, программа перестаёт быть инструментом диагностики: невозможно определить, какая именно настройка помогла или вызвала новую ошибку.