|
在smth bbs看到一段话,转贴过来, 作者vouge
说实话, 这种东西光看几个3D mark的数据是看不出什么来的. 现在的GPU芯片, NV的也好, ATI的也好, 很多支持的东西都是hack出来的. 如果你在这 些芯片上做开发, 就会发现很多D3D9里要求的东西, 他们的实现都是hack.
比方说吧, ATI芯片里pixel shader的通用寄存器都是24位浮点数的, 而NV的是32位. 这个你在文档上是查不到的, 我写信问过ATI才知道. 这个会有什么问题呢? 很多需要在GPU上做通用计算的东西, 会发生精度上的问题, 特别是在做叠代运算的时候. 叠代运算的应用越来越多, 比如百万粒子和流体 模拟一类的效果. ATI的芯片会发生很严重的漂移, 不得不写额外的程序去纠正, 大大降低效率. 再举个例子, 很多ATI芯片对16位浮点贴图的filtering和blending是错的, 会将负数作为极大的正数来处理. 这样, 一个在NV上可以用一个texld完成的带线性过滤的浮点贴图采样操作, 在ATI上
则需要4个或8个texld指令才能完成; 在NV上一个DP call就可以完成的浮点frame-buffer blending, 在ATI上要两个DP call. ATI的这种问题非常多, 包括画线的时候把不应该画的第一个像素画出来, 等等. 当然, NV的hack也很多, 但是基本不会出像ATI这样的硬件错误.
这就正好解释了以前常说你永远不知道下一个时刻A卡是否还能给出正确的渲染结果,因为硬件本身有缺陷,得靠驱动来补。A卡驱动之所以让人觉得差,实际上有可能并不差,但硬件太差导致补不过来啊。 |
|