原文地址:http://www.ogre3d.org/docs/manual/manual_15.html#SEC31
3.1.1 Techniques
材质脚本中的technique部分概括一个独立的渲染物体的方法。最简单的材质定义只包含一个technique。尽管电脑硬件之间性能差异很大,如果你能确保每一个显卡都能达到你的technique的需要,你也仍然可以只定义一个technique。此外,如果你想要使用材质LOD技术,多个technique是很有用的,这样就可以远距离的物体使用简单的,节约资源的technique。
材质初次被调用时将被"编译"。这个过程包含扫描定义的techniques和标记出哪些可以被当前的渲染API和显卡支持。如果没有可支持的techniques,材质将被渲染成白块。编译检查很多东西,例如:
·每个pass的纹理单元入口数量
注意如果纹理单元入口数量超过当前显卡的纹理单元,只要一段程序没有被使用这个technique会仍然可被支持。这说明,Ogre引擎会将有很多入口的pass分为多个pass来适应较差性能的显卡,多重纹理混合会转换为多重pass混合(see section color op multipass fallback)
·是否使用vertex或者fragment programs,使用何种句法。
·其他效果,比如cube mapping和dot3 blending
在一个材质脚本中,techniques必须有序列出,写在前面的techniques会比后面的优先选取。这意味着你要将最高级,要求最高的techniques写在最前面,备选的列在后面。
为了方便日后使用,如果想区分technique的用途,可以将technique命名,这是个可选参数。如果在脚本中不给technique命名,则这个technique的索引号将作为它的名字。例如,材质中的第一个technique没有被命名,则它的索引号是"0"。technique的名字必须在一个材质中唯一,否则最终的technique将是所有同一材质中同名technique的合并。如果发生重名将在ogre.log中记录一个警告信息。命名的technique将在你复制材质或修改现有technique时使你方便一些。(See section 3.1.6 Copying Materials)
格式:technique name
technique本身只有很少的属性:scheme(See section scheme)和这个scheme的LOD_index(See section lod_index). 我们同要注意扩展属性LOD_distances,它不是technique的属性之一,但是它直接关系到LOD_index属性,所以为了方便将它也列在下面:
scheme
设置这个technique的scheme。材质scheme用来控制切换顶级的technique。例如,你可以使用这个参数定义高级、中级和低级复杂度的材质以让用户自己选择速度和质量的比例。Another possibility is that you have a fully HDR-enabled pipeline for top machines, rendering all objects using unclamped shaders, and a simpler pipeline for others; this can be implemented using schemes. The active scheme is typically controlled at a viewport level, and the active one defaults to 'Default'.
格式:scheme <name>
例如:scheme hdr
默认值:shceme Default
lod_index
设置这个technique的细节等级(lod)指数。
格式:lod_index <number>
有效数值为0-65535,(0为最高细节等级),techniques之间lodindex可以连续。
例如:lod_index 1
所有的technique必须定义LOD index,默认值为0,也就是最高级的LOD。数值越高表示细节等级越低。你可以(也经常会)将多余一个的technique指定为相同的LOD index,Ogre会在这些technique中选择效果最好的。为了方便阅读,建议把techniques先按lod排序,然后再按优先顺序排序,尽管后者是唯一的先决条件。(ogre认为在最前面的是最好的)。必须至少要有一个technique的lod_index为0。
LOD level的距离是由lod_distances属性决定。See section lod_distances for details.
Default:lod_index 0
lod_distances
这个属性指示这个材质在当前距离上使用哪个technique。你需要给出一个升序的距离列表,每一个都指出材质切换到下一个LOD的距离。你必须确保列表中每一个距离值都要指定至少一个technique。lod_index 0至少需要一个technique。
格式:lod_distances <distance_1> [<distance_2> ... <distance_n>]
例如:lod_distances 300.0 600.5 1200
The above example would cause the material to use the best Technique at lod_index 0 up to a distance of 300 world units, the best from lod_index 1 from 300 up to 600, lod_index 2 from 600 to 1200, and lod_index 3 from 1200 upwards.
Techniques also contain one or more passes (and there must be at least one), See section 3.1.2 Passes.
发表于 @ 2007年03月16日 20:29:00|评论(loading...)|编辑