shader model 2_x

本文回顾了DirectX9中ShaderModel的发展历程,包括2.0、2.0a、2.0b及3.0的不同特性和硬件支持情况。详细介绍了各版本之间的区别,以及它们对GPU性能的影响。

在2002年DirectX 9.0发布的时候,当时新增的shader model包括了shader model 2.0(vertex shader 2.0+pixel shader 2.0)、shader model 2.0a(也被称作shader model 2.0+或者shader model 2_x,即vertex shader 2.0a+pixel shader2.0a)以及shader model 3.0。DirectX9.0中的shader model 3.0只提供了参考渲染器,缺乏对硬件层的支持,直到DirectX 9.0b问世的时候依然只是供开发人员试验性的规格。shader model 2.0和shader model 2.0a分别对应的是R3X0/RV3X0体系和NV3X体系,后者在前者的基础上增加了更长的指令数。

hlhl3.jpg

DirectX 9.0c提供了shader model 3.0的硬件支持和新增了ATi R420对应的shader model 2.0b规格,其中Pixel Shader 2.0b由Veretex Shader 2.0 + Pixel Shader 2.0b组成。在以往,版本号高的shader model向下兼容版本号较低的shader model,例如shader 3.0的硬件必定支持shader 2.0的硬件,但是到了DX9.0c的时候,情况有了些微妙的变化,原因在于shader model 2.0b的规格其实并没有超出shader model 2.0a,这样一来,具备shader model 2.a支持的NV3X在理论上是能够跑相当部分的shader model 2.0b程序的,不过由于NV3X本身缺乏MRT(Multi Render Target)的支持,因此又有一些2.0的shader是跑不了的。

具备shader model 2.0b支持的RADEON X800能够支持512条Pixel Shader指令,但是由于RADEON X800的每条流水线具备了1个独立纹理单元、1个3D向量ALU和1个1D矢量ALU,因此在理论上的最大shader程序长度极限是512条贴图指令+512条算法指令+512条算法指令,共计1500条左右,相比之下,R3X0/RV3X0只能做到32条贴图指令+64条算法指令。

Pixel shader 2.0b是shader model 2.0b相对shader model 2.0的唯一改进之处,但是和pixel shader 2.0相比,指令长度的增加并非唯一的改进,在每个像素ALU的临时寄存器数量方面,Pixel Shader 2.0b从Pixel Shader 2.0的12个增加到了32个,比Pixel Shader 2.0a(NV3X)的22个相比多了10个,同时这也已经达到Pixel Shader 3.0的规格。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值