# Material 材质

材质可以理解成在渲染中,它是表面各可视属性的结合,这些可视属性是指表面的色彩、纹理、光滑度、透明度等。

一个材质主要由以下几块组成

  1. Effect
  2. RenderQueue
  3. RenderDefinations
  4. RenderStates
  5. ShaderParams
  6. Textures

# Effect 效果

该材质所指向的Effect。开发者可以选择内建Effect或者是自定义Effect

现在已经内建了几个常用Effect:如

  • Simple3D:基础3D材质,仅渲染主颜色,不渲染光照等
  • BlinnPhong3D:常用于不透明物体,使用BlinnPhong光照模型,支持骨骼动画,支持阴影、lightMap、雾效等。
  • Effect3D:常用于透明物体和普通特效(Particle/Trail/Line),不渲染实时光,支持骨骼动画和顶点色,但不支持阴影、lightMap和雾效。

如果上述材质不能满足需求,还可以自定义材质

# RenderQueue 渲染队列

同一个相机的渲染流程中,所有渲染组件会被按照其材质的renderQueue顺序从小到大进行渲染。

当renderQueue>2500时,被认为是一个半透明物体。当两个半透明物体材质的renderQueue相同时,会按照离相机的距离由远到近进行渲染,以保证混合效果的正确。

# RenderDefinations

RenderDefinations可以看成Shader宏的开关,至于Shader宏,可见Effect章节。

# RenderStates

RenderStates是渲染管线的状态的配置,支持混合选项、剔除选项、深度测试、深度写入、模板测试

注意:仅有useMaterialRenderStates=true的pass渲染时会受到该配置影响

# ShaderParams

ShaderParams是渲染中常量参数,格式由Effect中的配置决定。开发者可以通过调整这些系数,向Shader中传入常量数据。

# Textures

Textures是渲染中的贴图数据,格式由Effect中的配置决定。开发者可以通过这里向Shader传入贴图数据。

如果某个texture属性未配置,则会使用Effect中的默认配置