王者归来性能翻番 GeForce6技术解析
说完了VertexShader 3.0,就该接着说说和它齐名的另一项技术——PixelShader 3.0。自从微软的DirectX中把Shader Model推到前台,这两个技术就从未分开过。
和VertexShader处理顶点数据不同,PixelShader(像素着色器)处理的是每个像素的数据,也就是最后生成2D图像以后的工作。所以PixelShader是3D图形中最后的步骤。
GeForce 6系列GPU中带来的CineFX 3.0引擎提供了对PixelShader 3.0的支持,将像素着色的精度提高到了32位,而且GeForce 6系列GPU提供了原生的32位像素处理能力。
● 无限长度的像素处理程序
我们前面在介绍VertexShader 3.0的时候就提到了这点。第3代CineFX支持的PixelShader 3.0中同样不再限制像素着色程序的长度。
据现在发布的情况看,原来像素着色器每个程序要求的最大长度为96条指令,而现在程序员们就可以根据自己的需要任意加长程序长度了。
这其中的好处,基本上和前面我们提到的一样。首先是能够实现更复杂的特效,然后更能免除在程序调用上的资源浪费,而且能够用一个程序实现原来多个程序的功能,让效率得到明显增加。
● 动态程序流程控制
在程序长度不再受限制的同时,PixelShader 3.0也同样增强了程序流程控制方面的功能。
新的PixelShader 3.0完全支持子程序、循环和分支的程序流程,提供了循环计数寄存器和条件码的支持,还提供了一个新的back/face寄存器,给与了程序员完整的控制能力。
● 灵活的数据类型支持
CineFX 3.0支持自由的数据类型的使用,也就是程序员可以自由的选择使用16位或者是32位浮点数据来存储操作数据。虽然这两种数据类型的使用并不会对性能造成影响,但是32位浮点模式需要占用更多的存储空间。
支持16位浮点操作数的另外一点原因,就是在电影行业的数码处理中使用的是这一标准,通用的数据类型能够让电影和CG制作人员轻易兼容使用。<