代号NV30!nVIDIA的终极武器GeForc
开发人员能够通过CineFX架构具有的处理能力以及灵活性,能够通过简单的编程,让GeForceFX GPU实现更多效果。在顶点处理方面,CineFX架构得到大幅改进,使用基于数据的分支预测以及更多指令、寄存器与常量,突破了目前Vertex Shader程序代码长度限制,从128条指令扩展到了能够最长支持64K条指令,丰富了GPU所能够实现的效果。它具有更为强大的代码流控制能力,提供动态分支预测与循环控制,能够顺向以及逆向改变代码流。增加了对Call以及Return指令的支持,使得VertexShader的行为表象更趋近一个完善的处理器,也具备了提前终止正在运行的程序的能力。
考虑到模块执行效率,为单模块增加了条件代码以及写掩码,能够提高预测分支的精确度以及节省预测分支的时间。同时也增加了不少新的包括分支指令BRA、高精度的三角形函数(COS、SIN)以及高精度的指数以及对数函数运算指令,把这些常用运算专门化,提高常用运算处理速度。
随着运算能力的增强,也提高了CineFX架构的编程灵活度,矩阵调色皮肤贴图是个可以证实这个具有高度柔性编程强大能力的简单事实。在DX8提供的编程环境中,角色动画需要编写多个Shader,其中的一个用于所使用的皮肤贴图处理。如果一个模型使用了能够被一到四根骨骼所影响的顶点,传统的编程模式需要编写四个独立的Shader,其中一个需要用于专门处理骨骼系统的几种组合。如果要在DX8.0中实现这个效果,整个模型必须分成使用相同骨骼系统的多个多边形段,每个段的骨骼系统的渲染必须在同一时间内完成,当然,开发人员也可以选择使用四个骨骼系统Shader,结果会简单一些,但是效率会大大降低。
虽然新近的API降低了这方面的编程难度,只需要编写一个支持使用四根骨骼的系统Shader,就能够达到目标。但是由于最新的API只能支持非常有限的分支预测水准,只能对每个对象进行操作,这依然意味着需要渲染的模型还是要分成几个模块,并且分别渲染。CineFX架构更进一步,由于对分支以及循环实现了完全是数据相关形式,使得编程的方式更为直接与简单。并且,由于Shader可以针对单个顶点进行分支,也就是说完全将顶点对象化,不需要对要渲染模型进行分割,能够提高运算速度,也提高了开发人员的开发速度。
CineFX顶点处理模式还增加了对最多256个向量常量的支持,寄存器也从以前的96个增加到256个QW(Quad Words四字)的水准,使得CineFX架构能够处理更多的矩阵调色皮肤贴图的骨骼系统,同时也能够容纳更多的光源。此外,鉴于生成的代码大量增长,临时寄存器的数量也得到增长,从以前架构的12个增加到目前的16个。不仅如此,独立处理循环运算的能力也是大大提高,CineFX能够在一个Shader程序内完全实现对数据相关的单独循环与最大64个分支预测的支持,能够轻松处理像以前循环处理所有光源处理然后切换到适当的光源形式这样繁重的处理任务。
如果以上所说只不过是在处理的量上有所增长的话,那么新加入的一些指令并由此导致的处理能力增长,让顶点处理又如同当年VertexShader推出一样拥有了质的提高。CineFX架构提供了前文已经提到的单模块条件码以及写掩码、Call与Return指令以及对动态和静态代码流循环与分支控制,进一步提高了GPU的处理效率。其中单模块条件代码与数据相关的分支预测关系密切,也是这种类型分支预测的运行机制,单模块条件代码的提供能够在提高处理性能的同时还能够保持条件赋值代码的简洁性。Call/Return指令的提供同样基于提高分支预测准确率的考虑,CineFX架构能够实现完善的Call/Return机制,最大能够支持4重调用栈。至于对动态/静态代码流循环与分支控制更是与提高CineFX处理效率直接相关,从理论上说,能够大大利用处理器在处理循环以及分支预测失败时候导致的资源浪费,与片面从提高频率达到提高性能的考虑,CineFX无疑是大大进步,解决的办法也聪明了不少。
从以上的叙述,我们可以很明显地感觉到,在循环以及分支预测方面,是GPU继续发展的一个难点,并且随着处理器频率提高,处理的任务更为复杂,特别是拥有众多的角色动画,需要众多的骨骼系统处理以及拥有十分复杂的自然光这种需要很多循环才能够实现的应用,从理论上说,NV30的CineFX架构的确像他们宣称的一样,具备了达到电影水准的处理能力的潜质。当然,如果一切依然受平台限制而无法达到理论水准,自当别论。
不管怎么说,从得到的材料判断,CineFX架构依然是引入VertexShader以来的又一大创新,如果说GeForce3的效果器引擎增加了编程难度的话,CineFX则是在提高性能的同时,通过更为灵活的控制方,让特殊效果能够出现在复杂的场景中的同时还能够使用更为简单的编程模式,这就是CineFX所能带来的最大进步。我们并不是开发人员,或者从另外一个角度,这似乎与消费者无关,错误就恰恰在此,更为简易的编程模式才会让开发人员去利用CineFX架构,而不是凭空的硬件浪费。此后不久,像一些测试软件中出现的场景将会呈现在用户面前,那种空有强大的硬件支持能力而无实质的应用软件支持、购买了具有最新技术的显卡只有到测试中才有用的怪现象也将随之烟消云散,到时候我们可能更加能够体会这一番话的含义。<