Difference between revisions of "Material File Format/ru"

From Ciliz|W4
(Updating to match new version of source page)
(Updating to match new version of source page)
 
(One intermediate revision 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 (не путать с vec4). Генератор может использоваться для создания текстуры одного цвета - "[default] color".
+
# Через генератор вкомпилированный в движок. В этом случае используются ключи "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

Other languages:

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-)). Описание может быть определено любым из следующих способов:
  1. Через файл с ключами "path" и "type"="file" .
  2. Через генератор вкомпилированный в движок. В этом случае используются ключи "generator" (type=generator) и "params" (собственно параметры генератора). На момент написания статьи доступен только один генератор, которому задается параметр типа Vec4 (не путать с vec4). Генератор может использоваться для создания текстуры одного цвета - "[default] color".
  • Опциональное поле "sWrapping" для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате S .
  • Опциональное поле "tWrapping" для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате T .
  • Опциональное поле "filtering" для задания режима фильтрации текстуры (Level0 - Level3).