Difference between revisions of "Material File Format/ru"
(Updating to match new version of source page) |
(Updating to match new version of source page) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | <languages /> | ||
== Scope == | == Scope == | ||
Материал является частью [[W4 Engine Material System]]. Значения параметров шейдера, которые будут использоваться по-умолчанию для всех инстансов этого материала, а так же указания для рендера (блендинг) и текстуры (враппинг и фильтрация) могут быть заданы в файле материала (.mat). | Материал является частью [[W4 Engine Material System]]. Значения параметров шейдера, которые будут использоваться по-умолчанию для всех инстансов этого материала, а так же указания для рендера (блендинг) и текстуры (враппинг и фильтрация) могут быть заданы в файле материала (.mat). | ||
Line 41: | Line 42: | ||
2) По умолчанию прозрачность у материала выключена. Её можно включить двумя способами: | 2) По умолчанию прозрачность у материала выключена. Её можно включить двумя способами: | ||
− | * Установить ключ blending в значение true. В этом случае для материала выставятся функции SRC_ALPHA для результата шейдера и ONE_MINUS_SRC_ALPHA для фона. | + | * Установить ключ "blending" в значение "true". В этом случае для материала выставятся функции SRC_ALPHA для результата шейдера и ONE_MINUS_SRC_ALPHA для фона. |
− | * Добавить JSON-запись с ключом 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. | + | * Добавить JSON-запись с ключом "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. |
3) Запись для типов TEXTURE и CUBEMAP состоит из следующих пар ключ-значение: | 3) Запись для типов TEXTURE и CUBEMAP состоит из следующих пар ключ-значение: | ||
* type - TEXTURE или CUBEMAP . | * type - TEXTURE или CUBEMAP . | ||
− | * data - описание источника данных (для типа CUBEMAP data содержит 6 источников данных, обозначаемых цифрами от 0 до 6 (соответственно X+, X-, Y+, Y-, Z+, Z-)). Описание может быть определено любым из следующих способов: | + | * "data" - описание источника данных (для типа CUBEMAP "data" содержит 6 источников данных, обозначаемых цифрами от 0 до 6 (соответственно X+, X-, Y+, Y-, Z+, Z-)). Описание может быть определено любым из следующих способов: |
− | # Через файл с ключами path и type=file | + | # Через файл с ключами "path" и "type"="file" . |
− | # Через генератор вкомпилированный в движок. В этом случае используются ключи generator (type=generator) и params (собственно параметры генератора). На момент написания статьи доступен только один генератор, которому задается параметр типа Vec4 ( | + | # Через генератор вкомпилированный в движок. В этом случае используются ключи "generator" (type=generator) и "params" (собственно параметры генератора). На момент написания статьи доступен только один генератор, которому задается параметр типа Vec4 (не путать с vec4). Генератор может использоваться для создания текстуры одного цвета - "[default] color". |
− | * Опциональное поле sWrapping для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате S . | + | * Опциональное поле "sWrapping" для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате S . |
− | * Опциональное поле tWrapping для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате T . | + | * Опциональное поле "tWrapping" для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате T . |
− | * Опциональное поле filtering для задания режима фильтрации текстуры (Level0 - Level3). | + | * Опциональное поле "filtering" для задания режима фильтрации текстуры (Level0 - Level3). |
Latest revision as of 10:58, 9 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
1) Чтобы не задавать одни и те же параметры из кода, можно в файле материала задать значения по умолчанию для любого параметра. Они будут выставляться для каждого нового MatInstance. Поддерживаются следующие типы параметров: INT, FLOAT, BOOL, VEC2, VEC3, VEC4, TEXTURE и СUBEMAP.
2) По умолчанию прозрачность у материала выключена. Её можно включить двумя способами:
- Установить ключ "blending" в значение "true". В этом случае для материала выставятся функции SRC_ALPHA для результата шейдера и ONE_MINUS_SRC_ALPHA для фона.
- Добавить JSON-запись с ключом "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.
3) Запись для типов TEXTURE и CUBEMAP состоит из следующих пар ключ-значение:
- type - TEXTURE или CUBEMAP .
- "data" - описание источника данных (для типа CUBEMAP "data" содержит 6 источников данных, обозначаемых цифрами от 0 до 6 (соответственно X+, X-, Y+, Y-, Z+, Z-)). Описание может быть определено любым из следующих способов:
- Через файл с ключами "path" и "type"="file" .
- Через генератор вкомпилированный в движок. В этом случае используются ключи "generator" (type=generator) и "params" (собственно параметры генератора). На момент написания статьи доступен только один генератор, которому задается параметр типа Vec4 (не путать с vec4). Генератор может использоваться для создания текстуры одного цвета - "[default] color".
- Опциональное поле "sWrapping" для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате S .
- Опциональное поле "tWrapping" для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате T .
- Опциональное поле "filtering" для задания режима фильтрации текстуры (Level0 - Level3).