# Material 材质
材质可以理解成在渲染中,它是表面各可视属性的结合,这些可视属性是指表面的色彩、纹理、光滑度、透明度等。
一个材质主要由以下几块组成
- Effect
- RenderQueue
- RenderDefinations
- RenderStates
- ShaderParams
- 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中的默认配置