dd_action('wp_footer', function() { ?>
Практические инструкции: что делать, если что-то сломалось дома. Только причины и реальные решения.
3D-Analyze — утилита для Windows, созданная для работы со старыми графическими приложениями через Direct3D и OpenGL.
Программа появилась в период, когда видеокарты сильно отличались по набору поддерживаемых функций. Одна игра могла требовать Hardware T&L, другая — определённую версию Pixel Shader, третья — конкретный формат текстур или тип Z-Buffer. Если видеокарта не сообщала о наличии нужной функции, игра могла отказаться запускаться, даже если часть требуемых операций можно было выполнить другим способом.
3D-Analyze позволяет вмешиваться в этот процесс. Она изменяет отдельные параметры и сведения о возможностях графического устройства, которые получает приложение. Благодаря этому некоторые старые игры и тесты можно запустить на оборудовании, которое программа изначально считала неподходящим. В документации 3D-Analyze это описывается как изменение Direct3D CAP-битов и других графических параметров.
При этом 3D-Analyze нельзя считать универсальным эмулятором видеокарты.
Это важное отличие.
Если программа сообщает игре, что у видеокарты есть определённая возможность, это ещё не означает, что соответствующая функция появилась в самом GPU. В некоторых случаях 3D-Analyze может изменить способ обработки операции, но многие аппаратные
Основная задача 3D-Analyze — обойти ограничения старых графических приложений и помочь им работать с несовместимым или нестандартным оборудованием.
Наиболее известный пример — Hardware T&L.
Hardware Transform & Lighting выполнял часть обработки геометрии непосредственно на видеокарте. Некоторые игры проверяли наличие этой возможности при запуске. Если её не было, игра могла завершиться ещё до появления главного меню.
3D-Analyze могла изменить соответствующие сведения, чтобы приложение выбрало подходящий режим работы. В некоторых случаях обработка передавалась программному T&L, то есть выполнялась процессором. Поэтому игра могла запуститься, но это не означало, что старая видеокарта внезапно получила производительность современного GPU.
Та же идея используется и для других функций:
изменения заявленных возможностей видеокарты;
ограничения некоторых возможностей;
изменения работы с текстурами;
работы с Z-Buffer и Stencil;
изменения параметров Pixel Shader;
диагностики производительности;
записи информации о работе графического API;
поиска причин графических ошибок.
Упрощённо обычная схема запуска игры выглядит так:
Игра → Direct3D/OpenGL → драйвер видеокарты → GPU
При использовании 3D-Analyze программа вмешивается между приложением и графической подсистемой:
Игра → 3D-Analyze → Direct3D/OpenGL → драйвер → GPU
Поэтому её настройки влияют не на саму видеокарту, а на взаимодействие приложения с графическим API.
В зависимости от выбранной функции программа может:
изменить сведения о возможностях устройства;
изменить некоторые параметры графического API;
отключить определённую операцию;
заставить приложение использовать другой путь обработки;
заменить отдельный механизм другим способом;
перехватывать и записывать информацию для диагностики.
Именно поэтому результат зависит не только от видеокарты, но и от конкретной игры, её версии, используемого API и драйвера.
Это один из главных моментов, который необходимо понимать до начала работы.
3D-Analyze не превращает одну видеокарту в другую.
Например, если GPU физически не имеет Pixel Shader определённой версии, простое включение соответствующей опции не создаёт полноценный аппаратный Pixel Shader.
В оригинальной документации программы прямо указано, что 3D-Analyze не выполняет программную эмуляцию Pixel Shader и Vertex Shader. Отдельное исключение — Cube Mapping, для которого программа могла использовать обычную 2D-текстуру вместо исходного механизма.
Поэтому нужно различать две совершенно разные задачи:
Изменить проверку возможности
и
реально выполнить отсутствующую аппаратную функцию.
Первая задача для 3D-Analyze является обычной. Вторая во многих случаях ей недоступна.
Старые игры часто сначала определяли возможности видеокарты, а уже затем выбирали подходящий графический режим.
Условно процесс мог выглядеть так:
Игра получает список возможностей GPU.
Проверяет необходимые CAP-биты.
Определяет поддерживаемые версии шейдеров.
Проверяет форматы текстур и буферов.
Выбирает графический режим.
Создаёт необходимые Direct3D-объекты.
Запускает рендеринг.
Если ошибка возникает на первом этапе, реальная проблема может заключаться только в проверке.
Например:
«HW T&L отсутствует — запуск запрещён».
Если заставить игру увидеть необходимую возможность, она может перейти к следующему этапу и нормально запуститься.
Но это только начало.
После обхода проверки игра действительно попробует использовать эту функцию. Если оборудование не может нормально обработать соответствующие вызовы, могут появиться:
вылет;
чёрный экран;
неправильные текстуры;
артефакты;
проблемы с освещением;
низкая производительность.
Поэтому задача 3D-Analyze — не просто «обмануть игру», а подобрать такой режим работы, при котором приложение сможет пройти все необходимые этапы запуска и рендеринга.
Программа полезна не только для запуска игр.
В ней предусмотрены средства, позволяющие исследовать работу графического приложения.
Например, можно:
отключить текстуры;
отключить отрисовку;
включить каркасный режим;
собирать счётчики;
записывать производительность;
получать журналы работы;
сохранять данные о шейдерах;
проверять влияние отдельных графических операций.
Документация 3D-Analyze отдельно отмечает возможность создания подробных CSV-журналов с данными о FPS и других параметрах.
Это позволяет использовать программу не только по принципу:
«игра не запускается — поставим несколько галочек».
Гораздо полезнее применять её как диагностический инструмент:
изменили один параметр → запустили → посмотрели результат → определили причину → перешли к следующему параметру.
Такой подход особенно важен при работе со старыми играми.
Наибольший интерес программа представляет для игр и приложений эпохи:
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 и различные бенчмарки.
3D-Analyze получила известность прежде всего среди владельцев старых видеокарт, которым не хватало отдельных возможностей, требуемых играми.
Особенно часто речь шла о:
NVIDIA GeForce;
ATI Radeon;
3dfx Voodoo;
PowerVR Kyro;
других ранних Direct3D-ускорителях.
Для некоторых моделей проблема заключалась не в общей мощности, а в отсутствии конкретной функции.
Например, видеокарта могла достаточно быстро рисовать простую сцену, но игра отказывалась запускаться из-за отсутствия Hardware T&L.
Именно такие ситуации были одной из главных областей применения 3D-Analyze.
Автором 3D-Analyze является Thomas Bruckschlegel, а программа распространялась под названием ToMMTi-Systems.
Архивные страницы 3DCenter указывают Thomas Bruckschlegel как автора версии 2.36. Эта версия датирована 10 декабря 2004 года.
Проект развивался постепенно. Архив 3D-Analyze содержит большое количество промежуточных версий — от ранних выпусков 1.x до версий 2.x. Архивная база указывает начало разработки проекта примерно с 2002 года.
То есть 3D-Analyze не появилась сразу в виде большого окна с десятками параметров. Возможности добавлялись по мере появления новых задач и обнаружения проблем с конкретными видеокартами, играми и графическими тестами.
История развития хорошо показывает назначение программы.
В ранних версиях появились базовые функции для тестирования и изменения поведения Direct3D.
Затем добавлялись:
программный T&L;
дополнительные Hardware Limits;
диагностические журналы;
расширенные настройки шейдеров;
работа с различными ограничениями видеокарт;
исправления для отдельных игр;
функции для тестовых приложений;
дополнительные режимы работы с текстурами и буферами.
Например, в истории изменений зафиксировано появление emulate HW TnL, затем отдельного раздела Hardware Limits и отладочного журнала. Позже появились средства работы с Pixel/Vertex Shader 3.0 и изменения Anti-Detect Mode.
Это важный момент: интерфейс 3D-Analyze отражает не единую концепцию настроек, разработанную за один раз, а многолетнее накопление отдельных инструментов и исправлений.
Поэтому некоторые пункты сегодня выглядят необычно или предназначены только для конкретного поколения оборудования.
Версия 2.36 стала одним из последних крупных выпусков программы.
Она получила поддержку работы с Shader Model 3.0 в декомпиляторе шейдеров и изменения в механизме Anti-Detect Mode для шейдеров версии 2.0 и выше.
К этому моменту 3D-Analyze уже включала несколько совершенно разных групп функций:
производительность;
Direct3D capabilities;
аппаратные ограничения;
Pixel/Vertex Shader;
исправления конкретных игр;
OpenGL;
Z-Buffer;
диагностические режимы;
подмену идентификаторов устройства.
Поэтому окно программы выглядит сложнее, чем может показаться по размеру.
3D-Analyze v2.36b — финальная версия, с которой обычно связывают программу сегодня.
В этом выпуске были изменены два режима для Ruby Benchmark:
Ruby benchmark - NV4x;
Ruby benchmark - R42x.
Также была исправлена ошибка, связанная с заменой текстур в режиме Ruby Benchmark.
Сам проект после этого фактически перестал развиваться как современный инструмент.
Для нашего руководства это означает следующее:
2.36b — не современная программа для новых игр.
Её основная ценность сегодня — работа с историческим программным обеспечением и старым графическим оборудованием, а также изучение того, как работал графический стек Windows в эпоху DirectX 8/9.
Со временем изменилась сама структура PC-графики.
Появились новые поколения:
GPU;
DirectX;
Shader Model;
драйверов;
игровых движков.
Разработчики игр стали использовать другие методы определения возможностей оборудования.
Кроме того, современные видеокарты имеют гораздо более широкий набор функций и значительно меньше проблем, связанных с тем, что конкретный GPU просто не поддерживает базовую возможность, необходимую игре.
Поэтому ниша, для которой создавалась 3D-Analyze, постепенно исчезла.
Но для старых игр проблема никуда не делась.
Если сегодня запускать игру начала или середины 2000-х на нестандартной конфигурации, старый графический движок всё ещё может проверять возможности, которых современная система предоставляет иначе или которые конкретный wrapper не показывает игре.
Именно поэтому 3D-Analyze продолжает представлять интерес для энтузиастов ретро-игр и владельцев старого оборудования.
3D-Analyze не следует использовать как универсальную программу для повышения FPS.
У неё есть функции, способные увеличить скорость в конкретных ситуациях, но это не основная идея проекта.
Программа предназначена прежде всего для изменения поведения графического приложения.
Например:
Оптимизатор:
уменьшает качество изображения ради увеличения FPS.
3D-Analyze:
изменяет то, какие возможности видит приложение и какие графические операции оно использует.
Поэтому одна и та же настройка может:
помочь одной игре;
не изменить ничего в другой;
полностью сломать третью.
Это нормальное поведение для такого инструмента.
Не существует универсального набора галочек, который нужно включать для всех игр.
Каждая настройка должна иметь конкретную причину.
Например, если проблема связана с отсутствием Hardware T&L, нужно исследовать настройки T&L.
Если игра не поддерживает необходимый формат текстуры, нужно смотреть раздел текстур.
Если проблема возникает из-за Z-Buffer, бессмысленно начинать с Pixel Shader.
Если игра запускается, но неправильно отображает шейдеры, изменение VendorID может вообще не иметь отношения к проблеме.
Поэтому правильная работа с 3D-Analyze строится по схеме:
найти проблему → определить требуемую функцию → найти соответствующую настройку → изменить минимум параметров → проверить результат.
Чтобы уверенно пользоваться 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.
Если свести назначение программы к одной формуле:
3D-Analyze позволяет изменить условия, в которых старая игра работает с графическим API.
Она может заставить приложение:
увидеть определённую возможность;
не использовать определённую возможность;
выбрать другой режим;
работать с изменёнными параметрами;
использовать программную обработку там, где это предусмотрено;
обойти некоторые ограничения старого оборудования;
предоставить диагностическую информацию о работе приложения.
Но программа не может произвольно добавить в GPU отсутствующие физические вычислительные блоки.
Это различие будет основой всего дальнейшего руководства.
Интерфейс 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.
Когда включать
Какая проблема требует этой функции.
Когда не включать
В каких случаях она бесполезна или опасна.
Результат
Что пользователь должен увидеть после запуска.
Совместимость
С какими другими настройками её можно сочетать и какие сочетания могут конфликтовать.
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. Каждый параметр будет объяснён отдельно и простым языком.
Во второй части разберём интерфейс 3D-Analyze v2.36b пункт за пунктом.
Названия параметров оставлены на английском в точности так, как они указаны в программе. Объяснение даётся простым языком: что делает функция, что меняется при её включении, когда она нужна и какие проблемы может вызвать.
Главное правило этой части:
Не следует включать настройки просто потому, что они звучат полезно. Каждая функция предназначена для конкретной задачи.
После запуска 3D-Analyze пользователь видит несколько основных областей.
Здесь выбирается программа, которую будет запускать 3D-Analyze.
В поле отображается путь к исполняемому файлу, например:
C:\Games\OldGame\game.exe
Открывает окно выбора файла.
Здесь указывается основной .exe игры или другого приложения.
Запускает выбранное приложение с установленными параметрами 3D-Analyze.
Сначала выбирается EXE:
SELECT → игра.exe
После этого устанавливаются параметры.
И только затем нажимается:
RUN
Это соответствует исходной инструкции программы.
Это самая большая часть интерфейса.
Она предназначена для приложений, использующих Direct3D.
Здесь находятся четыре основных блока:
Performance
Pixel and Vertex Shader
Hardware Limits (cap bits)
Hardware Limits (features)
Game / Demo Fixes
Большая часть настроек 3D-Analyze находится именно здесь.
Раздел Performance содержит функции для изменения поведения рендеринга и диагностики производительности.
Важно понимать: не все параметры этого раздела предназначены для ускорения.
Многие из них являются тестовыми инструментами.
Полностью отключает использование текстур.
Игра продолжает создавать и обрабатывать 3D-сцену, но текстурирование отключается.
Вместо обычных текстурированных поверхностей пользователь получает объекты без привычного текстурного оформления.
Главное назначение — диагностика.
Можно сравнить производительность:
текстуры включены → FPS
и
текстуры отключены → FPS
Если после отключения текстур производительность сильно увеличивается, текстурная часть нагрузки заметно влияет на результат.
при поиске причины низкого FPS;
при тестировании старой видеокарты;
при сравнении нагрузки на GPU;
для проверки, связана ли проблема с текстурами.
Для обычной игры эта функция не нужна.
Она не исправляет отсутствующие текстуры и не повышает качество изображения.
Отключает фактическую отрисовку сцены.
Игра продолжает выполнять значительную часть своей логики и формировать команды для графического API, но операции рисования и смены отображаемого буфера подавляются.
Это позволяет отделить нагрузку приложения и процессора от нагрузки видеокарты.
Если игра с disable rendering выполняет сцену значительно быстрее, чем в обычном режиме, ограничение, вероятно, находится на стороне графического пути.
Это не обязательно означает, что виноват именно GPU. Причина может быть связана с передачей данных, драйвером, AGP или другими операциями графического конвейера.
Только для диагностики производительности.
Это не игровой режим.
Изображение нормально отображаться не будет.
Отключает переключения графических состояний.
Direct3D хранит множество состояний, определяющих, как будет выполняться последующая отрисовка:
освещение;
смешивание;
текстурирование;
Z-тест;
режимы фильтрации;
другие параметры рендеринга.
3D-Analyze подавляет соответствующие изменения состояний.
Это диагностическая функция.
Она особенно связана с тестированием disable rendering.
Для обычного запуска игры включать её не следует.
Изменение ожидаемых игрой состояний способно привести к неправильному изображению.
Записывает показатели производительности в файл.
Для DirectX используется:
PerfLog_DX.csv
Для OpenGL:
PerfLog_GL.csv
В журнал попадают различные показатели, включая:
FPS;
количество полигонов;
полигонов в секунду;
среднее количество полигонов на сцену;
другие доступные программе статистические данные.
Для DirectX 9 также доступны дополнительные показатели, связанные с overdraw и количеством обработанных пикселей.
Выбрать игру.
Включить performance logging.
Запустить игру через 3D-Analyze.
Выполнить необходимую сцену или тест.
Завершить игру.
Открыть созданный CSV-файл.
Логирование само создаёт небольшую дополнительную нагрузку.
Поэтому при точном сравнении FPS желательно не использовать одновременно лишние диагностические элементы.
Выводит показатели прямо во время работы приложения.
В DirectX 3D-Analyze поддерживает несколько счётчиков:
FPS;
количество полигонов за кадр;
количество полигонов в секунду;
использование видеопамяти;
эффективный overdraw после Z-теста;
количество фактически нарисованных пикселей после Z-теста.
Последние два показателя относятся к DirectX 9.
Это один из лучших инструментов для первичной диагностики.
Например:
низкий FPS + высокая нагрузка по полигонам
может указывать на геометрическую нагрузку.
низкий FPS + большое количество обработанных пикселей
может указывать на высокую нагрузку по заполнению.
резкий рост использования VRAM
может помочь обнаружить проблемы с размещением ресурсов в памяти.
Счётчик FPS сам по себе не объясняет причину тормозов.
Он только показывает результат.
Заменяет используемые приложением текстуры на очень маленькую текстуру размером 32×32 пикселя.
Это диагностический тест для оценки влияния текстурной нагрузки и памяти.
Если игра становится заметно быстрее после включения этой функции, стоит проверить:
объём видеопамяти;
загрузку текстур;
работу AGP;
размещение текстурных данных.
Это не обычная оптимизация качества.
Картинка будет выглядеть неправильно.
Функция предназначена для тестирования.
Пытается заставить приложение использовать Z-Buffer, даже если оно работает с W-Buffer.
Z-Buffer хранит информацию о глубине объектов.
Благодаря ему видеокарта понимает, какая поверхность должна быть видна, а какая находится за другой поверхностью.
Используется при проблемах совместимости, связанных с выбором типа буфера глубины.
Некоторые игры могут ожидать именно W-Buffer.
В таком случае принудительная замена может привести к артефактам или отказу от запуска.
Работает в противоположную сторону.
Пытается использовать W-Buffer вместо Z-Buffer.
Только если есть основания подозревать проблему с используемым способом хранения глубины.
Если игра нормально работает с обычным Z-Buffer.
Отключает стандартную обработку освещения DirectX.
Освещение объектов изменяется или исчезает.
Это диагностический инструмент.
Если после отключения освещения исчезают:
мерцание;
неправильные тени;
сильные артефакты;
проблемы со старыми драйверами,
можно предположить, что источник проблемы находится в соответствующем участке графического конвейера.
Не использовать без конкретной причины.
Отключает использование двухстороннего Stencil-режима и переводит обработку к более старому варианту, использовавшемуся в DirectX 8.
Stencil Buffer используется для маскирования отдельных областей изображения.
Он может применяться для:
теней;
отражений;
масок;
некоторых специальных эффектов.
В основном при проблемах совместимости со старым оборудованием.
Изменение Stencil может повлиять на тени и другие эффекты.
Принудительно включает максимально доступную для устройства анизотропную фильтрацию.
Она влияет на качество текстур, находящихся под большим углом к камере.
Например, поверхность пола или дороги вдаль может выглядеть более чёткой.
Программа не создаёт новую аппаратную возможность.
Она просит приложение использовать максимально доступный режим и меняет переходы между уровнями MIP-карт с билинейного на трилинейный вариант.
для экспериментов с качеством изображения;
при тестировании фильтрации;
в старых играх, где собственных настроек фильтрации недостаточно.
Если задача — добиться максимального FPS на слабом GPU.
Принудительно переводит приложение из полноэкранного режима в оконный.
игра зависает при переходе в fullscreen;
появляются проблемы с разрешением;
возникают артефакты при смене режима;
старое приложение конфликтует с современным рабочим столом;
нужно протестировать игру в окне.
Если в окне игра работает, а в полноэкранном режиме нет, это важная подсказка.
Проблему можно искать в:
переключении видеорежима;
частоте обновления;
драйвере;
совместимости fullscreen-режима.
Этот раздел относится к программируемым частям графического конвейера.
Обрабатывает данные, связанные с отдельными пикселями или фрагментами изображения.
Обрабатывает вершины 3D-модели.
В старых играх разные видеокарты поддерживали разные версии этих механизмов.
Поэтому игра могла проверять:
«Поддерживает ли видеокарта Pixel Shader 1.4?»
И в зависимости от ответа выбирать определённый графический путь.
Ограничивает доступную приложению версию Pixel Shader уровнем 1.1.
Видеокарта должна действительно поддерживать необходимую версию.
Это не полноценная эмуляция Pixel Shader 1.1. Параметр изменяет выбор версии на поддерживаемом устройстве.
Если игра неправильно работает с более новой версией Pixel Shader и необходимо заставить её выбрать более старый путь.
Работает аналогично предыдущему параметру, но ограничивает максимальную версию Pixel Shader до 1.4.
старая игра неправильно выбирает более новую версию;
необходимо проверить работу старого shader path;
требуется исключить использование более новой версии.
Это не способ добавить Pixel Shader 1.4 видеокарте, которая его физически не поддерживает.
Запрещает использование Pixel Shader 1.1.
Если конкретная версия шейдера вызывает ошибку или драйвер неправильно обрабатывает её.
Игра получает возможность перейти к другому доступному варианту.
Работает аналогично, но отключает путь через Pixel Shader 1.4.
Только при наличии конкретной проблемы с этим shader path.
Запрещает использование Pixel Shader 2.0.
Например, когда старый драйвер или нестандартное устройство неправильно обрабатывает конкретный PS 2.0-код.
Игра может попробовать использовать более простой графический путь.
Если другого подходящего пути нет, игра может перестать работать.
Преобразует Pixel Shader версии 2.0 и выше, чтобы использовать режим partial precision, когда это возможно.
Часть вычислений выполняется с меньшей точностью.
Это может уменьшить вычислительную нагрузку на некоторых старых GPU.
Изображение может немного измениться:
цветовые переходы;
освещение;
эффекты;
точность вычислений.
Только как эксперимент с производительностью или совместимостью.
Работает в противоположную сторону.
Pixel Shader, использующий partial precision, переводится в режим полной точности.
Повышается точность вычислений, но потенциально возрастает нагрузка.
Если:
появляются ошибки в вычислениях;
эффекты выглядят неправильно;
драйвер некорректно работает с частичной точностью.
Сохраняет обнаруженные Vertex Shader и Pixel Shader в файл:
shaders.out
Это диагностический инструмент.
С его помощью можно узнать, какие шейдеры реально использует приложение.
Функция особенно полезна при исследовании:
несовместимости;
неправильного рендеринга;
конкретного shader path;
поведения игры на разных GPU.
3D-Analyze поддерживает сохранение shader-кода; начиная с версии 2.36 в декомпиляторе появилась поддержка Shader Model 3.0.
Это один из самых важных разделов программы.
CAP — сокращение от capabilities, то есть возможностей устройства.
Direct3D предоставляет приложению сведения о том, что умеет конкретное графическое устройство.
Например:
поддерживает ли оно Hardware T&L;
какие версии шейдеров доступны;
какие текстуры поддерживаются;
сколько текстур можно использовать одновременно;
какие операции доступны.
3D-Analyze может изменить часть этой информации.
Именно поэтому некоторые старые игры после включения соответствующей функции начинают считать видеокарту совместимой.
Сообщает приложению, что устройство поддерживает Hardware T&L.
Меняется информация о возможностях устройства.
Это позволяет пройти проверку игры, которая требует HW T&L.
Она не создаёт настоящий аппаратный блок T&L.
Это принципиально.
Если затем игре потребуется соответствующая обработка, может понадобиться программный T&L.
Классический случай:
игра требует HW T&L, а видеокарта его не имеет.
Особенно известным примером были карты Kyro, для которых эта функция изначально и была особенно полезна.
Изменяет дополнительные возможности DirectX 8.1, сообщаемые приложению.
Если игра требует определённую возможность DX8.1, которой устройство не сообщает о поддержке.
Это широкая настройка.
Поэтому её не следует включать без понимания проблемы.
Если известно, что игре требуется только HW T&L, сначала используется соответствующий пункт, а не весь набор DX8.1 CAP.
Изменяет сведения о возможностях Pixel Shader.
В документации 3D-Analyze указано, что функция может эмулировать соответствующие capability до уровня версии 3.0, после чего неподдерживаемые аппаратурой шейдеры пропускаются.
Функция в первую очередь меняет информацию о доступных возможностях.
Она не является полноценным программным эмулятором Pixel Shader.
Когда игра прекращает работу из-за проверки Pixel Shader capabilities.
Игра может пройти первоначальную проверку, но это не гарантирует правильный рендеринг.
Изменяет сведения о поддержке bump mapping.
Это способ создать визуальное ощущение неровной поверхности без добавления большого количества геометрии.
Например:
кирпичная стена;
камень;
металл;
рельефная поверхность.
Если игра требует соответствующую возможность, а видеокарта не сообщает о её наличии.
sim. означает simultaneous — одновременно используемые текстуры.
Изменяет сведения о максимальном количестве текстур, которые устройство может использовать одновременно.
Старые видеокарты сильно различались по этому параметру.
Игра может требовать больше текстурных слоёв, чем устройство заявляет.
Позволяет изменить соответствующую capability, чтобы приложение не отказалось от нужного режима на этапе проверки.
Это не увеличивает физическое количество текстурных блоков GPU.
В отличие от CAP bits, здесь находятся отдельные механизмы совместимости.
Позволяет заменить использование Cube Map обычной 2D-текстурой.
Это набор изображений, описывающих окружение вокруг объекта.
Cube Mapping применяется для создания эффектов:
отражения;
окружающей среды;
некоторых видов освещения.
Вместо полноценной Cube Map используется обычная 2D-текстура.
Поэтому это реальная замена одного способа представления данных другим, а не просто изменение capability.
Именно Cube Mapping является одним из немногих явно указанных в документации исключений из общего правила «3D-Analyze не эмулирует графические функции программно».
Эффект может выглядеть иначе, чем в оригинальном режиме.
Позволяет работать с текстурами DXT1–DXT5 на оборудовании, которое не поддерживает соответствующий формат аппаратно.
Сжатая текстура заменяется несжатым вариантом.
Игра может получить возможность загрузить текстуру.
Несжатые данные занимают больше памяти.
Это особенно важно для старых видеокарт с небольшим объёмом VRAM.
Когда игра требует DXT-текстуры, а видеокарта или драйвер не может нормально работать с этим форматом.
Исходная документация отдельно предупреждает, что DXT-опция способна вызывать ошибки.
Исправляет проблему совместимости, связанную с ограничениями Kyro при использовании Z-Buffer и Stencil Buffer.
Только при использовании соответствующих карт Kyro и наличии проблемы.
На обычных NVIDIA/ATI-видеокартах этот пункт не нужен.
Исправляет проблемы с мерцанием изображения на Voodoo 3/4/5 в полноэкранном режиме.
Если на Voodoo возникает:
мерцание;
нестабильное изображение;
проблемы после перехода в fullscreen.
Это специализированный fix.
На другом оборудовании его включение не имеет смысла.
Этот раздел содержит готовые исправления для конкретных игр и демонстрационных программ.
Это принципиально отличается от универсальных параметров.
Если вы не используете соответствующую игру или тест, эти пункты обычно оставляют выключенными.
NOLF2 — No One Lives Forever 2.
Исправляет проблему запуска/совместимости No One Lives Forever 2 при использовании 3D-Analyze.
В документации отдельно упоминаются возможные графические ошибки на Kyro, связанные уже с драйвером.
Если запускается NOLF2 и проблема соответствует этому исправлению.
Позволяет запускать Gun Metal Demo на видеокартах, отличных от NVIDIA.
Только для соответствующего теста.
Это не универсальный параметр совместимости.
Исправляет мерцание теней в Mafia, связанное с драйверами ATI.
Если:
используется соответствующее оборудование;
проблема проявляется именно в тенях Mafia.
Исправление направлено на устранение мерцания, а не на увеличение производительности.
LOTR — The Lord of the Rings.
Исправляет проблему с текстурами на Kyro, из-за которой игра могла работать неправильно.
Только при соответствующей конфигурации.
Изменяет используемый формат Stencil Buffer, чтобы Matrox Reef Demo мог работать с дополнительными видеокартами.
Документация указывает переход от D24X4S4 к D24S8 для совместимости с GeForce 3/4 и Radeon 8500 и более новыми картами соответствующих семейств.
Это специализированное исправление для демонстрационной программы.
Исправляет графическую проблему Spider-Man на Voodoo 5.
Только на соответствующем оборудовании и при наличии проблемы.
Позволяет запускать демонстрационные материалы ATI R4xx на NVIDIA NV4x.
Это связано с различиями между аппаратными возможностями и форматами данных двух производителей.
Параметр предназначен прежде всего для тестов и демонстраций.
Позволяет запускать соответствующий ATI R4xx тест с изменёнными форматами текстур.
Основная цель — корректное сравнение результатов бенчмарков, а не обычная игра.
В версии 2.36b для режимов Ruby Benchmark были изменены настройки работы с 3Dc и исправлена ошибка замены текстур.
Правая часть окна предназначена для OpenGL-приложений.
Здесь набор возможностей меньше, чем в DirectX-разделе.
Это связано с тем, что большая часть специфических настроек 3D-Analyze относится именно к Direct3D.
Работает по тому же принципу, что и DirectX-логирование.
Создаётся файл:
PerfLog_GL.csv
Можно получить показатели производительности OpenGL-приложения.
Для тестирования и сравнения производительности.
Показывает доступные счётчики во время работы OpenGL-приложения.
Основные показатели:
FPS;
геометрическая нагрузка;
другие доступные программе значения.
Это диагностический режим, а не графический эффект.
Работает по тому же принципу, что и DirectX-вариант.
Используется очень маленькая текстура 32×32.
Проверяется влияние текстурной нагрузки на производительность OpenGL-приложения.
Отключает текстуры в OpenGL-приложении.
Для диагностики производительности и поиска проблем с текстурированием.
Отключает отрисовку для диагностического тестирования.
Позволяет оценить работу приложения без обычной нагрузки рендеринга.
Принудительно использует максимально доступную анизотропную фильтрацию.
Результат зависит от возможностей драйвера и конкретного GPU.
В OpenGL эта группа связана с программируемыми графическими программами.
Сохраняет обнаруженные Fragment и Vertex Programs в файл:
shaders.out
Для анализа того, какие программы использует приложение.
исследование старой игры;
поиск проблем с шейдерами;
анализ поведения драйвера;
сравнение разных конфигураций.
Функция сохранения Fragment/Vertex Programs появилась в истории развития 3D-Analyze ещё до версии 2.36.
Этот раздел позволяет изменить идентификаторы устройства, которые приложение получает через DirectX.
На экране присутствуют два поля:
VendorID
DeviceID
Ниже приведены готовые примеры конфигураций для старых видеокарт:
NVIDIA GeForce Ti 4600;
NVIDIA GeForce FX 5900 Ultra;
ATI Radeon 8500;
ATI Radeon 9800 Pro.
Vendor ID определяет производителя устройства.
Например, разные значения используются для:
NVIDIA;
ATI/AMD;
других производителей.
Позволяет передать приложению изменённый идентификатор производителя.
Некоторые старые игры выбирали графический путь на основании производителя.
Например:
NVIDIA → один режим
ATI → другой режим
Изменение VendorID позволяет проверить, как игра поведёт себя при другом определении оборудования.
Это не меняет реального производителя видеокарты.
Device ID определяет конкретное устройство внутри семейства производителя.
Например, игра может различать разные GPU одного производителя.
Позволяет сообщить приложению другой Device ID.
обход ошибочной проверки;
выбор другого графического пути;
совместимость с конкретной игрой;
тестирование поведения приложения.
Игра может начать использовать функции, которых у реального GPU нет.
Поэтому подмена Device ID — один из параметров, который следует применять осторожно.
В нижней части окна приведены распространённые старые устройства.
Например:
NVIDIA GeForce Ti 4600
VendorID: 4318
DeviceID: 592
Эти значения можно использовать в ситуациях, когда игра корректно работает только после определения видеокарты как конкретной модели.
Но универсального правила здесь нет.
Нельзя считать:
«GeForce Ti 4600 подходит для всех игр».
Подмена устройства меняет только информацию, которую получает приложение.
В нижней части интерфейса находятся дополнительные функции.
Это смешанный раздел: здесь есть диагностика, совместимость и отдельные тестовые возможности.
Переводит отображение полигонов в каркасный режим.
Вместо заполненных поверхностей показываются линии, образующие геометрию объектов.
Очень полезный диагностический инструмент.
Можно увидеть:
насколько сложна геометрия сцены;
количество объектов;
форму моделей;
плотность полигонов.
Не использовать.
Заставляет приложение использовать программный Reference Rasterizer Microsoft вместо аппаратного рендеринга.
Reference Rasterizer — эталонный программный механизм Direct3D, предназначенный главным образом для разработки и тестирования.
Он позволяет проверить работу графического API без обычного аппаратного ускорителя.
Практически вся работа выполняется программно.
тестирование;
диагностика;
проверка корректности графических функций;
исследование поведения приложения.
Для обычной игры.
Создаёт подробный отладочный журнал работы 3D-Analyze.
Если игра:
запускается без 3D-Analyze;
падает при использовании 3D-Analyze;
зависает;
выдаёт неизвестную ошибку.
Включить debug logging.
Запустить игру через 3D-Analyze.
Воспроизвести проблему.
Закрыть игру.
Найти созданный журнал.
Проанализировать его.
Исторически эта функция использовалась самим разработчиком для диагностики проблем: к журналу рекомендовалось прикладывать конфигурацию системы, название игры и выбранные параметры 3D-Analyze.
Пытается установить частоту обновления экрана 100 Гц для DirectX-приложения.
В старых играх иногда возникали проблемы с частотой обновления при переходе в fullscreen.
Если есть конкретная проблема с частотой обновления.
Монитор должен поддерживать выбранную частоту.
Пытается устранить микроподёргивания изображения, которые могут возникать даже при нормальном среднем FPS.
Stuttering и низкий FPS — не одно и то же.
Например:
средний FPS = 60;
но кадры выдаются неравномерно;
изображение воспринимается как дёрганое.
Эта функция была добавлена для отдельных проблем старых видеокарт, в частности Radeon 9700 Pro и некоторых игр.
3D-Analyze предупреждает, что функция изменяет параметры Vertex Buffer и поэтому может вызвать ошибки в приложении.
Использовать её следует только при наличии реального stuttering.
Сохраняет выбранные настройки и путь к приложению в .bat-файл.
Без сохранения пользователю приходится каждый раз заново:
выбирать EXE;
выставлять параметры;
нажимать Run.
BAT-файл позволяет сохранить конфигурацию для повторного запуска.
Можно создать отдельный BAT-файл для каждой игры:
Game1_3DA.bat
Game2_3DA.bat
Game3_3DA.bat
При этом каждая игра может иметь собственный набор настроек.
В разделе Misc находятся два режима:
method 1
method 2
Игра может хранить несколько версий одной текстуры разного размера.
Например:
1024×1024;
512×512;
256×256;
128×128;
64×64.
Когда объект удаляется от камеры, используется меньшая версия.
Это называется MIP mapping.
3D-Analyze визуально окрашивает разные уровни MIP-карты разными цветами.
Можно определить:
какой уровень MIP используется;
насколько быстро игра переходит между уровнями;
где происходит резкая смена детализации;
как работает текстурирование.
Они используют разные способы обработки текстур в DirectX.
Поэтому конкретная игра может нормально работать с одним методом и хуже с другим.
Метод 1 также может увеличить время загрузки приложения.
Это один из наиболее необычных разделов программы.
Он содержит два пункта:
shaders
textures
Некоторые драйверы могли распознавать определённые особенности приложения или конкретные графические программы.
3D-Analyze изменяет данные таким образом, чтобы драйвер не смог распознать исходную последовательность.
Это не «античит» и не защита от обнаружения игрока.
Речь именно о распознавании графического кода драйвером.
Изменяет Pixel Shader и Vertex Shader Code.
Цель — изменить код таким образом, чтобы драйвер не распознал исходный вариант.
Только если известно, что конкретная проблема связана с распознаванием shader-кода драйвером.
Изменение шейдера может:
изменить результат;
вызвать ошибку;
нарушить работу игры;
ухудшить изображение.
Поэтому это не универсальная настройка совместимости.
Изменяет цветовую информацию некоторых пикселей текстур.
Это делается для того, чтобы изменить характерные признаки данных, которые может распознавать драйвер.
Изменения могут быть видны на экране.
Это прямо отмечено в документации программы.
Только при конкретной проблеме, для которой требуется такой обход.
Если игра нормально работает без этой функции.
В нижней части окна находится отдельный блок управления Z-Buffer.
Здесь представлены четыре варианта:
16-bit без Stencil;
16-bit со Stencil;
24-bit без Stencil;
24-bit со Stencil.
Принудительно выбирает 16-битный Z-Buffer.
Меньше памяти на хранение глубины.
Меньшая точность.
В некоторых сценах это может привести к проблемам с глубиной:
мерцанию поверхностей;
наложению объектов;
z-fighting.
Если игра или видеокарта плохо работает с более глубоким форматом.
Использует 16 бит общего формата:
15 бит — глубина;
1 бит — Stencil.
Если игре одновременно необходимы:
Z-Buffer;
Stencil Buffer.
Глубина становится менее точной, чем при полноценном 16-битном Z-Buffer без выделения бита под Stencil.
Принудительно выбирает 24-битный Z-Buffer без Stencil.
Больше точность глубины.
Если игра требует 24-битный буфер или проблемы возникают при использовании более простого формата.
Использует:
24 бита для глубины;
8 бит для Stencil.
То есть получается стандартная схема 24/8.
Для игр, использующих:
точный Z-Buffer;
Stencil-эффекты;
тени;
отражения;
маскирование.
Не все видеокарты и игры поддерживают принудительный выбор такого формата. Документация 3D-Analyze отдельно предупреждает об этом для всех вариантов принудительного Z-Buffer.
Это важно не путать.
Отвечает за:
насколько объект близко или далеко от камеры.
Он определяет видимость поверхностей.
Отвечает за:
можно ли выполнять определённые операции в конкретном участке изображения.
Он может использоваться для:
теней;
отражений;
масок;
специальных эффектов.
Поэтому запись:
24 bit Z + 8 bit Stencil
означает не «32-битный Z-Buffer».
Это два разных типа данных, находящихся в одном формате поверхности.
Это нормальная ситуация.
3D-Analyze не гарантирует, что каждый параметр будет иметь эффект в каждой игре.
Причины могут быть разные:
игра не использует соответствующую функцию;
используется другой графический API;
драйвер игнорирует изменение;
параметр влияет только на определённый этап запуска;
приложение использует собственный механизм;
проблема находится в другой части графического конвейера.
Поэтому отсутствие видимого эффекта не означает, что программа неисправна.
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Отрисовывает геометрию, но только каркасом.
Для диагностики особенно полезны:
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.
Эти функции помогают понять почему приложение работает неправильно или медленно, а не просто изменить картинку.
К этой группе относятся:
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.
Сюда относятся:
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.
Их не следует включать «на всякий случай».
Особенно осторожно следует обращаться с:
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.
Эти параметры могут менять фундаментальные условия, в которых работает графический движок.
После разбора всех функций можно сформулировать простое правило.
Если игра работает — ничего не менять.
Если игра не работает:
1. Определить ошибку.
2. Определить DirectX или OpenGL.
3. Понять, какую возможность требует игра.
4. Найти соответствующую функцию 3D-Analyze.
5. Включить только её.
6. Проверить результат.
7. Если проблема осталась — перейти к следующему параметру.
Такой порядок намного надёжнее, чем включение десяти или двадцати функций одновременно.
3D-Analyze v2.36b содержит несколько совершенно разных типов настроек.
Используется в основном для изменения рендеринга и диагностики производительности.
Управляет выбором и обработкой shader path.
Меняет информацию о возможностях устройства, которую получает приложение.
Предоставляет отдельные механизмы совместимости для текстур, Cube Map и старых GPU.
Содержит точечные исправления для конкретных игр, демо и видеокарт.
Предоставляет отдельный набор диагностических и графических параметров для OpenGL.
Позволяет изменить VendorID и DeviceID, которые видит приложение.
Содержит диагностические инструменты и отдельные функции совместимости.
Изменяет shader-код или данные текстур для обхода определённого распознавания драйвером.
Позволяет принудительно выбирать глубину буфера и наличие Stencil.
Главное — не считать все эти функции разновидностями одного и того же «эмулятора». Одни параметры изменяют информацию о возможностях GPU, другие меняют команды или режимы работы, третьи предназначены только для диагностики, а четвёртые исправляют конкретные ошибки конкретного оборудования.
Именно это различие позволит в третьей части перейти от описания кнопок к практической методике: как определить проблему игры, подобрать нужные параметры, составить рабочую комбинацию, проверить результат и понять, какая именно настройка решила проблему.
В первых двух частях мы разобрали назначение программы и её настройки. Теперь начинается самое главное: как применять 3D-Analyze на практике.
Здесь не будет универсального набора из десяти галочек. Такой подход чаще мешает, чем помогает.
Правильная работа с 3D-Analyze строится по принципу:
сначала определить проблему → затем понять причину → выбрать минимальное вмешательство → проверить результат.
Перед настройкой необходимо подготовить отдельную копию игры или хотя бы сохранить исходные файлы.
Это особенно важно при использовании дополнительных DLL и сторонних wrappers.
Рекомендуется иметь:
чистый каталог игры;
резервную копию изменяемых DLL;
оригинальный EXE;
информацию о видеокарте;
используемый драйвер;
разрешение экрана;
версию Windows;
сведения о том, использует ли игра Direct3D или OpenGL.
Если игра уже запускается без 3D-Analyze, сначала нужно проверить её в исходном состоянии.
Это позволит понять, что именно изменилось после применения программы.
Необходимо разделить проблему на несколько этапов.
Если игра вообще не стартует, сначала исследуем:
проверку видеокарты;
Direct3D/OpenGL;
Hardware T&L;
Pixel Shader;
поддерживаемые форматы;
Z-Buffer;
VendorID/DeviceID.
Тогда смотрим:
текстуры;
шейдеры;
освещение;
Z-Buffer;
Stencil;
Cube Mapping;
DXT;
фильтрацию.
Тогда используем:
counters;
performance logging;
disable textures;
force small texture;
disable rendering;
force SW TnL.
Проверяем:
Z-Buffer;
W-Buffer;
Stencil;
Vertex Buffer;
шейдеры;
драйвер;
дополнительные DLL.
Допустим, имеется игра:
C:\Games\Game\game.exe
Порядок действий:
Запустить 3D-Analyze.
Нажать SELECT.
Выбрать game.exe.
Не включать никакие дополнительные функции.
Нажать RUN.
Проверить результат.
Это очень важный тест.
Если игра запускается без каких-либо изменений, значит базовая совместимость есть.
В таком случае 3D-Analyze для обычной работы не требуется.
Первое, что нельзя делать:
включать все функции подряд.
Нужно получить максимальное количество информации об ошибке.
Например:
Игра сообщает:
Hardware T&L required.
Сразу проверяем:
emulate HW TnL caps
Игра сообщает:
Pixel Shader 1.4 required.
Проверяем возможности Pixel Shader и соответствующие CAP-настройки.
Игра запускается, но сразу закрывается.
Причина может быть совершенно другой:
Z-Buffer;
текстуры;
шейдер;
драйвер;
неправильный DeviceID;
DLL.
Поэтому в этом случае нельзя автоматически включать emulate HW TnL caps.
Это один из самых важных этапов.
Игра может использовать:
DirectDraw;
Direct3D;
OpenGL;
несколько API одновременно.
Например, меню может работать через один механизм, а 3D-сцена — через другой.
Если игра использует OpenGL, настройки из раздела:
DirectX 8.1 and 9.0 Options
могут вообще не повлиять на её 3D-рендеринг.
В таком случае нужно работать с:
OpenGL Options
Поэтому перед настройкой желательно выяснить, какой API используется игрой.
Обычно это можно определить несколькими способами:
документацией игры;
настройками запуска;
файлами конфигурации;
логами;
названием используемой DLL;
поведением игры при запуске.
Для старых Direct3D-игр часто встречаются:
d3d8.dll;
d3d9.dll;
ddraw.dll.
Но наличие файла в каталоге игры ещё не гарантирует, что именно он используется в конкретной сцене.
Частый признак — наличие:
opengl32.dll
Однако здесь тоже нужно быть осторожным.
Windows предоставляет системную OpenGL DLL, поэтому сам факт её наличия ничего не доказывает.
Нужно установить, действительно ли приложение создаёт OpenGL-контекст.
Если неизвестно, что именно тормозит игру, можно использовать простую последовательность.
Обычный запуск.
Записываем:
FPS;
поведение изображения;
наличие артефактов.
Включаем:
counters
Смотрим показатели.
Включаем:
disable textures
Снова проверяем FPS.
Включаем:
force small texture (32x32)
Снова проверяем FPS.
Включаем:
disable rendering
Проверяем, насколько меняется производительность.
Получается своеобразная карта нагрузки.
Допустим:
Обычный режим: 15 FPS
Disable textures: 25 FPS
32×32 textures: 23 FPS
Disable rendering: 80 FPS
Это говорит о многом.
Рендеринг действительно является главным источником нагрузки.
Но разница между обычными текстурами и 32×32 небольшая, значит проблема может быть не только в размере текстур.
Теперь можно исследовать:
полигоны;
шейдеры;
фильтрацию;
T&L;
overdraw.
Рассмотрим типичный случай.
Старая игра запускается только на видеокартах с Hardware T&L.
На старой карте появляется сообщение о несовместимости.
Включаем:
emulate HW TnL caps
Запускаем игру.
Если игра теперь проходит первоначальную проверку, но падает или показывает неправильное изображение, одной подмены capability недостаточно.
Пробуем:
force SW TnL
Теперь часть обработки 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 может существенно снизиться.
Если видеокарта уже имеет аппаратный T&L, включать программный вариант без причины не следует.
Это может:
увеличить нагрузку на CPU;
уменьшить FPS;
вызвать дополнительные задержки;
изменить поведение игры.
Поэтому:
SW T&L — это средство совместимости и диагностики, а не универсальный способ ускорения.
Допустим, игра требует Pixel Shader 1.4.
Есть несколько возможных ситуаций.
Видеокарта поддерживает PS 1.4, но игра неправильно определяет её.
Тогда сначала исследуем:
emulate pixel shader caps
Видеокарта поддерживает более новую версию, но игра выбирает проблемный shader path.
Можно проверить:
force max pixel shader version 1.1
или:
force max pixel shader version 1.4
Проблема возникает именно при использовании определённой версии.
Например, PS 2.0 вызывает ошибку.
Тогда можно проверить:
skip pixel shader version 2.0
Нельзя одновременно включать:
несколько force max;
несколько skip;
emulate pixel shader caps;
без понимания их назначения.
Например, бессмысленно одновременно говорить программе:
ограничить максимальную версию до 1.1
и
пропустить Pixel Shader 1.1.
Такая конфигурация может привести к отсутствию подходящего shader path.
Если игра запускается, но:
поверхности белые;
текстуры отсутствуют;
объекты прозрачные;
появляются квадраты;
игра вылетает при загрузке уровня,
необходимо проверить текстурную часть.
Первый тест:
disable textures
Если игра начинает работать стабильнее, это сильный признак проблемы в текстурировании.
Но disable textures не является исправлением.
Это только диагностический тест.
Следующий тест:
force small texture (32x32)
Если игра после этого становится стабильнее, возможны проблемы с:
памятью;
размером текстур;
загрузкой ресурсов;
старым драйвером;
ограничениями GPU.
Однако качество изображения при этом будет сильно нарушено.
Поэтому функция используется только для определения причины.
Если игра использует DXT-сжатие, а оборудование работает с этим форматом неправильно, можно попробовать:
emulate DXT textures
Логика:
Игра → DXT-текстура → проблема
↓
3D-Analyze → несжатое представление
↓
Игра получает текстуру другим способом
Плюс:
можно обойти отсутствие аппаратной поддержки.
Минус:
возрастает расход памяти;
возможны ошибки;
производительность может измениться.
Признаки:
отсутствуют отражения;
поверхность выглядит полностью чёрной;
определённый эффект вызывает вылет;
ошибка появляется только на объектах с отражением.
Можно попробовать:
emulate cube maps
3D-Analyze заменяет Cube Map обычной 2D-текстурой.
Если после этого эффект появляется или игра перестаёт падать, проблема действительно могла быть связана с Cube Mapping.
Но изображение может отличаться от оригинала.
Типичные признаки:
поверхности мерцают;
два объекта визуально «борются» друг с другом;
стены просвечивают;
тени отображаются неправильно;
объекты появляются перед другими;
глубина сцены выглядит неверно.
Это может быть связано с Z-Buffer.
Тогда можно проверить:
force zbuffer;
force wbuffer;
16-bit Z;
24-bit Z;
варианты со Stencil.
Нельзя менять четыре режима одновременно.
Последовательность:
Исходный режим.
force zbuffer
Если не помогло — отключаем его и проверяем:
force wbuffer
Если проблема связана с точностью глубины:
force 16 bit zbuffer
или:
force 24 bit zbuffer
Если игре нужен Stencil:
проверяем соответствующий вариант:
with stencil
Если после включения варианта без Stencil:
исчезли тени;
пропали отражения;
перестали работать маски;
исчезли специальные эффекты,
игра, вероятно, использует Stencil Buffer.
Тогда следует проверить вариант:
with stencil
Общее правило:
Меньше памяти.
Но ниже точность глубины.
Больше точность.
Но требуется больше памяти.
Если игра нормально работает в 24-bit, нет необходимости принудительно переводить её на 16-bit.
Если объекты:
слишком тёмные;
слишком яркие;
имеют неправильное освещение;
отображаются без света;
вызывают артефакты,
можно провести тест с:
disable lighting
Если проблема исчезает, это важная диагностическая информация.
Но отключение освещения не является нормальным решением для большинства игр.
Если проблема связана с тенями или масками, можно проверить:
disable two sided stencil
Это особенно актуально для старых GPU и драйверов, которые неправильно работали с определёнными вариантами Stencil.
После включения необходимо проверить:
тени;
отражения;
освещение;
другие эффекты.
Если игра:
зависает при переключении разрешения;
показывает чёрный экран;
сразу закрывается после перехода в fullscreen;
неправильно работает с частотой обновления,
первый тест:
force windowed mode
Если в окне игра работает нормально, а в полноэкранном режиме нет, проблема, вероятно, находится не в основном 3D-рендеринге, а в переходе между видеорежимами.
После этого можно отдельно проверить:
force 100 hz
если монитор и выбранное разрешение поддерживают 100 Гц.
Если изображение выглядит странно, включаем:
force wireframe mode
Это позволяет посмотреть на геометрию без обычного заполнения полигонов.
чрезмерное количество полигонов;
повреждённую геометрию;
неправильные модели;
неожиданные поверхности;
особенности работы движка.
Это особенно полезно при исследовании старых игр и демо.
Низкий FPS нельзя автоматически связывать с видеокартой.
Возможны:
CPU bottleneck;
GPU bottleneck;
слишком много полигонов;
слишком много пикселей;
тяжёлые шейдеры;
текстуры;
программный T&L;
драйвер;
синхронизация;
проблемы с памятью.
Поэтому сначала включаем:
counters
и:
performance logging
Если игра использует программный T&L, сравниваем:
обычный режим
и:
force SW TnL
Если FPS резко падает при программном T&L, значит CPU становится существенным ограничением.
Если разница небольшая, причина может находиться в другом месте.
Используем:
disable textures
Если FPS вырос значительно — текстурная часть важна.
Затем:
force small texture
Если результат почти такой же, как при полном отключении текстур, важна сама текстурная обработка.
Если 32×32 почти ничего не меняет, проблема может быть не в текстурах.
Включаем:
force wireframe mode
и смотрим на сложность сцены.
Дополнительно используем:
counters
Если сцена содержит огромное количество полигонов, старый GPU или CPU может не успевать обрабатывать геометрию.
Включаем:
save shaders to file
После запуска смотрим shaders.out.
Если игра работает только при отключении определённой версии Pixel Shader, можно исследовать, какой shader path используется.
Это гораздо информативнее, чем случайное включение всех Shader-параметров.
Подмена VendorID нужна только тогда, когда есть основание считать, что игра выбирает графический режим по производителю.
Например:
реальная видеокарта → ATI
игра → выбирает проблемный ATI path
Тогда можно проверить другой VendorID.
Но сначала необходимо убедиться, что именно определение производителя является причиной проблемы.
DeviceID имеет смысл, если игра различает конкретные модели.
Например:
один GPU → режим A
другой GPU → режим B
Если реальная карта попадает в проблемный путь, можно протестировать другой DeviceID.
Но это рискованнее обычного изменения capability.
Игра может включить функции, которых на реальном GPU нет.
Неправильный подход:
«Игра требует Radeon 9800 — поставим DeviceID Radeon 9800».
Это не гарантирует работу.
Игра может после проверки начать использовать:
Shader;
текстуры;
буферы;
форматы;
которые реальная видеокарта не поддерживает.
Подмена идентификатора полезна только тогда, когда проблема действительно находится в определении устройства, а не в его реальных возможностях.
Это специализированный инструмент.
Его следует применять только тогда, когда есть основания подозревать, что драйвер распознаёт конкретный графический код или данные.
Порядок:
Проверить игру без Anti-Detect.
Проверить драйвер.
Проверить обычные compatibility settings.
Только затем тестировать shaders.
Если требуется — отдельно тестировать textures.
Не следует включать оба режима одновременно.
Потому что он изменяет реальные данные.
В режиме:
shaders
изменяется shader code.
В режиме:
textures
изменяется содержимое текстур.
Поэтому новая проблема может появиться именно из-за Anti-Detect.
Это самая распространённая ошибка.
Если одновременно включить 15 параметров и игра заработает, неизвестно, какой из них помог.
Если игра перестанет работать, неизвестно, какой параметр вызвал проблему.
Например:
emulate pixel shader caps
не означает:
«создать настоящий Pixel Shader».
Название нужно понимать в контексте CAP bits.
Чужой конфиг может быть полезной подсказкой, но не универсальным рецептом.
У двух игр могут быть совершенно разные причины проблем.
Если игра не запускается, снижение нагрузки не решит проблему.
disable textures не исправит отсутствие HW T&L.
force wireframe не добавит Pixel Shader.
counters вообще ничего не исправляет.
Всегда желательно менять один параметр или одну логически связанную комбинацию.
Используем следующую последовательность.
Запустить игру без 3D-Analyze.
Записать ошибку.
Определить API.
Определить требование игры.
Выбрать одну соответствующую функцию.
Запустить.
Проверить:
запуск;
меню;
начало игры;
загрузку уровня;
текстуры;
освещение;
тени;
звук;
FPS;
стабильность.
Если всё работает — остановиться.
Если проблема осталась — перейти к следующей причине.
Допустим, после включения:
emulate HW TnL caps
игра запустилась.
Это ещё не означает, что задача решена.
Нужно пройти хотя бы:
EXE → меню → новая игра → загрузка уровня → игровая сцена.
Некоторые ошибки появляются только после создания 3D-сцены.
Например:
EXE запускается;
меню работает;
уровень загружается;
при появлении первого персонажа игра падает.
В этом случае первоначальная проверка совместимости уже пройдена. Теперь нужно искать проблему в реальном рендеринге.
Результат зависит от нескольких компонентов:
Игра
↓
графический движок
↓
3D-Analyze
↓
API
↓
драйвер
↓
GPU
↓
операционная система
Если изменить хотя бы один элемент цепочки, результат может измениться.
Поэтому нельзя гарантировать, что конкретный набор параметров будет одинаково работать:
в Windows XP;
Windows 7;
Windows 10;
Windows 11.
3D-Analyze создавалась для совершенно другой программной среды.
DxWnd решает другую задачу.
Он предназначен главным образом для управления поведением старых Windows-приложений:
оконный режим;
координаты окна;
масштабирование;
совместимость;
перехват некоторых API;
управление таймингами.
Поэтому 3D-Analyze и DxWnd могут дополнять друг друга.
Условная схема:
Игра → DxWnd → графический API
и отдельно:
3D-Analyze → изменение Direct3D-поведения
Но конкретная совместимость зависит от игры и версии используемых DLL.
dgVoodoo выполняет другую задачу: оно переводит старые графические API на более современные.
Например, старый Direct3D/Glide-путь может быть перенаправлен через современный графический backend.
Получается принципиально другая цепочка:
Игра → старый API → dgVoodoo → современный API → GPU
3D-Analyze работает на другом уровне.
Поэтому комбинация возможна не всегда.
Если одновременно используются:
3D-Analyze;
dgVoodoo;
DxWnd;
собственный d3d8.dll;
собственный d3d9.dll;
возникает вопрос:
кто первым получает графический вызов?
Если две программы пытаются заменить одну и ту же DLL или перехватить один и тот же интерфейс, они могут конфликтовать.
Результат:
игра не запускается;
чёрный экран;
вылет;
неправильное разрешение;
отсутствие 3D;
настройки одной программы не работают.
Никогда не начинайте с пяти совместимых инструментов одновременно.
Сначала:
чистая игра
↓
3D-Analyze
↓
проверка.
Затем:
чистая игра
↓
dgVoodoo
↓
проверка.
Только после этого:
dgVoodoo + 3D-Analyze
если действительно есть необходимость.
Так можно определить, какой компонент вызывает проблему.
Особенно опасна ситуация, когда в каталоге игры лежат несколько DLL с похожим назначением.
Например:
d3d8.dll;
d3d9.dll;
ddraw.dll;
wrapper DLL;
модифицированная DLL;
DLL от другого compatibility layer.
Если не понимать, какая библиотека загружается первой, настройка становится случайной.
Поэтому при использовании wrappers всегда нужно проверять:
имя DLL;
разрядность;
каталог;
дату файла;
назначение;
какой API она перехватывает.
Большинство старых игр — 32-битные.
Поэтому для них необходимы 32-битные компоненты.
64-битная Windows сама по себе не означает, что 32-битная игра будет использовать 64-битную DLL.
Для старого приложения критично, чтобы подменяемая библиотека соответствовала разрядности процесса.
Если поставить DLL неправильной разрядности, игра может:
не запуститься;
сообщить об ошибке DLL;
закрыться сразу после запуска.
Здесь необходимо сделать важное уточнение.
3D-Analyze не является универсальным инструментом для старых 2D-игр.
Если игра использует:
чистый DirectDraw;
программный 2D;
DOS;
старый GDI;
другой графический механизм,
большинство функций 3D-Analyze не принесёт пользы.
Однако многие игры имеют смешанную архитектуру.
Например:
меню → 2D
игровая сцена → Direct3D
видеоролик → другой механизм
В такой игре 3D-Analyze может влиять только на 3D-часть.
Поэтому ситуация:
«меню работает, а игра падает при загрузке уровня»
может быть совершенно нормальным признаком проблемы именно в 3D-части.
Если игра действительно 2D:
Определить используемый API.
Проверить DirectDraw/OpenGL/GDI.
Не применять случайные Direct3D CAP-настройки.
Проверить совместимость с Windows.
Рассмотреть DxWnd или специализированный wrapper.
Проверить частоту обновления и режим окна.
Только после этого оценивать необходимость 3D-Analyze.
Если 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
Ниже приведены не «универсальные пресеты», а типовые схемы поиска решения.
emulate HW TnL caps
emulate HW TnL caps
force SW TnL
запускается ли игра;
не появились ли артефакты;
насколько упал FPS.
Первый тест:
emulate pixel shader caps
Если игра выбирает неправильную версию:
force max pixel shader version 1.1
или:
force max pixel shader version 1.4
Всё зависит от конкретного требования игры.
Проверяем:
skip pixel shader version 2.0
Если игра имеет альтернативный shader path, она может перейти на более простой вариант.
Если альтернативного пути нет, игра может перестать работать.
Проверяем:
emulate DXT textures
Если игра начинает правильно загружать текстуры, проблема, вероятно, была связана с поддержкой формата.
После этого обязательно проверяем:
память;
скорость;
артефакты;
загрузку уровней.
Проверяем:
emulate cube maps
Если проблема исчезла — проверяем качество отражений и других эффектов.
Последовательность:
force zbuffer
↓
force wbuffer
↓
16-bit Z
↓
24-bit Z
↓
варианты with stencil
Не включаем всё одновременно.
Сначала:
VendorID / DeviceID
Но только после проверки остальных возможностей.
Если проблема действительно связана с определением устройства:
VendorID + DeviceID
могут заставить игру выбрать другой render path.
Для соответствующей карты:
VOODOO flicker fix
Если проблема именно та, для которой предназначен fix, этого может быть достаточно.
Не нужно одновременно включать Anti-Detect, Z-Buffer и Pixel Shader.
Для проблем, связанных с:
HW T&L;
Z-Buffer;
Stencil;
могут использоваться:
emulate HW TnL caps
и при соответствующей проблеме:
KYRO zbuffer/stencil fix
Но это две разные задачи.
Если используется соответствующая ATI-конфигурация и наблюдается проблема теней:
Mafia shadow fix
Не следует дополнительно менять Z-Buffer, если он работает нормально.
Начинаем не с «ускоряющих» галочек, а с диагностики:
counters
performance logging
Затем:
disable textures
и:
force small texture
После этого анализируем результат.
Только когда причина понятна, выбирается реальное решение.
Для каждой игры желательно создать отдельный профиль.
Например:
Morrowind_3DA
или:
GameName_D3D
В нём фиксируем:
EXE;
используемый API;
видеокарту;
драйвер;
Windows;
разрешение;
выбранные параметры;
результат;
FPS;
известные проблемы.
Через несколько дней легко забыть:
«Почему здесь включён
emulate HW TnL caps?»
Если записать причину:
«Игра не запускалась без HW T&L»
конфигурация становится понятной.
Ещё лучше записывать:
Параметр
emulate HW TnL caps
Причина
игра блокировала запуск из-за отсутствия HW T&L
Результат
запускается
Побочный эффект
FPS ниже примерно на ...
Так постепенно формируется собственная база совместимости.
После того как рабочая конфигурация найдена, можно сохранить BAT-файл.
Это удобно, если для игры используется отдельный профиль.
Например:
Game_3DA.bat
Теперь запуск выполняется через сохранённую конфигурацию.
Это особенно полезно для нескольких игр, каждая из которых требует собственного набора параметров.
Нельзя сразу считать работу законченной.
Нужно проверить:
Работает ли интерфейс?
Не зависает ли переход в игру?
Есть ли текстуры?
Работает ли освещение?
Не появились ли артефакты?
Работают ли отражения, прозрачность и частицы?
Не происходит ли постепенное падение производительности?
Некоторые проблемы появляются только после длительной работы:
утечки памяти;
накопление ресурсов;
переполнение VRAM;
проблемы с текстурами;
нестабильность драйвера;
случайные вылеты.
Поэтому конфигурацию нельзя считать полностью рабочей только потому, что она прошла главное меню.
Если игра падает:
Выключить все 3D-Analyze настройки.
Включить только одну необходимую функцию.
Запустить.
Включить:
debug logging
Сравнить результат.
Если падение появляется после конкретной настройки, причина становится значительно понятнее.
Иногда проблема находится за пределами возможностей программы.
Например:
игра использует неподдерживаемый API;
необходим полноценный wrapper;
ошибка находится в Windows;
повреждены файлы игры;
драйвер работает неправильно;
проблема связана с защитой диска;
используется неподдерживаемая DLL;
игра требует старую версию DirectX runtime.
В таких случаях 3D-Analyze не должна быть единственным инструментом.
сли проблема заключается в старом графическом API и необходимо перенести его работу на современную графическую систему, имеет смысл рассматривать dgVoodoo.
Схема уже другая:
старое приложение → старый API → wrapper → современный API → современный GPU
Это особенно полезно для старых:
DirectDraw;
Direct3D;
Glide;
приложений.
3D-Analyze при этом может оказаться ненужной.
DxWnd полезнее, когда основная проблема связана с:
fullscreen;
оконным режимом;
разрешением;
масштабированием;
таймингами;
поведением старого Windows-приложения.
Если игра отлично рендерит изображение, но неправильно работает в современном оконном менеджере, сначала логичнее искать решение в этом направлении.
Это тоже важное правило.
Если игра:
запускается;
нормально отображается;
работает стабильно;
имеет приемлемый FPS;
то 3D-Analyze не нужна.
Не следует изменять работающую систему без причины.
| Проблема | Первый тест | Следующий шаг |
|---|---|---|
| Требуется HW T&L | emulate HW TnL caps | force SW TnL |
| Неправильный Pixel Shader | emulate pixel shader caps | ограничение/пропуск версии |
| PS 2.0 вызывает ошибку | skip pixel shader version 2.0 | проверить альтернативный shader path |
| Нет DXT-текстур | emulate DXT textures | проверить память и артефакты |
| Проблемы Cube Map | emulate cube maps | проверить отражения |
| Проблемы глубины | force zbuffer | Z/W-Buffer и глубина |
| Проблемы Stencil | вариант with stencil | disable two sided stencil |
| Низкий FPS | counters | диагностические тесты |
| Проблемы текстур | disable textures | force small texture |
| Проблемы fullscreen | force windowed mode | проверить частоту |
| Мерцание Voodoo | VOODOO flicker fix | проверить драйвер |
| Kyro Z/Stencil | KYRO zbuffer/stencil fix | проверить формат буфера |
| Mafia shadows | Mafia shadow fix | проверить драйвер |
| Игра неправильно определяет GPU | VendorID/DeviceID | только после проверки реальных capabilities |
| Неизвестный вылет | debug logging | анализ журнала |
Для большинства старых 3D-игр можно использовать такую схему:
Проблема запуска
→ проверить HW T&L
→ проверить Pixel Shader
→ проверить CAP bits
→ проверить текстурные форматы
→ проверить Z/Stencil
→ проверить DeviceID
→ применить Game Fix.
Низкий FPS
→ counters
→ определить геометрическую нагрузку
→ проверить T&L
→ disable textures
→ force small texture
→ проверить shader load
→ проверить VRAM
→ сравнить CPU/GPU нагрузку.
Не следует начинать с случайного отключения графических функций.
Артефакты
→ текстуры?
→ шейдеры?
→ Z-Buffer?
→ Stencil?
→ освещение?
→ Cube Map?
→ формат текстур?
→ драйвер?
→ wrapper?
Только после определения конкретной категории выбирается соответствующая функция.
Вылет
→ отключить все настройки
→ воспроизвести
→ включить одну функцию
→ воспроизвести
→ включить debug logging
→ сравнить
→ исключить конфликт DLL
→ проверить wrapper
→ проверить разрядность DLL.
Если одновременно используются несколько инструментов, каждый из них должен иметь свою конкретную задачу.
Например:
DxWnd
управляет оконным режимом.
3D-Analyze
изменяет Direct3D capabilities.
dgVoodoo
переводит старый графический API на другой backend.
Это намного правильнее, чем использовать три программы только потому, что «так советуют для старой игры».
Если игра требует сразу несколько исправлений:
чистая игра.
одна функция 3D-Analyze.
проверка.
следующая функция.
добавляется wrapper, если он действительно нужен.
повторяется полный тест.
Это медленнее, чем включить всё сразу, но зато позволяет получить понятную и воспроизводимую конфигурацию.
Конфигурация считается рабочей, если:
игра запускается;
проходит меню;
загружается игровой уровень;
основные эффекты работают;
нет постоянных артефактов;
нет случайных вылетов;
производительность приемлема;
конфигурация воспроизводится после повторного запуска.
Просто факт запуска EXE недостаточен.
Для любой неизвестной игры можно использовать следующий алгоритм:
1. Запустить без 3D-Analyze.
2. Записать ошибку или визуальную проблему.
3. Определить API.
4. Определить требования игры.
5. Найти соответствующий параметр.
6. Включить только его.
7. Проверить запуск.
8. Проверить полноценную 3D-сцену.
9. Проверить изображение.
10. Проверить FPS.
11. При необходимости включить диагностику.
12. При необходимости добавить вторую настройку.
13. Проверить конфликт DLL.
14. Только после получения стабильной конфигурации сохранить её в BAT/профиль.
Практическая работа с 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 — это не «улучшатели графики», а средства эмуляции, подмены возможностей видеокарты и обхода проблем совместимости. Поэтому включать их без причины не следует.
| Пункт | Назначение | Когда включать | Чем помогает / возможный эффект |
|---|---|---|---|
| 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 | Позволяет проверить, связана ли ошибка с полноэкранным режимом |
| Пункт | Назначение | Когда включать | Чем помогает |
|---|---|---|---|
| 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;Сначала определяется конкретная проблема, затем выбирается одна соответствующая операция.
Это одна из наиболее важных групп 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
| Пункт | Назначение | Когда включать | Чем помогает |
|---|---|---|---|
| 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 — специализированные исправления.
Их не нужно включать наугад на любой видеокарте.
Эти пункты отличаются от обычной эмуляции 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 |
Если название пункта не относится к вашей игре — его не включают.
| Пункт | Назначение | Когда включать | Чем помогает |
|---|---|---|---|
| performance logging | Записывает диагностическую информацию о производительности OpenGL | При исследовании FPS и нагрузки | Позволяет анализировать работу OpenGL-пути |
| counters | Включает счётчики OpenGL-операций | Для диагностики производительности | Помогает определить характер нагрузки |
| force small texture (32×32) | Принудительно уменьшает размер текстур | Для диагностики текстурной нагрузки | Может уменьшить использование памяти, но портит качество |
| disable textures | Отключает текстуры | Для проверки, связана ли проблема с текстурированием | Позволяет быстро локализовать текстурную проблему |
| disable rendering | Отключает рендеринг | Для диагностического сравнения производительности | Показывает, насколько сильно сцена нагружает графический путь |
| force anisotropic filtering | Принудительно включает анизотропную фильтрацию | Если игра неправильно работает с фильтрацией | Улучшает качество дальних/наклонных поверхностей |
Эти параметры относятся именно к OpenGL-пути.
Если игра использует Direct3D, соответствующие DirectX-настройки являются более релевантными.
| Пункт | Назначение | Когда включать | Чем помогает |
|---|---|---|---|
| save programs to file (shaders.out) | Сохраняет используемые OpenGL fragment/vertex programs | При исследовании shader-проблем | Позволяет определить, какие программы передаются драйверу |
Этот параметр особенно полезен при разработке собственного решения совместимости или исследовании старой игры.
Для обычного пользователя включать его постоянно нет необходимости.
| Назначение | Когда включать | Чем помогает |
|---|---|---|
| Переводит отображение геометрии в каркасный режим | Для исследования геометрии и рендеринга | Позволяет увидеть полигоны без обычного заполнения |
Особенно полезно для:
| Назначение | Когда включать | Чем помогает |
|---|---|---|
Записывает отладочную информацию в log.out | При вылетах, ошибках и неизвестном поведении | Помогает установить, на каком этапе возникает проблема |
Это один из наиболее полезных инструментов при сложной диагностике.
debug logging.log.out.В нижней части интерфейса имеется числовое поле, связанное с диагностическими режимами:
countdown for disable rendering / disable state switches
| Назначение | Когда использовать | Чем помогает |
|---|---|---|
| Задаёт задержку/счётчик перед применением соответствующего диагностического режима | При исследовании поведения игры во время запуска или создания сцены | Позволяет применять отключение не сразу, а после определённого количества операций |
Это диагностический инструмент, а не обычная настройка производительности.
Для стандартного запуска игры его лучше не менять.
В интерфейсе находятся два режима:
Они предназначены для экспериментов с устранением рывков и микрофризов.
| Режим | Назначение | Когда пробовать | Возможный результат |
|---|---|---|---|
| quality mode | Режим устранения stuttering с приоритетом качества/корректности | Если игра дёргается, но обычный FPS нормальный | Может сделать вывод изображения более стабильным |
| performance mode | Режим с приоритетом производительности | Если важнее плавность и минимизация задержек | Может уменьшить рывки, но поведение зависит от игры |
Stuttering ≠ низкий FPS.
Игра может показывать 60 FPS и при этом ощущаться дёрганой.
Поэтому эти параметры следует тестировать отдельно от обычных средств ускорения.
В интерфейсе доступны:
| Пункт | Назначение | Когда включать | Чем помогает |
|---|---|---|---|
| method 1 | Использует первый вариант диагностики/обработки Mipmap | При проблемах с Mipmap | Помогает проверить источник артефактов |
| method 2 | Использует второй вариант обработки Mipmap | Если первый метод не помогает | Позволяет сравнить альтернативный путь |
Mipmap — это набор уменьшенных копий текстуры.
Например:
1024×1024
↓
512×512
↓
256×256
↓
128×128
↓
64×64
↓
32×32
При удалении объекта игра может использовать меньшую копию.
Если Mipmap работает неправильно, текстуры могут:
В нижней части программы находятся четыре варианта.
| Пункт | Назначение | Когда включать | Чем помогает |
|---|---|---|---|
| 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 | Может исправить проблемы с тенями и другими эффектами |
Не нужно выбирать вариант случайно.
Используем такую последовательность:
16 bit without stencil
↓
если проблема сохраняется
16 bit with stencil
↓
если проблема сохраняется
24 bit without stencil
↓
если игре нужны Stencil-эффекты
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 | Может исправить проблемы с тенями и другими эффектами |
В интерфейсе:
Это специальный режим, предназначенный для изменения того, как определённые графические данные выглядят для приложения/драйвера.
| Пункт | Назначение | Когда включать | Чем помогает |
|---|---|---|---|
| shaders | Применяет Anti-Detect к shader-программам | При подозрении, что конкретный shader/его содержимое вызывает несовместимость | Может обходить специфические проверки или проблемы |
| textures | Применяет Anti-Detect к текстурным данным | При специфических проблемах, связанных с распознаванием текстур | Может обходить отдельные проверки/ошибки |
Anti-Detect — не обычная настройка совместимости.
Её следует использовать только после того, как обычные способы диагностики уже проверены.
В нижней части окна присутствуют поля:
Они позволяют задавать идентификатор производителя и устройства.
Также программа показывает примеры идентификаторов для известных видеокарт.
| Параметр | Назначение | Когда использовать | Результат |
|---|---|---|---|
| VendorID | Идентификатор производителя GPU | Если игра неправильно выбирает графический режим по производителю | Игра может выбрать другой vendor-specific путь |
| DeviceID | Идентификатор конкретного GPU | Если игра проверяет модель видеокарты | Может заставить игру выбрать другой hardware profile |
VendorID отвечает прежде всего на вопрос:
«К какому производителю относится устройство?»
DeviceID:
«Какая конкретно модель/семейство устройства определяется?»
Например, подмена DeviceID может заставить игру считать видеокарту другой моделью.
Но это не добавляет реального железа.
Если игра после подмены начинает использовать функцию, которой GPU физически не обладает, возможны:
| Пункт | Назначение |
|---|---|
| SELECT | Выбор EXE-файла игры или приложения |
Через него указывается исполняемый файл, который должен запускаться через 3D-Analyze.
Обычно выбирается главный:
game.exe
| Пункт | Назначение |
|---|---|
| RUN | Запускает выбранное приложение с установленными параметрами 3D-Analyze |
Это основной способ проверить текущую конфигурацию.
Если после изменения настройки игра не работает, необходимо вернуться к предыдущему профилю и сравнить изменения.
| Пункт | Назначение | Когда использовать |
|---|---|---|
| Save batch file! | Сохраняет команду/конфигурацию запуска в BAT-файл | После получения рабочей конфигурации |
Это особенно удобно, если для разных игр используются разные настройки.
| Проблема | Что проверять в первую очередь |
|---|---|
| Игра требует HW T&L | emulate HW TnL caps |
| HW T&L отсутствует физически | emulate HW TnL caps + force SW TnL |
| Неправильно определяется Pixel Shader | emulate pixel shader caps |
| Игра ломается на PS 2.0 | skip pixel shader version 2.0 |
| Нужен старый shader path | force max pixel shader version 1.1/1.4 |
| Проблемы с текстурами | disable textures |
| Проблемы с большими текстурами | force small texture |
| DXT работает неправильно | emulate DXT textures |
| Нет Cube Mapping | emulate cube maps |
| Проблемы с глубиной | force zbuffer / Z-Buffer settings |
| Проблемы с тенями | Z-Buffer + Stencil |
| Мерцание Voodoo | VOODOO flicker fix |
| Проблемы Kyro | KYRO zbuffer/stencil fix |
| Проблемы Mafia с тенями | Mafia shadow fix |
| Проблемы fullscreen | force windowed mode |
| Неизвестный вылет | debug logging |
| Нужно изучить shaders | save shaders to file |
| Нужно изучить OpenGL programs | save programs to file |
| Непонятный FPS | counters + performance logging |
| Проблемы геометрии | force wireframe mode |
| Микрофризы | Remove Stuttering |
| Игра неправильно определяет GPU | VendorID / DeviceID |
| Проблемы с конкретной игрой | соответствующий Game/Demo Fix |
Использовать чаще всего:
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;Использовать только для соответствующих случаев:
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;Использовать только после диагностики:
VendorID;DeviceID;Anti-Detect;force SW TnL;Можно пользоваться следующим правилом:
Не запускается
→ 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
→ драйвер
Все пункты 3D-Analyze можно условно разделить на четыре типа:
1. Диагностические
Показывают, где находится проблема.
2. Эмуляционные
Создают для игры видимость отсутствующей возможности.
3. Принудительные
Заставляют Direct3D использовать конкретный режим.
4. Специализированные
Исправляют конкретную игру, видеокарту или известный дефект.
Поэтому одинаково относиться ко всем галочкам нельзя.
Например:
counters
— инструмент диагностики.
emulate HW TnL caps
— инструмент совместимости.
force SW TnL
— принудительный режим обработки.
Mafia shadow fix
— специализированный исправляющий профиль.
Именно это различие является ключом к правильному использованию 3D-Analyze.
Сначала диагностируем. Потом определяем причину. Затем включаем одну соответствующую функцию. После проверки сохраняем рабочую конфигурацию.
Если включить все пункты одновременно, программа перестаёт быть инструментом диагностики: невозможно определить, какая именно настройка помогла или вызвала новую ошибку.