Здравствуйте. Вы находитесь на сайте Unreal Level. Данный ресурс посвящен редакторам карт игр серии Unreal, UT и Gears of War. Основная цель сайта , помочь всем желающим освоить любой из редакторов вышеперечисленных серий. Наибольшим приоритетом на этом сайте, обладает редактор UnrealED for Unreal Engine 3 и редактор движка Unreal Engine 3.5, входящий в комплект разработки UDK, поскольку это наиболее актуальная на сегодняшний день технология.
Texture Support and Settings
автор: FACH | 18 Августа 2010 | Просмотров: 3987

Автор: Дэвид Грин
Перевод: ScarsSoul
Оригинал: Texture Support and Settings


Разрешение текстур

 

Unreal Engine 3 поддерживает текстуры разрешением от 1x1 до 4096x4096.

Современные видеоадаптеры и игровые консоли поддерживают различные разрешения текстур от 1x1 до 2048x2048 и выше до 8192x8192. Самое высокое разрешение текстуры, поддерживаемое видеокартой, изменяется в зависимости от изготовителя и модели. Объем доступной текстурной памяти также зависит от аппаратного обеспечения.

 

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

 

 

Предел разрешений текстур поддерживаемых движком

 

Unreal Engine 3, по умолчанию, ограничивает максимальное число MIP текстур* до 13,

что позволяет эффективно использовать наибольшую поддерживаемую текстуру 4096 (4096x4096 -> 1x1 составляет 13 MIP уровней). У этого есть побочный эффект, импортированная текстура разрешением 8192 будет рендериться только до mip13 - 4096. Константа MAX_TEXTURE_MIP_COUNT, которая в исходных файлах движка (engine source files) по умолчанию равна 13, может быть изменена на 14, для поддержки 8192 текстур. Эта константа определена в следующих исходных файлах (по состоянию на QAMar09, не забудьте проверить на других версиях QA, что пользователям UDK, конечно, сильно поможет (прим. пер.)):

 

SrcD3D10DrvSrcD3D10Device.cpp

SrcD3D9DrvSrcD3D9Device.cpp

SrcEngineIncRHI.h

SrcEngineIncUnTex.h

SrcEngineSrcRHI.cpp

SrcEngineSrcTextureCube.cpp

 

* MIP-текстурирование (MIP mapping) — метод текстурирования, использующий несколько копий одной текстуры с разной детализацией.

 

 

Сжатие текстур и требуемая память

 

DXT - это сжатие с потерями, основанные на упаковке пикселей в блоки 4x4 с цветовой палитрой и интерполяцией цвета. В результате 8:1 DXT1 и 4:1 DXT5 имеют постоянный размер сжатых файлов. Поскольку видео и текстурная память зависит от платформы и аппаратного обеспечения, необходимо найти баланс между разрешением текстур и использованием ресурсов. В следующей таблице приведены требования памяти для текстур DXT1 и DXT5 с различным разрешением и полным MIPS (до 1x1 - mip0).

 

Размер текстур равен:

 

SizeDXT1 = R* R/2

SizeDXT5 = R* R.

 

Для MIP текстур:

 

SizeDXT1 = R* R/2 + SizePR.

SizeDXT5 = R* R + SizePR..

 

Где, R – разрешение текстур, SizePR – размер текстуры предыдущего разрешения.

 

Обратите внимание, что текстуры DXT5 требуют почти в два раза больше памяти, чем DXT1.

 

Texture Support and Settings

 

Формат текстур карт нормалей

 

См. статью NormalMapFormats.

 

Конфигурация движка и настройки TextureGroup.

 

Минимум и максимум LOD (mip), поддерживаемый для конкретных TextureGroups игры, определены количественно в файлах конфигурации движка.

Настроить эти значения можно в файле конфигурации, который находиться по адресу UDKEngineConfigBaseEngine.ini, в разделе [SystemSettings]. Для UDKGame этот файл можно найти по адресу UDKUDKGameConfigDefaultEngineUDKBase.ini (UTEngine.ini).

 

Следует отметить, что существуют независимые установки TextureGroup для Unreal Editor и для игры. Эти две группы находится соответственно в разделах [SystemSettingsEditor] и [SystemSettings] файла конфигурации.

 

Настройки TextureGroup в файле BaseEngine.ini будет выглядеть следующим образом. Отметьте, что старые версии QA, возможно, не включают свойства MinMagFilter и MipFilter для каждого параметра.

 

TEXTUREGROUP_World=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_WorldNormalMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_WorldSpecular=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_Character=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_CharacterNormalMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_CharacterSpecular=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_Weapon=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_WeaponNormalMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_WeaponSpecular=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_Vehicle=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_VehicleNormalMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_VehicleSpecular=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_Cinematic=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_Effects=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=linear,MipFilter=point)

TEXTUREGROUP_EffectsNotFiltered=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_Skybox=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_UI=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_LightAndShadowMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

TEXTUREGROUP_RenderTarget=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

 

Параметры настройки TextureGroup в UDKUDKGameConfigDefaultEngineUDKBase.ini (UTEngine.ini), как правило, выглядит примерно так. Отметьте, что параметры настройки LOD обычно устанавливаются в пределы диапазона, требуемого игровым дизайном и целевой платформы.

 

TEXTUREGROUP_World=(MinLODSize=256,MaxLODSize=1024,LODBias=1)

TEXTUREGROUP_WorldNormalMap=(MinLODSize=256,MaxLODSize=1024,LODBias=1)

TEXTUREGROUP_WorldSpecular=(MinLODSize=256,MaxLODSize=1024,LODBias=1)

TEXTUREGROUP_Character=(MinLODSize=256,MaxLODSize=1024,LODBias=0)

TEXTUREGROUP_CharacterNormalMap=(MinLODSize=256,MaxLODSize=1024,LODBias=0)

TEXTUREGROUP_CharacterSpecular=(MinLODSize=256,MaxLODSize=1024,LODBias=0)

TEXTUREGROUP_Weapon=(MinLODSize=256,MaxLODSize=1024,LODBias=0)

TEXTUREGROUP_WeaponNormalMap=(MinLODSize=256,MaxLODSize=1024,LODBias=0)

TEXTUREGROUP_WeaponSpecular=(MinLODSize=256,MaxLODSize=1024,LODBias=0)

TEXTUREGROUP_Vehicle=(MinLODSize=512,MaxLODSize=1024,LODBias=0)

TEXTUREGROUP_VehicleNormalMap=(MinLODSize=512,MaxLODSize=1024,LODBias=0)

TEXTUREGROUP_VehicleSpecular=(MinLODSize=512,MaxLODSize=1024,LODBias=0)

TEXTUREGROUP_Cinematic=(MinLODSize=256,MaxLODSize=4096,LODBias=0)

TEXTUREGROUP_Effects=(MinLODSize=128,MaxLODSize=512,LODBias=1)

TEXTUREGROUP_Skybox=(MinLODSize=512,MaxLODSize=2048,LODBias=0)

TEXTUREGROUP_UI=(MinLODSize=512,MaxLODSize=1024,LODBias=1)

TEXTUREGROUP_LightAndShadowMap=(MinLODSize=512,MaxLODSize=4096,LODBias=0)

TEXTUREGROUP_RenderTarget=(MinLODSize=1,MaxLODSize=4096,LODBias=0)

 

PC AppCompat Buckets

 

AppCompat используется для переопределения различных SystemSettings основывается на объективных и эмпирических данных, собранных при запуске.  Когда AppCompat включен (только для РС), система измеряет возможности машины и переписывает значения DefaultEngineUDKBase.ini предварительно заданными значениями из одного из 5 "buckets". См. DefaultCompat.ini в UDKGame, как пример использования.

 

AppCompat предназначен только для одной проверки, когда игра (не редактор) запускается в первый раз, AppCompat обнаруживает это, проверяя существование раздела [AppCompat] в [game] Engine.ini, который содержит предварительно вычисленные оценки для этого компьютера. Если AppCompat уже применялся один раз, он больше не будет работать, что бы не переписывать каждый раз настройки установленные пользователем.

 

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

 

Вы можете отключить AppCompat путем создания для игры пустого DefaultCompat.ini (см. пример в UDKGame), что заставляет инициализировать все “buckets” из [SystemSettings] в Engine.ini.

 

Свойства TEXTUREGROUP.

 

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

 

MinLODSize - минимальный mip размер, который будет отрендерен, указан в пикселях, в диапазоне 1 - 8192 (в степени двойки), должен быть меньше чем MaxLODSize.

 

MaxLODSize - максимальный mip размер, который будет отрендерен, указан в пикселях, в диапазоне 1 - 8192, должен быть больше чем MinLODSize.

 

LODBias – положительное или отрицательное значение, которое определяет смещение mip уровней перед передачей на рендер.

 

MinMagFilter - определяет тип фильтра текстуры, см. таблицу ниже.

 

MipFilter - определяет тип фильтра текстуры, см. таблицу ниже.


NumStreamedMips - число mips, которому позволяют быть подгруженным или выгруженным. Если у текстуры будет 10 mips, и NumStreamedMips 2, то только 2 самым высоким mips позволяется подгрузиться или выгрузиться. Поэтому будет 8-10 mips текстуры  в памяти в любой момент времени. При установке NumStreamedMips в 0 означает, что никакая mip текстура не будет загружена, используя эту группу LOD текстура всегда будет полностью загружаться. При установке NumStreamedMips в -1 значит, что все mips будут подгружаться или выгружаться (есть еще другие ограничения, которые применяются). NumStreamedMips – дополнительный параметр, принимаемый значение по умолчанию -1.


alt

TextureGroup, LODGroup и LODBias

 

Параметры TextureGroup и LODBias заданные в ini-файлах (файлах конфигурации), на ряду с параметрами LODGroup и LODBias заданными в Texture Properties (Свойства Текстуры), определяют окончательный набор MIP текстур для отдельных текстур.

 

Например, запись TextureGroup в DefaultEngineUDKBase.ini может выглядеть следующим образом:

 

TEXTUREGROUP_World=(MinLODSize=256,MaxLODSize=1024,LODBias=0)

 

Любые текстуры, назначенные в LOD группе TEXTUREGROUP_World, будут использовать эти параметры настройки, для определения диапазона MIP, который будет использоваться при рендеринге.

Дополнительный параметр LODBias в Texture Properties, работает совместно с LODBias заданным в ini-файле.

 

LODBias - смещение выбранного для рендера MIP уровня. LODBias рассчитывается в диапазоне Min/MaxLODSize. LODBias в Texture Properties добавляется к LODBias в TextureGroup, чтобы определить конечное используемое значение LODBias.

 

LODBias = 0 - основное (родное) разрешение текстуры. LODBias =1 - первым MIP вниз по текстуре, LODBias = 2 - вторым MIP вниз и т.д. Например, есть текстура 1024x1024 с LODBias = 1, как результат для рендера будет выбран MIP 512х512.

 

Значение LODBias указанное в Texture Properties, для каждой отдельной текстуры, может быть как положительным, так и отрицательным, так что оно может сместить заданный по умолчанию LODBias в TextureGroup повысив или понизив значение MIP.

 

Например, LODBias в Texture Properties = 0 и LODBias в TextureGroup = 0, конечное значение LODBias = 0.

LODBias в Texture Properties = 0 и LODBias в TextureGroup = 1, конечное значение LODBias = 1.

LODBias в Texture Properties = 1 и LODBias в TextureGroup = 1, конечное значение LODBias = 2.

LODBias в Texture Properties = 1 и LODBias в TextureGroup = -1, конечное значение LODBias = 0.

 

После окончательного расчета LODBias, MIP текстура проверяется на вхождение в диапазон Min/MaxLODSizeTextureGroup) и при необходимости корректируется. Таким образам, внося небольшие корректировки в ini-файл можно управлять Min/Max уровнями детализации LOD группы текстур (TextureGroup). К примеру, текстура 1024х1024 с LODBias = 1, использует MIP 512х512, если она находится в группе TEXTUREGROUP_World, то можно проверить входит ли она в диапазон Min/MaxLODSize, посмотрим выше - MinLODSize=256 и MaxLODSize=1024 – входит.

 

У каждой игры будут свои собственные настройки TextureGroup, художники и дизайнеры уровней должны знать о значениях MinLODSize и MaxLODSize для каждой группы. В противном случае это может повысить размер распространяемого дистрибутива игры, без увеличения качества рендеринга, к примеру – размер текстуры 2048, а MaxLODSize = 1024.

 

Свойства импорта текстур

 

Для 24 разрядных RGB текстур, при импорте ставьте галку CompressionNoAlpha - создастся DXT1 текстура.

Для 32 разрядных ARGB текстур, при импорте снимите галку CompressionNoAlpha - создастся DXT5 текстура.

 

Specular (Зеркальность) и Opacity (Непрозрачность) информацию, обычно, лучше всего помещать в альфа канал (Alpha Channel) 32-разрядной текстуры DXT5, вместо того, чтобы использовать две 24-разрядных текстуры DXT1. Хотя две DXT1 текстуры имеют почти тот же размер, что и одна DXT5, однако, в движке, DXT5 использует один TextureSampler, тогда как две текстуры DXT1 будут использовать два TextureSamplers. Видео адаптеры обычно имеют 16 TextureSamplers (SM3 и SM4).

Альфа-канал текстуры DXT5 также лучше подходит для хранения grayscale (градация серого) данных, поскольку не используется тот же самый стиль сжатия с потерями, как с RGB.

 

Будьте внимательны с выбором разрешения текстур и с настройками в TextureGroup.

 

Не забудьте выбрать соответствующие дополнительные настройки при импорте текстур, такие как выбор TC_NormalMap в CompressionSettings при импорте текстуры нормалей.

 

Texture Support and Settings

 

Окно свойств текстуры

 

Texture Properties (Свойства Текстуры) могут быть изменены для каждой импортированной текстуры, и позволяет менять такие настройки, как LODGroup  и LODBias.

Открыть окно Texture Properties можно или двойным кликом по текстуре в Generic Browser, или из контекстного меню текстуры.

 

Texture Support and Settings

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

Информация
Посетители, находящиеся в группе Гости, не могут оставлять Комментарии в данной новости...






При копировании материалов, активная ссылка на UNREAL-LEVEL.RU обязательна!
© 2008—2012, UNREAL-LEVEL.RU. Все права защищены.