代号NV30!nVIDIA的终极武器GeForc
由于拥有以上特性,CineFX的像素处理能力由此得到大大增强。CineFX支持在单个PixelShader程序内最大16个材质贴图的导入,并且它们可以任意组合,并不存在相互关联的问题,比如它们可以是凹凸贴图、光泽/镜面贴图、环境贴图、阴影贴图、反射率贴图等等,使得实现效果的可组合灵活度大大增强。不仅如此,在单个PixelShader程序内,最大能够支持1024条材质指令,突破了以前单独材质贴图以及相应数量材质导入的数量限制,它能够支持16个单独材质贴图,使得通过多材质实现的新效果的实现成为可能。这些特性包括:软阴影、帧缓存后期处理效果、复杂滤镜以及查找表。
更令人欣慰的是,由于硬件本身的强化,实现以上功能并不需要太费脑筋,软阴影可以通阴影贴图中任意数量的采样获得过滤的阴影效果。帧缓存后期处理效果则更加有趣,模糊、空洞、红椿木效果和绘画效果之类非光线渲染效果能够由于硬件的支持,从帧缓存的材质贴图中获得。滤镜的功能也随之复杂化,更高品质的滤镜效果可以用于提高材质品质,需要进行16点采样的插值法滤镜的使用也由此成为可能。更有趣的方面还在于,一些比如向量单位化、噪音效果以及光照函数都能够以编码的形式融入材质,并且可以通过PixelShader进行插找,在材质的查找过程中就能够进行函数值的计算,让最后的处理变得更为轻松和快捷。
除了在材质指令方面功能强大以外,在颜色操作方面的大大提高,也是cineFX架构的一大特色,并且,CineFX 128位色的引入也如同从16位色转向32位色那样,再一次吸引了我们的注意力。为了实现如此强大的颜色处理能力,与材质的操作指令数一样,在一个PixelShader程序内,能够支持1024条任意颜色操作指令,以满足CineFX所需要的大量像素级运算,免去了开发人员对于像素操作指令限制的担心。对于需要进行如此大量色彩运算的应用自然最爽不过,特别是那些需要进行光线跟踪的体积效果渲染将首先从中获益,这些效果包括烟雾、焰火、皮毛、以及草的整体效果,这些效果的实现即便是目前依然还没有找到合适简易算法,依然是制约3D运算的绊脚石。并且,如果光线跟踪效果是递归的话,所消耗的资源还将成倍增长,像计算从每个发光取样点与光源之间为了获取阴影效果的计算就非常让人头疼,在这样的情况下,消耗数百条指令十分正常。
过程贴图也是消耗资源的运算,特别是实时过程贴图通常会需要数量巨大的指令,更让人受不了的是,如果还对这些贴图进行细分反锯齿,用于单像素的指令还将大幅增加,CineFX技术无疑会让这个过程获益匪浅。实际上,我们仍然忽略一个最消耗资源的东西——光源处理,这是除了模型实时动画化以及重力运算外,另外一个十分消耗资源的运算。毫无疑问,更多的光线处理能够使得场景更为真实,当然,所需要的光线计算模型需要的计算量也是成倍增长,一个在光线模拟方面比较真实的Oren—Nayar模型,能够精确模拟粗糙的散射面,会消耗传统光照模型的数十倍的资源。如果在一个场景通过多次的光照渲染以达到与以上模型类似的效果,PixelShader内增加的程序长度能够在一个PixelShader内处理多个光源的能力派上了用场。
最有趣的是,随着GPU处理能力越来越强大,数据交换需求越来越多的时候,临时存储空间的需要量也是大大增加,就如同一个拥有大马力发动机的汽车,好的底盘自不可少一样。CineFX架构配备了32个FP32寄存器,或者也可以当作64个FP16使用,以满足临时的存储之用。除此之外,调和功能也首次登上了nVIDIA的图形处理芯片,能够简化交叉运算的处理指令,提高类似运算的处理速度。条件写掩码的加入同样也是为提高效率而作,灵活的条件写掩码能够使得分支预测简单化,通过掩码的支撑,处理器会计算两个分支预测路线,并从中挑一,无论是程序员或者是编译器都能够从中获益。<