Difference between revisions of "Material File Format"
From Ciliz|W4
(→Hints) |
(Marked this version for translation) |
||
Line 1: | Line 1: | ||
== Scope == | == Scope == | ||
<translate> | <translate> | ||
+ | <!--T:1--> | ||
Материал является частью [[W4 Engine Material System]]. Значения параметров шейдера, которые будут использоваться по-умолчанию для всех инстансов этого материала, а так же указания для рендера (блендинг) и текстуры (враппинг и фильтрация) могут быть заданы в файле материала (.mat). | Материал является частью [[W4 Engine Material System]]. Значения параметров шейдера, которые будут использоваться по-умолчанию для всех инстансов этого материала, а так же указания для рендера (блендинг) и текстуры (враппинг и фильтрация) могут быть заданы в файле материала (.mat). | ||
</translate> | </translate> | ||
Line 7: | Line 8: | ||
=== File Structure === | === File Structure === | ||
<translate> | <translate> | ||
+ | <!--T:2--> | ||
Пример файла .mat: | Пример файла .mat: | ||
</translate> | </translate> | ||
Line 37: | Line 39: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<translate> | <translate> | ||
+ | <!--T:3--> | ||
Следующие значения являются обязательными: | Следующие значения являются обязательными: | ||
* vertexFile | * vertexFile | ||
Line 45: | Line 48: | ||
=== Hints === | === Hints === | ||
<translate> | <translate> | ||
+ | <!--T:4--> | ||
* Чтобы не задавать одни и те же параметры из кода, можно в файле материала задать значения по умолчанию для любого параметра. Они будут выставляться для каждого нового MatInstance. Поддерживаются следующие типы параметров: INT, FLOAT, BOOL, VEC2, VEC3, VEC4, TEXTURE и СUBEMAP. | * Чтобы не задавать одни и те же параметры из кода, можно в файле материала задать значения по умолчанию для любого параметра. Они будут выставляться для каждого нового MatInstance. Поддерживаются следующие типы параметров: INT, FLOAT, BOOL, VEC2, VEC3, VEC4, TEXTURE и СUBEMAP. | ||
</translate> | </translate> | ||
<translate> | <translate> | ||
+ | <!--T:5--> | ||
* По умолчанию прозрачность у материала выключена. Её можно включить двумя способами: | * По умолчанию прозрачность у материала выключена. Её можно включить двумя способами: | ||
</translate> | </translate> | ||
<translate> | <translate> | ||
+ | <!--T:6--> | ||
# Установить значение с ключом blending в значение true. В этом случае для материала выставятся функции SRC_ALPHA для результата шейдера и ONE_MINUS_SRC_ALPHA для фона. | # Установить значение с ключом blending в значение true. В этом случае для материала выставятся функции SRC_ALPHA для результата шейдера и ONE_MINUS_SRC_ALPHA для фона. | ||
</translate> | </translate> | ||
<translate> | <translate> | ||
+ | <!--T:7--> | ||
# Задать запись с ключом blending, содержащую значения src и dst соответственно. Возможные варианты значений: ZERO, ONE, SRC_COLOR, ONE_MINUS_SRC_COLOR, DST_COLOR, ONE_MINUS_DST_COLOR, SRC_ALPHA, ONE_MINUS_SRC_ALPHA, DST_ALPHA, ONE_MINUS_DST_ALPHA, CONSTANT_COLOR, ONE_MINUS_CONSTANT_COLOR, CONSTANT_ALPHA, ONE_MINUS_CONSTANT_ALPHA, SRC_ALPHA_SATURATE. | # Задать запись с ключом blending, содержащую значения src и dst соответственно. Возможные варианты значений: ZERO, ONE, SRC_COLOR, ONE_MINUS_SRC_COLOR, DST_COLOR, ONE_MINUS_DST_COLOR, SRC_ALPHA, ONE_MINUS_SRC_ALPHA, DST_ALPHA, ONE_MINUS_DST_ALPHA, CONSTANT_COLOR, ONE_MINUS_CONSTANT_COLOR, CONSTANT_ALPHA, ONE_MINUS_CONSTANT_ALPHA, SRC_ALPHA_SATURATE. | ||
</translate> | </translate> | ||
<translate> | <translate> | ||
+ | <!--T:8--> | ||
* Запись для типов TEXTURE и CUBEMAP состоит из следующих пар ключ-значение: | * Запись для типов TEXTURE и CUBEMAP состоит из следующих пар ключ-значение: | ||
</translate> | </translate> | ||
<translate> | <translate> | ||
+ | <!--T:9--> | ||
# type - TEXTURE или CUBEMAP . | # type - TEXTURE или CUBEMAP . | ||
</translate> | </translate> | ||
<translate> | <translate> | ||
+ | <!--T:10--> | ||
# data - описание источника данных. Им может быть как файл (с ключами path и type=file), так и генератор вкомпилированный в движок (с ключами generator, type=generator и params (параметры генератора)). На момент написания статьи доступен только один генератор с параметром типа Vec4 (регистр именно такой, т.к. это тип параметра генератора (Variant), а не параметра материала) для создания текстуры одного цвета - "[default] color". Для типа CUBEMAP data содержит 6 источников данных, обозначаемых цифрами от 0 до 6 (соответственно X+, X-, Y+, Y-, Z+, Z-) ; | # data - описание источника данных. Им может быть как файл (с ключами path и type=file), так и генератор вкомпилированный в движок (с ключами generator, type=generator и params (параметры генератора)). На момент написания статьи доступен только один генератор с параметром типа Vec4 (регистр именно такой, т.к. это тип параметра генератора (Variant), а не параметра материала) для создания текстуры одного цвета - "[default] color". Для типа CUBEMAP data содержит 6 источников данных, обозначаемых цифрами от 0 до 6 (соответственно X+, X-, Y+, Y-, Z+, Z-) ; | ||
</translate> | </translate> | ||
<translate> | <translate> | ||
+ | <!--T:11--> | ||
# Опциональное поле sWrapping для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате S . | # Опциональное поле sWrapping для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате S . | ||
</translate> | </translate> | ||
<translate> | <translate> | ||
+ | <!--T:12--> | ||
# Опциональное поле tWrapping для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате T . | # Опциональное поле tWrapping для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате T . | ||
</translate> | </translate> | ||
<translate> | <translate> | ||
+ | <!--T:13--> | ||
# Опциональное поле filtering для задания режима фильтрации текстуры (Level0 - Level3). | # Опциональное поле filtering для задания режима фильтрации текстуры (Level0 - Level3). | ||
</translate> | </translate> |
Revision as of 15:51, 3 June 2020
Scope
Материал является частью W4 Engine Material System. Значения параметров шейдера, которые будут использоваться по-умолчанию для всех инстансов этого материала, а так же указания для рендера (блендинг) и текстуры (враппинг и фильтрация) могут быть заданы в файле материала (.mat).
Detailed Description
File Structure
Пример файла .mat:
{
"vertexFile" : "<path from the project root directory to the vertex shader file (.vs)>",
"fragmentFile" : "<path from the project root directory to the fragment shader file(.fs)>",
["blending" : <enable blending (true/false)>,]
["blending" : {"src" : "<blending function for the result of your shader>", "dst" : "<blending function for background>"},]
"params" : {
"texture0": {"type": "TEXTURE", "data": {"path": "<path from the project root directory to the texture file>", "type": "file"}[, "sWrapping": "{Repeat|MirroredRepeat|ClampToEdge}"][, "tWrapping" : "{Repeat|MirroredRepeat|ClampToEdge}"][, "filtering": "{Level0|Level1|Level2|Level3}"]},
"texture1": {"type": "TEXTURE", "data": {"generator": "[default] color", "params": {"type": "Vec4", "value": { "x": 1.0, "y": 1.0 , "z": 1.0, "w": 1.0 }}, "type": "generator"}},
"cubemap0": {"type": "CUBEMAP", "data": {
"0": {"path": "<path from the project root directory to the X+ texture file>", "type": "file"},
"1": {"path": "<path from the project root directory to the X- texture file>", "type": "file"},
"2": {"path": "<path from the project root directory to the Y+ texture file>", "type": "file"},
"3": {"path": "<path from the project root directory to the Y- texture file>", "type": "file"},
"4": {"path": "<path from the project root directory to the Z+ texture file>", "type": "file"},
"5": {"path": "<path from the project root directory to the Z- texture file>", "type": "file"}
}
},
"intParam": { "type": "INT", "data": -42 },
"floatParam": { "type": "BOOL", "data": 3.14159259 },
"boolParam": { "type": "BOOL", "data": true },
"vec2Param": { "type": "VEC2", "data": { "x": 0.1, "y": 0.2 }},
"vec3Param": { "type": "VEC3", "data": { "x": 0.1, "y": 0.2 , "z": 0.3 }},
"vec4Param": { "type": "VEC4", "data": { "x": 0.1, "y": 0.2 , "z": 0.3, "w": 0.4 }}
}
}
Следующие значения являются обязательными:
- vertexFile
- fragmentFile
Всё остальное опционально.
Hints
- Чтобы не задавать одни и те же параметры из кода, можно в файле материала задать значения по умолчанию для любого параметра. Они будут выставляться для каждого нового MatInstance. Поддерживаются следующие типы параметров: INT, FLOAT, BOOL, VEC2, VEC3, VEC4, TEXTURE и СUBEMAP.
- По умолчанию прозрачность у материала выключена. Её можно включить двумя способами:
- Установить значение с ключом blending в значение true. В этом случае для материала выставятся функции SRC_ALPHA для результата шейдера и ONE_MINUS_SRC_ALPHA для фона.
- Задать запись с ключом blending, содержащую значения src и dst соответственно. Возможные варианты значений: ZERO, ONE, SRC_COLOR, ONE_MINUS_SRC_COLOR, DST_COLOR, ONE_MINUS_DST_COLOR, SRC_ALPHA, ONE_MINUS_SRC_ALPHA, DST_ALPHA, ONE_MINUS_DST_ALPHA, CONSTANT_COLOR, ONE_MINUS_CONSTANT_COLOR, CONSTANT_ALPHA, ONE_MINUS_CONSTANT_ALPHA, SRC_ALPHA_SATURATE.
- Запись для типов TEXTURE и CUBEMAP состоит из следующих пар ключ-значение:
- type - TEXTURE или CUBEMAP .
- data - описание источника данных. Им может быть как файл (с ключами path и type=file), так и генератор вкомпилированный в движок (с ключами generator, type=generator и params (параметры генератора)). На момент написания статьи доступен только один генератор с параметром типа Vec4 (регистр именно такой, т.к. это тип параметра генератора (Variant), а не параметра материала) для создания текстуры одного цвета - "[default] color". Для типа CUBEMAP data содержит 6 источников данных, обозначаемых цифрами от 0 до 6 (соответственно X+, X-, Y+, Y-, Z+, Z-) ;
- Опциональное поле sWrapping для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате S .
- Опциональное поле tWrapping для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате T .
- Опциональное поле filtering для задания режима фильтрации текстуры (Level0 - Level3).