Работа с текстурами
PrimeXT поддерживает два формата текстур, и у каждого формата есть свои особенности при использовании.
.tga
- Формат, поддерживающий прозрачность. Не поддерживает сжатие, и по этой причине может быть удобен в разработке, в случаях когда критически важно отсутствие артефактов сжатия на текстуре. Но также из-за отсутствия сжатия, текстуры будут занимать много места на диске..dds
- Формат, поддерживающий прозрачность и сжатие с потерями. При неправильной настройке возможно появление артефактов сжатия на текстуре при экспортировании (обычно в виде квадратов). Требует определенных знаний для работы, но при должном навыке позволяет добиться хорошего сжатия практически без видимых потерь качества. При использовании этого формата, рекомендуется хранить исходники текстур в каком-либо формате без сжатия, или с поддержкой сжатия без потерь (например.png
или.tga
), так как при сжатии текстуры теряется информация, и текстура теряет свой первоначальный вид, что может вызвать проблемы при дальнейшем её редактировании.
Начало работы
В папке с модом находится папка с названием textures
, там должны храниться все текстуры для карты и моделей. Для текстур моделей внутри этой папки находится другая, с названией этой модели, и в ней находятся текстуры этой модели.
PrimeXT использует метод подмены текстур из .wad
на текстуры из этой папки, аналогично делается для моделей и текстур внутри нее.
Например, имеется модель ak47_v1.mdl
с текстурами a1.bmp
и b2.bmp
. Для того чтобы подключить текстуры высокого разрешения для этой модели, нужно скопировать скопировать их по пути textures/ak47_v1/a1.dds
и textures/ak47_v1/b2.dds
.
Аналогично делается и для текстур на брашах, за исключением того, что их нужно копировать непосредственно в папку textures
.
- Название текстуры высокого разрешения должно полностью совпадать по названию таковой в WAD файле, или внутри модели
- На данный момент, текстуры высокого разрешения не работают для спрайтов
- Размеры текстуры в WAD файле желательно делать не больше 256х256, иначе при подмене может уехать развертка на брашах
- Максимальный размер внешних текстур - 4096х4096 пикселей
- PrimeXT использует декали высокого разрешения и имеет иные методы их реализации, отличающиеся от использованных в GoldSrc
- Текстуры должны в цветовом пространстве sRGB, не требуется применять обратную гамма-коррекцию для перевода текстур в линейное пространство - рендер делает это автоматически в шейдере. Если вы не поняли, что это значит, можете не заморачиваться и просто сохранять текстуры в вашем фоторедактор е как обычно - практически всегда там при сохранении изображение переводится в sRGB пространство.
Использование формата DDS
Работа с этим форматом имеет некоторые особенности, которые критически важно учитывать, чтобы добиться хорошего результата. Данный формат файла поддерживает множество разных алгоритов сжатия, итоговый размер текстуры и её визуальное качество полностью зависит от используемого формата сжатия. Для работы с DDS можно использовать, например, Paint.NET, NVIDIA Texture Tools Exporter, или плагин для Photoshop.
- Обязательно включить генерацию mip maps во избежание артефактов в виде шума на текстурах, видимого только в игре.
- При использовании плагина для Photoshop: для генерации mip maps использовать box filter
- Размер текстуры должен соответствовать степени двойки (512х512, 2048x2048, и т.п.), во избежание потенциальных проблем.
- Для большинства случаев рекомендуется использовать формат сжатия BC7, хотя существуют и другие форматы, которые могут быть более подходящими в той или иной ситуации. Доступные форматы сжатия описаны в таблице ниже.
Формат | Уровень сжатия | Качество | Описание |
---|---|---|---|
BC1 (S3TC, DXT1) | 4 bpp | Низкое | RGB + 1-bit alpha |
BC2 (DXT2, DXT3) | 8 bpp | Низкое | RGB + 4-bit alpha |
BC3 (DXT4, DXT5) | 8 bpp | Низкое | RGBA |
BC5 (ATI2, 3Dc) | 8 bpp | Среднее | RG (подходит для карт нормалей) |
BC6H | 8 bpp | Высокое | RGB (в формате FP16, подходит для HDR текстур) |
BC7 | 8 bpp | Высокое | RGBA, высококачественная замена форматов BC1-BC5 |
Normal Mapping
Технология, используемая для имитации неровностей поверхности на объекте или его дополнительной детализации без модификации его геометрии. В PrimeXT может использоваться для моделей, брашей и декалей.
Чтобы использовать карту нормалей, нужно к основной текстуре создать дополнительную и после названия текстуры сделать суффикс _norm
Пример: Основная текстура под названием wall1.dds
, дополнительная текстура с нормалями для нее будет называться wall1_norm.dds
При использовании карт нормалей следует учитывать, что PrimeXT принимает на вход карты нормалей в DirectX-style - этот подход также используется в 3DS Max, CryEngine, Substance Painter, UE4. При необходимости карту нормалей можно преобразовать из OpenGL-style в DirectX-style, инвертировав в ней зелёный канал.
Parallax Mapping
Технология, позволяющая изобразить объёмный рельеф на текстуре, не затрагивая при этом геометрию объекта. В PrimeXT может применяться для брашей, моделей и декалей.
Чтобы использовать карту нормалей, нужно к основной текстуре создать карту высот и после названия текстуры сделать суффикс _hmap
. Также нужно в папке scripts
создать файл с любым названием и расширением .mat
и внутри сделать описание материала текстуры, в данном случае это нужно для регулировки степени рельефности.
Пример: Основная текстура wall1.dds
, дополнительная текстура с картой высот для нее будет называться wall1_hmap.dds
. Файл описания материала будет на зываться, к примеру, wall_tex.mat
. В этом файле пишем:
"wall1"
{
"reliefScale" "0.01"
}
reliefScale
это параметр, отвечающий за степень рельефности, чем больше значение - тем более явно выражен рельеф.
Перед проверкой убедитесь, что у вас включен параллакс-маппинг: введите в консоли gl_parallax 1 (упрощенный алгоритм параллакса) или gl_parallax 2 (parallax occlusion mapping).
Gloss/PBR текстура
Данная текстура хранит в себе различные параметры, которые влияют на итоговый внешний вид объекта, на котором использована эта текстура. Более подробное описание этих параметров приведено ниже. В связи с наличием в PrimeXT двух принципиально разных, несовместимых между собой алгоритмов освещения: классический (r_lighting_brdf 0) и физически корректный (r_lighting_brdf 1), подход к использованию данного типа текстур будет отличаться в зависимости от того, какой алгоритм освещения вы планируете использовать.
Для данного типа текстур можно использовать с уффикс _gloss
или _pbr
Пример: Основная текстура wall1.dds
, дополнительная текстура блеска для нее будет называться wall1_gloss.dds
Классический алгоритм освещения
В случае использования классического алгоритма освещения, текстура определяет гладкость поверхности, и тем самым влияет на насыщенность зеркальных бликов. Для задания интенсивности зеркальных бликов используется красный канал текстуры: максимальная яркость обозначает максимальную силу блика, а нулевой уровень обозначает полное отсутствие бликов. Остальные каналы текстуры не используются.