材质与材质脚本
基本概念
Ogre的材质(Material)
为了优化渲染,必须把渲染状态的变化减小到最小。而最频繁的渲染状态改变是材料的变化(大多是纹理的变化)。
Ogre的Material类封装了物体的所有材料属性,类似于3D Studio中material的概念。平时不被认为是属于材料的属性,想culling模式和深度缓存设置等,也被material包含进来了。因为这些属性同样影响了物体的外观,把他们放到material类里可以集中设置所有影响物体的属性。这和D3D中只保存颜色组件而没有纹理映射的Material有明显不同。Ogre的Material可以被认为是‘Shader’的等同物。
Material类包括如下几类属性:
①基本的表面材质属性,如多不同颜色的反射率、Shininess等等;
②组成Material的纹理层;
③纹理之间的混合(Blend)方式;
④深度缓冲设置;
⑤Culling模式;
⑥纹理过滤方式(三线性过滤、双线性过滤);
⑦是否受光照影响;
⑧Shading选项;
⑨雾化。
其中第二条的纹理层可以有多个,Ogre在Material类的内部定义了TextureLayer类。
纹理层(TextureLayer)
一个纹理层可以是一幅静止的图像,也可以是一幅以某种方式运动的图像,还可以是由多幅图像组成的动画。它可以实现多种文理特效,如BUMPMAP、环境贴图、运动的纹理。
材质管理器(MaterialManager)
MaterialManager类负责管理Material库。和材质现相关的类图如下:
MaterialManager还负责分析Material脚本(Material Script),从而初始化Material的属性。下面我们来分析一下Ogre提供的材质脚本语言。
Ogre的材质脚本
Ogre提供的