Страница 1 из 11
Форум » Мастерская » Разработка аддонов и карт » Материалы и текстуры » Сложные материалы
Сложные материалы
Среда, 22.03.2017, 12:11
1
Пользователь
Сложные материалы: (источник мануалы BIS для Арма)

Super shader.   Это сложный материал, который содержит все наши стандартные технологии шейдеров (такие как нормальные, зеркальные, эмбиентные, детализированные и т.д.). Кроме того, он присутствует на входной карте Френеля, определяющей каким будет отражение Shader Glass. 
BIS рекомендует использовать его вообще для всех обычных объектов, которые используются в Arma3.  Для для тех объектов которые по какой-то причине не могут использовать Super Shader рекомендуется использовать процедурно-генерированные текстуры.
Материал активируется ссылкой на типы шейдеров.


Код
PixelShaderID="Super";
VertexShaderID="Super";

и содержит стадии (этапы) Stage, описываемые ниже. Если мы хотим, чтобы какой-либо этап был проигнорирован, то указываем значения по-умолчанию: (так же приведены в описании).

Stage 1: Карта нормалей.
Карта использует текстуры нормалей с суффиксами _NO или _NOHQ. Они нужны чтобы симулировать(подделать) освещение для ударов, вмятин, шума низкополигональных поверхностей, придать им реалистичность и объемность. Значения R, G, B для каждого пикселя на карте соответствуют углу X, Y, Z нормали к поверхности в этом пикселе.
Значение по-умолчанию:

Код
texture="#(argb,8,8,3)color(0.5,0.5,1,1)";

Stage2:  DetailTexture: Карта деталей (Карта подробностей)
Карты подробностей добавляют к диффузионной карте (собственно основной текстуре модели) внутри одной стадии, другую повторяющуюся текстуру, чтобы достичь большей тонкости для близкого обзора на больших поверхностях, что было бы слишком сложным для покрытия с увеличенным разрешением текстуры. Т.е. детали которые видны вблизи. DetailTexture  используются текстуры с суффиксом _DT 
имеют текстуру, сохраненную внутри альфа-канала (компоненты RGB игнорируются, когда эта текстура преобразуется из TGA в PAA). Из-за особенностей способа позволяющего смешать карту деталей с диффузной картой, необходимо чтобы средний цвет текстуры для карты деталей составлял 50% серого цвета. В противном случае, это может привести к заметному изменению яркости текстуры (MipMapping применяется с расстоянием и углом).

Значение по-умолчанию: 

Код
texture="#(argb,8,8,3)color(0.5,0.5,0.5,0)";


Stage3: Macro map (суффикс текстуры _MC) Макрокарта, Макротекстура..
Макро текстура содержит альтернативные данные для базовой текстуры. Смешивание базовой текстуры и макрокарты для каждой конкретной точки выбирается альфа-каналом макрокарты. (1 означает только макроструктуру, 0 означает только базовую текстуру).
RGB вычисляется как LERP с базовой картой. Детальная карта применяется к концу (последней), поэтому накладывает оригинал и карту макроса.

Код
texture="#(argb,8,8,3)color(0,0,0,0)";


Stage4: AmbientShadow map:  Карта окружающих теней (суффикс текстуры _AS).
Эмбиентная теневая текстура содержит информацию о том, «сколько окружающего света находится в заданном месте». Белый цвет (1) означает полное окружающее освещение. 0 означает отсутствие.
Фактически, эта (RBG) текстура использует только один канал, в своих интересах, - это канал G (зеленый) - поэтому важно, чтобы  в этом канале информация была правильная. Остальные каналы не имеют значения, и в них можно скопировать содержимое зеленого.

Значение по умолчанию:

Код
texture="#(argb,8,8,3)color(0,1,1,1)";

Stage5: SpecularMap  Зеркальная карта типа _SMDI (суффикс _SM не поддерживается). Карты _SMDI представляют собой оптимизированные по битовой глубине зеркальные карты.
Каждый канал в 24-битной (RGB) SMDI-карте имеет другую функцию.
R - должен быть установлен в 1 для всех пикселей;
G -канал функционирует, как зеркальная карта;
B - канал функционирует, как зеркальная карта мощности; (также известная как карта глянца, где черный означает очень грубую [матовую] поверхность, а белые гладкую [блестящую] поверхность).

Stage6: Fresnel function: Так называемая функция Френеля. Функция Френеля вводится как процедурная текстура в следующем виде:


Код
texture = "# (ai, 64,64,1) fresnel (N, K)".

Где N и K являются входами для уравнения Френеля, которое основывается на их основах и для данного угла может определять, насколько отражает под заданным углом.
N и K являются постоянными для данного материала и известны для отдельных элементов. Следующая таблица включает сводку основных материалов и их настройки. В таблице показаны значения отдельных волномеров, которые можно было найти. Видимый спектр составляет приблизительно 400 мкм-800 мкм.



Больше информации можно найти тут... 

Stage7:  Environmental map. Карта окружения. Эта технология позволяет отображать окружающую среду в отражении на той или иной поверхности. Отраженная окружающая среда статична, и только изменяет освещение в соответствии с временем суток. Какая текстура, такая и окружающая среда. В нашем случае она называется Environmental map и отображает проекцию полусферы на плоскость.
 
Пример материала с SuperShader-ом, в собранном виде:

Код
ambient[]={1.000000,1.000000,1.000000,1.000000};
diffuse[]={1.000000,1.000000,1.000000,1.000000};
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
emmisive[]={0.000000,0.000000,0.000000,1.000000};
specular[]={0.700000,0.700000,0.700000,1.000000};
specularPower=180.000000;
PixelShaderID="Super";
VertexShaderID="Super";

class Stage1
{
   texture="ca\weapons\data\aimpoint_NOHQ.paa";
   uvSource="tex";
};

class Stage2
{
   texture="#(argb,8,8,3)color(0.5,0.5,0.5,0)";   uvSource="tex";
};

class Stage3
{
       texture="#(argb,8,8,3)color(0,0,0,0)";
   uvSource="tex";
};

class Stage4
{
   texture="#(argb,8,8,3)color(0,1,1,1)";
   uvSource="tex";
};

class Stage5
{
   texture="ca\weapons\data\aimpoint_SMDI.paa";
   uvSource="tex";
};

class Stage6
{
   texture="#(ai,64,64,1)fresnel(1.3,7)";
   uvSource="none";
};

class Stage7
{
   texture="ca\air\data\env_co.paa";
   uvSource="none";
};
Прикрепления: 4775011.png(81Kb)

 
Форум » Мастерская » Разработка аддонов и карт » Материалы и текстуры » Сложные материалы
Страница 1 из 11
Поиск:


Правила чата
Мини-чат
+Мини-чат
0