着色器

最后更新适配版本:1.16.200.2正式版

用料

顶点,片段着色器(有时还包括几何着色器)与某些选项作为材料结合在一起,是自定义着色器所必需的。要创建新材料,您需要创建文件,该文件与原始资源包中的.material文件名匹配。例如:materials/particles.material。材质通过在冒号之后添加父材质来支持继承。例如:entity_alpha:entity_base

通用材料定义字段

栏位名称描述示例值笔记
vertexShader相对于hlsl / glsl文件夹的着色器的路径对于HLSL着色器,.hlsl添加了后缀。
fragmentShader相对于hlsl / glsl文件夹的着色器的路径对于HLSL着色器,.hlsl添加了后缀。
vertexFields传递给顶点着色器的字段数组最好从香草材料中复制该字段。
variants对象数组,定义材料的变体最好从香草材料中复制该字段。
+defines#define要添加到着色器源的指令数组对于重用着色器很有用,但可以更改一些较小的设置。
+states要启用的状态数组["Blending", "DisableAlphaWrite", "DisableDepthWrite"]对于OpenGL实现,这等效于glEnable调用。
-defines#defines从继承中删除的指令数组+defines
+samplerStates对象数组,定义如何处理特定索引处的纹理{ "samplerIndex": 0, "textureFilter": "Point" }textureFilter指定textureWrap在纹理尺寸外部访问时如何对纹理进行采样并指定行为。
msaaSupport多样本抗锯齿支持Both
blendSrc指定如何计算颜色源混合因子One对于OpenGL实现,这等效于glBlendFunc调用。
blendDst指定如何计算颜色目标混合因子One对于OpenGL实现,这等效于glBlendFunc调用。

例:

{
  "materials": {
    "version": "1.0.0",
    "particle_debug": {
      "vertexShader": "shaders/particle_generic.vertex",
      "fragmentShader": "shaders/particle_debug.fragment",

      "vertexFields": [
        { "field": "Position" },
        { "field": "Color" },
        { "field": "UV0" }
      ],

      "+samplerStates": [
        {
          "samplerIndex": 0,
          "textureFilter": "Point"
        }
      ],

      "msaaSupport": "Both"
    }
  }
}