Material File Format/en

From Ciliz|W4
Revision as of 08:38, 4 June 2020 by Azelenkin (talk | contribs) (Created page with "The following values ​​are mandatory: * vertexFile * fragmentFile Everything else is optional.")

Scope

Material is part of the W4 Engine Material System. The values of the shader parameters that will be used by default for all instances of this material, as well as the instructions for the render (blending) and texture (wrapping and filtering) can be set in the material file (.mat).

Detailed Description

File Structure

Example .mat file:

 {
     "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 }}
     }
 }

The following values ​​are mandatory:

  • vertexFile
  • fragmentFile

Everything else is optional.

Hints

  • Чтобы не задавать одни и те же параметры из кода, можно в файле материала задать значения по умолчанию для любого параметра. Они будут выставляться для каждого нового MatInstance. Поддерживаются следующие типы параметров: INT, FLOAT, BOOL, VEC2, VEC3, VEC4, TEXTURE и СUBEMAP.
  • По умолчанию прозрачность у материала выключена. Её можно включить двумя способами:
  1. Установить значение с ключом blending в значение true. В этом случае для материала выставятся функции SRC_ALPHA для результата шейдера и ONE_MINUS_SRC_ALPHA для фона.
  2. Задать запись с ключом 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 состоит из следующих пар ключ-значение:
  1. type - TEXTURE или CUBEMAP .
  2. data - описание источника данных. Им может быть как файл (с ключами path и type=file), так и генератор вкомпилированный в движок (с ключами generator, type=generator и params (параметры генератора)). На момент написания статьи доступен только один генератор с параметром типа Vec4 (регистр именно такой, т.к. это тип параметра генератора (Variant), а не параметра материала) для создания текстуры одного цвета - "[default] color". Для типа CUBEMAP data содержит 6 источников данных, обозначаемых цифрами от 0 до 6 (соответственно X+, X-, Y+, Y-, Z+, Z-) ;
  3. Опциональное поле sWrapping для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате S .
  4. Опциональное поле tWrapping для задания типа заполнения текстурой (Repeat, MirroredRepeat, ClampToEdge) по координате T .
  5. Опциональное поле filtering для задания режима фильтрации текстуры (Level0 - Level3).