Difference between revisions of "Material File Format"

From Ciliz|W4
Line 41: Line 41:
  
 
=== Hints ===
 
=== Hints ===
Информация по использованию:
 
 
* Чтобы не задавать одни и те же параметры из кода, можно в файле материала задать значения по умолчанию для любого параметра. Они будут выставляться для каждого нового MatInstance. Поддерживаются следующие типы параметров: INT, FLOAT, BOOL, VEC2, VEC3, VEC4, TEXTURE и СUBEMAP.
 
* Чтобы не задавать одни и те же параметры из кода, можно в файле материала задать значения по умолчанию для любого параметра. Они будут выставляться для каждого нового MatInstance. Поддерживаются следующие типы параметров: INT, FLOAT, BOOL, VEC2, VEC3, VEC4, TEXTURE и СUBEMAP.
 
* По умолчанию прозрачность у материала выключена. Её можно включить двумя способами:
 
* По умолчанию прозрачность у материала выключена. Её можно включить двумя способами:

Revision as of 14:53, 3 June 2020

Scope

Материал является частью W4 Engine Material System. Значения параметров шейдера, которые будут использоваться по-умолчанию для всех инстансов этого материала, а так же указания для рендера (блендинг) и текстуры (враппинг и фильтрация) могут быть заданы в файле материала (.mat).

Detailed Description

File Structure

Пример файла .mat:

{
    "vertexFile" : "<путь от корня проекта до файла вертексного шейдера(.vs)>",
    "fragmentFile" : "путь от корня проекта до файла фрагментного шейдера(.fs)",
    ["blending" : <true или false>,]
    ["blending" : {"src" : "<блендинг функция для результата вашего шейдера>", "dst" : "<блендинг функция для фона>"},]
    "params" : {
        "texture0": {"type": "TEXTURE", "data": {"path": "<путь от корня проекта до файла текстуры>", "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": "<путь от корня проекта до текстуры для X+>", "type": "file"},
                "1": {"path": "<путь от корня проекта до текстуры для X->", "type": "file"},
                "2": {"path": "<путь от корня проекта до текстуры для Y+>", "type": "file"},
                "3": {"path": "<путь от корня проекта до текстуры для Y->", "type": "file"},
                "4": {"path": "<путь от корня проекта до текстуры для Z+>", "type": "file"},
                "5": {"path": "<путь от корня проекта до текстуры для Z->", "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.
  • По умолчанию прозрачность у материала выключена. Её можно включить двумя способами:
  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).