Modding:Oblivion Graphics Extender (OBGE)

Материал из Tiarum
Перейти к: навигация, поиск
Oblivion Graphics Extender
45px-Scroll.png

автор: Timeslip, scanti, shadeMe, WrinklyNinja, vtastek и др.
редактор: Garin
ссылка на сайт: Timeslip`s Oblivion utilities and mods
ver: 2

Icon-Information.png Это статья-заготовка.
Вы поможете проекту, доработав и дополнив её. Не забывайте предварительно добавлять шаблон {{Edit}} в материалы над которыми работаете, чтобы не создавать конфликта правок.


Oblivion Graphics Extender (OBGE)


Источники информации:


OBGE - это плагин к расширителю скриптового языка Обливиона - (Oblivion Script Extender(OBSE)), созданный Timeslip, и добавляющий в игру Oblivion новые скриптовые функции для работы с графикой, подобные тем, которые предусматривал MGE (Morrowind Graphics Extender) для игры TES 3: Morrowind.

OBGE добавляет в игру поддержку полноэкранных шейдеров (fullscreen shaders) и дополнительных элементов HUD, обеспечивает информацией о видеопамяти и разрешении экрана, а также позволяет удалять содержащиеся в графической памяти игры текстуры HUD.

Примечание: HUD (Head-Up Display) - технология, которая разрабатывалась для визуализации отображения самолетов, аэропланов, автомобилей и т.п. Позже метод HUD стал использоваться для визуального представления информации в компьютерах и видеоиграх.

Состав OBGE

В настоящее время в версию OBGE входят следующие компоненты:

  • OBGEv2 Core Version 4 от 2.01.2011 (размер 2116 kb)- собственно, сам расширитель графики.
  • OBGEv2 Shaders Version 4.2 от 14.01.2011 (размер 425 kb)- опционный набор шейдеров.
  • OBGEv2 Godrays Sunglare Fix от 13.11.2010 (размер 1 кВ) - опция, исправленная текстура солнечного сияния, устанавливается, когда используется шейдер Godrays.

Несколько замечаний относительно возможностей OBGE

  • Данный проект намного менее масштабный, чем аналогичный, разработанный для игры TES 3: Morrowind - Morrowind Graphics Extender (MGE). MGE была написана спустя много лет после официального релиза игры, поэтому достижения в области компьютерных технологий означало, что у авторов для разработки MGE был большой запас производительности более мощных компьютеров и новые программные средства. Иначе обстоит дело с игрой Oblivion. Здесь даже новые мощные компьютеры, оснащенные современными графическими видеокартами, на максимальных графических настройках ощутимо тормозят. Так что возможности для улучшения графических красот в Обливионе в настоящий момент весьма скромны.
  • Игра TES 3: Morrowind использует DirectX v8.0, который достаточно близок к DirectX v9.0 и позволял довольно легко использовать новые возможности, предоставляемые новым DirectX. Обливион изначально использует DirectX v9.0, но переход на DirectX v10 станет гораздо более сложным из-за больших различий между ними.
  • OBGE v2 не является окончательной версией. Возможны баги, поэтому перед установкой внимательно прочтите файл readme. Кроме того, установка OBGE сильно отличается от обычной установки плагинов и требует для нормальной работы определенных условий и предустановленных программ и обновлений.

Особенности установки OBGE v2

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


Документация

Описание функций в подразделе "Документация" основано на содержащемся в ридми-файле описании.


HUD (Head-Up Display)


CreateHUDElement


Синтаксис:
(HUDID:int) CreateHUDElement===
Создает новый элемент HUD

SetHUDElementTexture


Синтаксис:
SetHUDElementTexture HUDID:int TexID:int
Устанавливает текстуру элемента HUD

SetHUDElementColor


Синтаксис:
SetHUDElementColor HUDID:int Red:float Green:float Blue:float
Устанавливает цвет элемента HUD
  • Красный (Red), зеленый (Green) и синий (Blue) компоненты могут принимать значения между 0 и 1.
  • В конечном итоге на это значение умножается цветность текстуры.

SetHUDElementPosition


Синтаксис:
SetHUDElementPosition HUDID:int Xpos:float Ypos:float
Устанавливает позицию элемента HUD в соответствии с указанными координатами Xpos и Ypos.

SetHUDElementScale


Синтаксис:
SetHUDElementScale HUDID:int Xscale:float Yscale:float
Устанавливает масштаб элемента HUD

SetHUDElementRotation


Синтаксис:
SetHUDElementRotation HUDID:int Radians?:float
Устанавливает вращение элемента HUD

Misc (Разное)


GetAvailableGraphicsMemory


Синтаксис:
(Memory:int) GetAvailableGraphicsMemory
Возвращает приблизительное количество оставшейся свободной графической памяти, в МВ.

GetScreenWidth


Синтаксис:
(Width:int) GetScreenWidth
Возвращает X-разрешение экрана графической памяти в бэк-буфере (backbuffer).
Прим. Garin: В терминологии DirectX буфер - это определенный фрагмент оперативной памяти, в котором хранится некоторая информация (например, графическая). В данном случае BackBuffer – это место в памяти видеоадаптера, отведенное под данные, которые будут выводиться на экран по требованию. При создании устройства размеры и формат подобного буфера (или нескольких) указывается заранее. Но в любом случае хотя-бы один BackBuffer будет иметься в наличии. Весь процесс “отрисовки” (рендеринга) происходит именно в BackBuffer`е, и только затем, когда все будет готово, содержимое переносится на экран по соответствующему требованию.

GetScreenHeight


Синтаксис:
(Height:int) GetScreenHeight
Возвращает Y-разрешение экрана графической памяти в бэк-буфере (backbuffer).

ForceGraphicsReset


Синтаксис:
ForceGraphicsReset
Сбрасывает графическое устройство так же, как и нажатие на Alt+Tab.

PurgeManagedTextures


Синтаксис:
PurgeManagedTextures
Выгружает управляющие ресурсы из памяти VRAM.

Функции для работы с шейдерами (Shaders)


LoadShader


Синтаксис:
(ShaderID:int) LoadShader Path:string
Загружает файл шейдерного эффекта (должен иметь формат *.fx).

ApplyFullscreenShader


Синтаксис:
ApplyFullscreenShader ShaderID:int AffectsHUD:bool
Подключает полноэкранный шейдер (fullscreen shader) к Обливиону. Второй параметр на HUD может влиять или не влиять в зависимости от шейдера (в большинстве случаев влиять не должен).
Для влияния на такие HUD, например, как компас или бар здоровья игрока, для параметра AffectsHUD следует установить "1", в противном случае - 0.

RemoveFullscreenShader


Синтаксис:
RemoveFullscreenShader ShaderID:int
Удаляет полноэкранный шейдер ShaderID из Обливиона.

SetShaderInt


Синтаксис:
SetShaderInt ShaderID:int Variable:string Value:int
Устнавливает целочисленную переменную Value даляет в полноэкранном шейдере.

SetShaderFloat


Синтаксис:
SetShaderFloat ShaderID:int Variable:string Value:float
Устанавливает вещественную переменную Value в полноэкранном шейдере.

SetShaderVector


Синтаксис:
SetShaderVector ShaderID:int Variable:string Value:float Value:float Value:float Value:float
Устанавливает массив из четырех вещественных переменных Value в полноэкранном шейдере.

SetShaderTexture


Синтаксис:
SetShaderTexture ShaderID:int Variable:string TexID:int
Уставливает переменную текстуры в полноэкранном шейдере

Функции для работы с текстурами (Textures)


LoadTexture


Синтаксис:
(TexID:int) LoadTexture Path:string DontModifyFile:bool
Загружает текстуру для использования в шейдерах или в элементах HUD.
  • Если параметр DontModifyFile установлен в "0" (false), то, в зависимости от возможностей установленной у игрока графической карты, OBGE сможет автоматически изменять размер или формат текстуры, содержащейся в файле, если этот параметр слишком высок.
  • Если параметр DontModifyFile равен "1" (истина) и вызов осуществляется на компьютере с картой, которая размер/формат текстуры не поддерживает, то такой вызов функции будет неудачным. В этом случае функция вернет отрицательное значение.

FreeTexture


Синтаксис:
FreeTexture TexID:int
Освобождает память, которую занимает OBGE-текстура.
Сразу после вызова указанного параметра TexID, его ID становится "неправильным" и не должен вызываться в других функциях.

Ссылки