Skip to content

格式定义

一个材质文件的基本格式如下,它是一种不严格的json形式

json
material {
    // material properties
}

vertex {
    // vertex shader, optional
}

fragment {
    // fragment shader
}

一个最小的材质定义必须包含material部分,而vertex和fragment是非必须的。

下面的代码清单显示了一个有效材料定义的示例。这个定义使用lit材质模型(参见lit模型部分),使用默认的不透明混合模式,需要在渲染网格中呈现一组UV坐标,并定义3个用户参数。本文档的以下部分详细描述了材料和碎片块。

material {
    name : "Textured material",
    parameters : [
        {
           type : sampler2d,
           name : texture
        },
        {
           type : float,
           name : metallic
        },
        {
            type : float,
            name : roughness
        }
    ],
    requires : [
        uv0
    ],
    shadingModel : lit,
    blending : opaque
}

fragment {
    void material(inout MaterialInputs material) {
        prepareMaterial(material);
        material.baseColor = texture(materialParams_texture, getUV0());
        material.metallic = materialParams.metallic;
        material.roughness = materialParams.roughness;
    }
}