1.1. Общая информация

данный файл представляет собой описание дополнительных параметров для
каждой отдельной текстуры. Если таковое описание пропущено, то параметры
выставляются по умолчанию. Данный файл не предусматривает указание
каких-либо путей к дополнительным текстурам, например нормалмапам
или глоссмапам. Эти пути формируются автоматически из имени диффузной
текстуры и определенного суффикса. Для нормалмап это суффикс _norm, для
глоссмап это суффикс _gloss. Пример:

В ваде лежит текстура ps_freska_6. Путь до её аналога высокого разрешения
будет выглядеть так:

textures/ps_freska_6.tga

путь до её нормалмапы будет выглядеть вот так:

textures/ps_freska_6_norm.tga

и по аналогии, путь до глоссмапы будет выглядеть вот так:

textures/ps_freska_6_gloss.tga

это касается всех текстур, относящихся к уровню и брашевым моделям.
Для студиомоделей путь удлиняется, в него включена папка, являющася названием самой модели.
Пример:

в модели soldier_alpha.mdl есть текстура alpha_body.bmp. Путь до её аналога высокого разрешения
будет выглядеть так:

textures/soldier_alpha/alpha_body.tga

Как видно из примера, расширение .bmp опускается и не участвует в формировании пути. Нормалмапа
и глоссмапа лежат по тому же пути с соответствующими суффиксами (см. пример с мировыми текстурами).
Таким образом данные пути не надо прописывать в matdesc.txt и движок подхватывает текстуры автоматически,
как это было и в первой параное.

1.2. Описание синтаксиса matdesc.txt

Дополнительные настройки, описанные в matdesc.txt представляют собой набор
стандартных блоков примерно следующего вида

"texturename"
{
"param1" "1"
"param2" "5"
"param3" "100"
}

где texturename - это имя нашей текстуры, в случае если речь идёт о текстурах для мира и modelname/tetxurename,
в случае если это описание текстуры для студиомодели. Пример:

"ps_freska6"
{
"param1" "1"
"param2" "5"
"param3" "100"
}

Пример для студиомодели:

"soldier_alpha/alpha_body"
{
"param1" "1"
"param2" "5"
"param3" "100"
}

Пример для декали:

"decals/blood1"
{
"param1" "1"
"param2" "5"
"param3" "100"
}

Допустимые параметры являются списком ключевых слов, определённых заранее, которые влияют на визуальное отображение текстур.
Некоторые параметры имеют силу только при комбинации определённых факторов, например требуют наличия нормалмапы для своей
правильной работы. Подробное описание требований указано применительно к каждому параметру.
PS. Наличие кавычек вокруг каждого параметра не является обязательным и остается на усмотрение маппера.

1.3. Описание ключевых слов matdesc.txt

glossExp - степень блеска отражающих поверхностей для спекуляр-программы. Предпочтительно должен являться степенью двойки, однако
некратные значения тоже допускаются. Диапазон допустимых значений 0.0 - 256.0. Чем выше значение - тем меньше и четче будет пятно
спекуляра. При низких значениях (меньше 8) блеск равномерно заливает всю поверхность и становится тусклым. Для правильной работы
требуется наличие текстуры с суффиксом _gloss и текстуры с суффиксом _norm. Без нормалмапы блеск становится физически менее
правильным и стремится осветить всю поверхность, независимо от значения параметра glossExp.

RefractScale - степень преломления для полупрозрачных поверхностей. Не работает на непрозрачных поверхностях. Для правильной работы
требуется текстура с суффиксом _norm. Без нее работа невозможна. Принимает значения в диапазоне 0.0 - 1.0. Как правило, уже значения
0.1 достаточно, чтобы получить весьма сильный видимый эффект. Так же данный параметр работает на зеркалах, позволяя создавать "кривые зеркала"
и на лужах.

ReflectScale - степень отражения поверхности, для создания эффекта рефлективного бампа. Для правильной работы данного параметра необходимо
соблюдение следующих условий:
1. Поскольку отражения статичные, они берут информацию из кубических карт, которые расставляются маппером вручную по уровню, при помощи
энтити env_cubemap. Данная энтить имеет только два параметра - origin и size. Параметр size задаёт реальное разрешение кубемапы в текселях.
Так например значение 256 создаёт для данной энтити кубемапу с размером стороны 256. Чем выше разрешение, тем чётче отражения, но и больше
расход памяти. Кубмапы создаются автоматически при старте уровня, если они вдруг изменились, однако левел-дизайнер может заблокировать
их обновление при помощи параметра командной строки -noautorebuildcubemaps или форсировать их обновление при помощи консольной команды
buildcubemaps. Совет: старайтесь расставлять кубемапы на примерно одинаковых расстояниях друг от друга. Максимальное кол-во кубемап на уровне - 1024.
2. консольная переменная gl_bump должна быть установлена в значение 2. Также параметр применим к лужам, для которых не требуются кубемапы.

Параметр ReflectScale принимает значения в диапазоне 0.0 - 1.0 и работает на любых поверхностях, как прозрачных, так и непрозрачных. В первом
случае добавляется возможность смешивать отражение и преломление в требуемой пропорции.

fresnelExp - коэффициент Френнеля для отражающей поверхности. Как следует из названия, работает в паре с ReflectScale. Диапазон допустимых
значений 0.0 - 256.0. Чем ниже значение, тем чётче проступает отражение и тем шире угол его обзора. При высоких отражениях напоминает
обычный спекуляр-эффект. Так же работает и для водных поверхностей и луж.

AberrationScale - коэффициент "расслоения" световых лучей для преломляющей поверхности. Создаёт эффект цветной окантовки на границах преломляющих
областей. Принимает значения в диапазоне 0.0 - 1.0. Для правильной работы требуются те же условия, что и для RefractScale. Может работать как в
паре с ним, так и отдельно.

POMScale - (только для декалей). Степень объема декали (обычно вогнутой) для Parallax Occlusion mapping. Допускаются параметры от 0.1 до 50.
Так же для правильной работы необходима ч\б текстура с суффиксом _height. Если ваша декаль выгнулась не в ту сторону - просто инвертируйте
текстуру в любом графическом редакторе.

POMSteps - (только для декалей). Кол-во проходов для более корректного параллакс-эффекта. Чем больше шагов, тем реалистичнее выглядит декаль.
Допустимый диапазон от 1 до 100. При больших значениях и при большом кол-ве декалей возможно падение FPS. Переменная gl_parallax должна быть
установлена в значение 2. (значение 1 - это быстрый параллакс низкого качества).

glossModel - определяет тип используемой модели для рассчёта спекуляра. Доступно четыре ключевых слова.
"none" - совсем отключить глосс, даже при наличии глосс-мапы
"simple" - простой глосс, который не учитывает неровности нормалмапы
"blinn" - расчёт блика по half-angle. Подобный тип глосса использовался в Doom3.
"phong" - наиболее близкий к реальному расчёт, идеален для поверхностей, типа кафельной плитки.

1.4. Специальные текстуры.

Специальные текстуры создают некоторые дополнительные эффекты, которые не могут быть описаны при помощи matdesc.txt. Такие текстуры определяются
движком по ключевым словам, которые являются частью их имени (как правило начальной).

mirror - создаёт реалтайм зеркало.
reflect - то же, что и mirror
movie - текстура для рендеринга видео-роликов. Работает в паре с энтитей func_screenmovie.
water или '!' - создаёт водяную поверхность.