Оптимизация 3Dfx Voodoo Graphics



Улучшение поизводительности

Правильная настройка установок переменных в конфигурационном файле управляет работой чипсета Voodoo Graphics. Существует несколько команд, с помощью которых заметно можно улучшить производительность в GLQuake.

Вот, в качестве примера, часть файла autoexec.bat для Windows'95, относящаяся к настройкам Voodoo.

  • REM GLQUAKE STURTUP FILE
  • SET SST_SCREENREFRESH=75
  • SET SST_VIDEO_24BPP=1
  • SET SST_GRXCLK=57
  • SET FX_GLIDE_NO_SPLASH=1
  • SET SST_FASTMEM=1
  • SET SST_FASTPCIRD=1
  • SET SST_SWAP_EN_WAIT_ON_VSYNC=0
  • SET FX_GLIDE_SWAPINTERVAL=0

Да, если Вы используете эти установки переменных в файле запуска самой игрушки, то не забудте добавить строку:
"D:\GAMES\QUAKE\GLQUAKE %1 %2 %3 %4 %5 %6 %7 %8 %9"

Самая важная из перечисленных строк переменных, влияющих на увеличение скорости, это строка SET FX_GLIDE_SWAPINTERVAL=0, наличие которой уже само по себе увеличивает производительность на дополнительных 5-10 fps.

Строка переменной SET SST_GRXCLK=57 устанавливает тактовую частоту внутренней шины 3Dfx платы. Я не рекомендую изменять эту цифру на большую, чем 57, тем более что на производительность эта переменная влияет мало.

 

Пользователям NT:

Заметим, что под NT будут запускаться только игры, поддерживающие API GLide. Последняя версия GLide — 2.43. Установка не должна вызвать затруднений, а после перезагрузки будут прекрасно работать GlQuake и Quake2. Кстати, это касается плат на Voodoo от всех производителей. Т.е. искать специальные драйверы, например для Monster3D, на сайте производителя нет необходимости.

На самом деле уже есть бета версия 2.5, но официально она не распространяется.

Последняя версию драйверов DirectX для 3Dfx Voodoo Graphics — 2.15.

Теперь, когда драйверы для 3Dfx доступны и для NT 4.0, Вы также можете самостоятельно устанавливать значения этих переменных. Для этого надо просто войти в раздел Control Panel и открыть подраздел System. Далее, кликните на закладку Environment в панеле управления System и переведите свое внимание на нижнею часть.

Там, в строке, находящейся внизу просто введите имя переменной и ее значение, которое Вы хотите установить; при этом не нужно использовать "SET" или "=", после чего нажмите мышкой [SET]. Вы должны увидеть введенную вами строку в разделе "пременные пользователя" (User Variables). Эти переменные будут влиять на работу всех программ под WindowsNТ, использующих процессор 3Dfx.

Ниже я привожу список ВСЕХ известных переменных процессора 3Dfx. НЕ ДЕЛАЙТЕ установку недокументированных переменных. Лишь те переменные, которые я показал в списке из моеко конфигурационного файла дают наибольший эффект от применения, увеличивая производительность.

Замечание:
Названия переменных чувствительны к размеру букв. Используйте только заглавное написание!

SST ПеременнаяЗначениеОписание
SST_ARCADE  
SST_BACKPORCH  
SST_BGAMMAот 0 до 2.5Настройка градаций яркости голубого цвета
SST_BOARDS Позволяет использовать несколько Voodoo плат в одной ситстеме, при этом несколько подключенных к ним мониторов будут показывать одну общую картинку, как будто имеется один большой экран.
SST_DEBUGDAC1Отображает информацию о работе АЦП
SST_DIMENSIONS  
SST_DUALHEAD1Разрешает использование двух мониторв
SST_FASTMEM1Быстрое конфигурирование оперативной памяти, разрешает использование тактов для EDO памяти, т.е. работа памяти ускоряется
SST_FASTPCIRD1Включение опции быстрого чтения через шину PCI, установка задержек по времени для процессов чтения через шину PCI (Voodoo -> PCI).
SST_FBICFG Настройка процессора, управляющего буфером кадра, на прямое конфигурирование текстурных регистров. Установка типов закраски по методу Гуро и т.д.
SST_FBIMEM_SIZE Объем установленной памяти буфера кадра. Управление автоматическим процессом определения объемов памяти через API Glide.
SST_FT_CLK_DEL Установка значения скорости, с которой может осуществлятся доступ к памяти буфера кадра.
SST_GAMMAот 0.5 до 2.5Настройка общей градации яркости цветов
SST_GGAMMAот 0 до 2.5Настройка градаций яркости зеленого цвета
SST_GRXCLKпо умолчанию 50Тактовая частота графического процессора в MHz.
SST_HSYNC1Разрешает горизонтальную синхронизацию.
SST_IGNORE_INIT_REGISTERS1Разрешает инициализацию чипсета Voodoo, тогда, когда Voodoo уже проинициализирован. Очень удобно для инициализации сброса параметров настройки Voodoo.
SST_IGNORE_INIT_VIDEO  
SST_IGNORE_SLI_CHECK Отключение автоматической проверки наличия дополнительного (зависимого) процессора буфера кадра, удваивающего скорость.
SST_INITDEBUG Разрешает отображение информации о работе glide драйверов под DOS или Win95 DOS оболочке.
SST_INITDEBUG_FILE При разрешенном отображении, записывает информацию о работе glide в файл.
SST_MEMINFO1Разрешает использование буфера памяти (FIFO — Fist In Fist Out), ускоряющего работу
SST_MEMINFO_ENTRIES  
SST_MEMINFO_HWM  
SST_MEMINFO_LFB1Запись в буфер кадра осуществляется через буфер памяти, размер буфера на запись/чтение памяти для прямого буфера кадров
SST_MEMINFO_LWM  
SST_MEMINFO_TEX1Запись текстур осуществляется через буфер памяти, размер буфера памяти на запись/чтение для процессора текстур
SST_MEMOFFSET Определение адреса буфера кадров вне основной карты адресов
SST_NODEVICEINFO  
SST_NOSHUTDOWN Запрещает сброс инициализации процессора Voodoo после завершения программы. Очень удобно для spawns.
SST_PCIFIFO_LWM  
SST_PFT_CLK_DEL Определение (предварительное) значения скорости, с которой возможен доступ к буферу кадра
SST_PTF0_CLK_DEL Предварительное определение скорости доступа к памяти текстурного процессора в 0 тактов задержки
SST_PTF1_CLK_DEL Предварительное определение скорости доступа к памяти текстурного процессора в 1 такт задержки
SST_PTF2_CLK_DEL Предварительное определение скорости доступа к памяти текстурного процессора в 2 такта задержки
SST_RGAMMAот 0 до 2.5Настройка градаций яркости красного цвета
SST_SCREENREFRESHпо умолчанию 60Установка частоты вертикальной развертки (60, 72, 75, 85, 120 Hz) Замечание: при использовании значений частоты развертки больших, чем 60 Гц необходимо добавить переменную SST_VIDEO-24BPP=1, что бы имелась возможность осуществлять регулировку яркости изображения. Чтобы установить частоту развертки 120 Гц, необходимо использовать переменную FX_GLIDE_SWAPI_NTERVAL=0, но при этом будет понижен уровень выходного сигнала.
SST_SCREENREZ Установка разрешения виртуального экрана
SST_SLIDETECT0Интерполяция сканируемых линий, определение наличия вторичной подсистемы на процессоре voodoo.
SST_SLIM_PVOUT_CLKDEL Установка тактов задержки на предварительную обработку пиксела для буфера кадра первичного процессора
SST_SLIM_VIN_CLKDEL Такты задержки на входной видеосигнал для первичной системы (для работы с внешним синхронизатором/генератором тактовой частоты)
SST_SLIM_VOUT_CLKDEL Установка тактов задержки на обработку пиксела для первичной системы. Можно использовать только при наличии нескольких FBI и TMU.
SST_SLIS_PVOUT_CLKDEL  
SST_SLIS_VIN_CLKDEL Установка задержек для тактов видеосигнала на входе вторичной подсистемы (для синхронизации с первичной платой).
SST_SLIS_VOUT_CLKDEL Установка тактов задержки на обработку пиксела для вторичной системы. Можно использовать только, если имеется несколько FBI (Frame Buffer Interface — интерфейс буфера кадров) и множество TMU (Texture Mapping Unit — элемент накладываемых текстур). SST_SLIS_PVOUT_CLKDEL — установка тактов задержки на предварительную обработку пиксела для вторичной системы.
SST_SLOWPCIWR Установка дополнительных тактов задержек для шины PCI при записи в память платы на Voodoo и для операций Ввода/Вывода. (PCI -> Voodoo).
SST_SWAP_EN_WAIT_ON_VSYNC0Отключение синхронизации по вертикальной развертке монитора, в результате чего обновление экрана происходит до того, как картинка полностью выводится на мониторе.
SST_TEXMAP_DISABLE Запрещение наложения текстур
SST_TF_FIFO_THRESH Операции Чтения/Записи Центрального процессора/буфера кадра в/из память текстур осуществляется через fifo-буфер, причем процессор текстур в это же время может осуществлять другие операции над этой памятью. Установка такого порога на чтение/запись для fifo-буфера текстур сообщает интерфейсу glide, что этот FIFO-буфер нуждается в обслуживании и может принимать больше данных как из буфера кадра, так и от CPU.
SST_TF0_CLK_DEL Установка скорости доступа к памяти в 0 тактов задержки для процессора текстур.
SST_TF1_CLK_DEL Установка скорости доступа к памяти в 1 такт задержки для процессора текстур.
SST_TF2_CLK_DEL Установка скорости доступа к памяти в 2 такта задержки для процессора текстур.
SST_TILESINX  
SST_TMUCFG Процессор текстур напрямую определяет конфигурацию регистров, отвечающих за побитовое кодирование изображения. Напрямую определяет тип текстур, оверлеи (перпекрытия) и т.д.
SST_TMUMEM  
SST_TMUMEM_SIZE Размер установленной памяти для хранения текстурных карт. Не принимая во внимание автоопределение, осуществляемое glide.
SST_TREX0INIT0 Установка процессором текстур напрмую значения первичного регистра кодирования изображения на 0 (glide изменит значения этого и остальных регистров в зависимости от других переменных окружения).
SST_TREX0INIT1 Установка процессором текстур напрмую значения вторичного инициализируещего регистра кодирования изображения на 0
SST_TREX1INIT0 Установка процессором текстур напрмую значения первичного инициализируещего регистра кодирования изображения на 1
SST_TREX1INIT1 Установка процессором текстур напрмую значения вторичного инициализируещего регистра кодирования изображения на 1
SST_TREX2INIT0 Установка процессором текстур напрмую значения первичного инициализируещего регистра кодирования изображения на 2
SST_TREX2INIT1 Установка процессором текстур напрмую значения вторичного инициализируещего регистра кодирования изображения на 2
SST_TRIPLE_BUFFER Если программой не поддерживается Z- или Alpha-буферизация, тогда используется вспомогательный буфер, в качестве неявного скоростного буфера!
SST_VFIFO_THRESH Определение граничной точки в буфере кадра к которой должен осуществляться доступ при передаче данных из шины PCI в плату на Voodoo прежде, чем начнется обслуживание FIFO-буфера.
SST_VGA_PASS1Разрешение сквозного прохождения VGA сигнала
SST_VIDCLK2X  
SST_VIDEO_24BPP1Разрешение использования 24-битного видео режима
SST_VIDEO_CLEARCOLOR Заливка цветом во вторичном буфере осуществляется во время смены видеостраниц (а также SST_VIDEO_NOCLEAR=0).
SST_VIDEO_DISABLE Запрещение потока данных через видео ЦАП. Синхронизация может сохранятся до тех пор, пока активны переменные синхронизации.
SST_VIDEO_FILTER_DISABLE Запрещение плавного преобразования 24 битного цвета в 16 битный. Читай — запрещение сглаживания.
SST_VIDEO_FILTER_THRESHOLD установка порога в 16 бит для пиксела, к которому применяется сглаживание по отношению к поверхности соседнего пиксела.
SST_VIDEO_NOCLEAR Запрет очистки вторичного буфера во время смены текущей видеостраницы
SST_VIN_CLKDEL Установка тактов задержки на входящий видеосигнал при наличии одной платы на Voodoo.
SST_VOUT_CLKDEL Установка тактов задержки на выходящий видеосигнал при наличии одной платы на Voodoo.
SST_VSYNC0Запрещение синхронизации вертикальной развертки, может увеличить производительность

FX ПеременнаяЗначениеОписание
FX_CPU  
FX_GLIDE_BOUNDS_CHECK  
FX_GLIDE_LWM  
FX_GLIDE_NO_SPLASH1Отключение отображения анимированного логотипа 3dfx при переключении из 2d в 3d режим.
FX_GLIDE_SHAMELESS_PLUG1/0Разрешение отображения неподвижного логотипа 3dfx при инициализации glide.
FX_GLIDE_SNAPSHOT  
FX_GLIDE_SST2  
FX_GLIDE_SWAPINTERVAL0/1/2/30 = выключено. Если значение 0, то производится обмен содержимого вторичного буфера с првичным, так быстро, как это только возможно. Если значение 1, то обмен содержимым осуществляется синхронизированно по вертикальной развертке, если значение 2, то обмен содержимым происходит при каждой второй синхронизации по вертикальной развертке, соответственно при 3, обмен содержимым происходит при каждой третьей синхронизации по вертикальной развертке

Что такое разгон и как/зачем надо сделать это с моей 3Dfx платой?

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

На вашей плате с чипсетом 3Dfx имеется память, которая используется для буферизации и хранения текстур. Кстати, этот параметр является причиной отличий между первыми тремя появившимися на рынке построенных на чипсете 3Dfx плат. Акселератор Flash3d имеет 40ns память, Monster имеет 45ns, а Righteous имеет 50ns память. Чем меньше значения чисел, тем на большей частоте может происходить внутренний обмен данными в вашей плате без искажения текстур.

Обычно, плата по умолчанию работает на внутренней шинной частоте 50 Mhz, однако большинство адаптеров можно безбоязненно разогнать до 57 MHz.
Платы Righteous в свое время имели массу проблем, связанных именно с памятью; если во время игры в GLQuake у вас на экране замирает изображение при разгоне до 57 Mhz, то у вас бракованная плата.

Что бы изменить значение шинной частоты надо добавить строку SET SST_GRXCLK= в файлы autoexec.bat или GLQuake.bat. Более подробно об этом написано выше.

Одним из неприятных побочных явлений, в следствии разгона, может стать увеличение нагрева чипов, в результате может сократиться жизненный цикл вашей платы. Однако, разгон до частоты 57 Mhz, судя по всему, является безопасным верхним порогом разгона для чипсета 3Dfx. Если же обеспечить нормальное охлаждение, то частоту можно поднять до значений, больших 60 Mhz.

Вот интересный пример:*
Первый Diamond Monster 3D rev. А, имел память 50 ns и, по отзывам из Интернета эта модель лучше всего поддавалась разгону. Конкретный экземпляр у меня позволяет разгоняться да 67 Mhz (при охлаждении платы с помощью дополнительного вентилятора) без потери качества изображения.

Можно ли запустить на плате с 3Dfx GLQuake с разрешением 800x600?

Пренебрегая фактом, что Вы можете запустить GLQuake в окне, с параметрами размеров 800 пикселов по высоте и 600 пикселов по ширине, на видеоакселераторе, сделанном на Voodoo процессоре, Вы не сможете играть в разрешении 800x600.

Все платы на чипсете Voodoo от 3Dfx имеют 4MB памяти, за исключением Canopus Pure3D, которая имеет 6 Mb; из имеющейся паямяти 2 Mb используются для хранения текстур, а длругие 2 Mb для буфера кадра. На плате Pure3D дополнительные 2 Mb памяти используются для хранения текстур, что, при условии поддержки такого объема памяти играми, должно обеспечить лучшее качество изображения без ущерба производительности. В качестве Z-буфера, который используется в GLQuake, используется память, отведенная для буфера кадра, что делает невозможным поддержание картой разрешения 800x600.

Платы на процессоре Voodoo Rush, в которых поддерживается до 6MB памяти имею возможность запускать Quake в режиме 800x600, хотя идти игра будет медленнее, чем в режиме 640x480.

На самом деле в GLQuake все-таки можно поиграть в разрешении 800х600, но только на очень дорогих ($600-800) платах с чипсетом 3Dfx Voodoo, например на карте Obsidian 100SB (например модель 4440) от компании Quantum3D. Это экзотика даже для империалистов :-) — две почти полных Voodoo-системы, работающие в режиме SLI: 2 Pixelfx, 4 TMU (Texture Mapping Unit), 20 Mb EDO DRAM (4 Mb для буфера кадра, 16 Mb под текстуры). Кстати, эта плата может легко конкурировать с адаптерами на Voodoo2, но только не по цене.

Можно ли запустить GLQuake на Voodoo под NT?

Конечно. Все что для этого нужно, это установить библиотеку GLIDE, для чего нужно войти в систему с правами администратора, и воспользоваться последней версией OpenGL минипорт драйвера из директории, в которой находится Quake. По крайней мере GLQuake GLQWCL и Hexen II под NT запускаются без проблем. Только одна вещь отказывается работать — DirectSound, причем установка SP3 не решает проблемы.




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

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

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

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