游戏开发论坛

 找回密码
 立即注册
搜索
楼主: plea

正确认识显卡的3D加速处理能力

[复制链接]

8

主题

553

帖子

560

积分

高级会员

Rank: 4

积分
560
发表于 2006-8-26 12:28:00 | 显示全部楼层

Re:正确认识显卡的3D加速处理能力

1,ati的R300以后,nvidia的nv25以后的硬件都不支持T&L,所以对硬件来说,没有T&L的日子已经很久了...
2,硬件不支持T&L并不会影响任何应用程序员,driver和d3d runtime都会帮你做相应的转换,这个转换的开销几乎不会造成什么性能问题;
3,对与目前的显卡,99%的bottle neck是在bandwidth和memory access的latency上,像在vs里计算光照这样的事情,主要都是由alu完成的,假如bottle neck不在rast阶段,那么多半就在硬件抓vertex buffer的带宽上,除非是特别长的vs,bottle neck才可能会发生在alu上。所以楼主不必担心硬件是否支持T&L,自己觉得什么方便用什么;
4,IGP对于独立显卡来说,比较特殊,因为目前绝大多数的IGP是没有硬件vs的,所有的vs都是转成CPU指令在CPU上执行的,这个转换可能是driver做,也可能是runtime做,绝对不需要应用程序开发者做,在IGP上写3.0的vs少用点dynamic flow control就是了;

DX10和vista是另外一个故事...

3

主题

23

帖子

23

积分

注册会员

Rank: 2

积分
23
 楼主| 发表于 2006-8-26 15:31:00 | 显示全部楼层

Re:正确认识显卡的3D加速处理能力

大家的评论或多或少有着自己的个人观点,还好大家说话还是很客气的。
在目前最新版的SDK开发包里面有个很有价值的PDF文档,里面记录了目前市场上绝大多数的显卡型号的处理能力,非常详细。
PC游戏,不是那些各种各样的小小的技术演示程序,需要从在每一个部分都要进行极限性的优化,如果显卡能完成的工作那么我们就不应该让CPU去做,这个是个基本原则。
就目前GMA950来说,它没有在Driver那个层面转换T&L函数,如果你要调用T&L的函数,那么就一定要用CPU运算,无论Intel怎么写着优化过,它还是用了CPU进行顶点转换和照明(就目前的资料来说)。
。。。。。。。。。。。。哎,这个过渡时期带来的问题还是有的。比如要重新设计骨骼动画模块,以前检测到支持硬件T&L就能使用VertexBlendMatrix去进行骨骼动画,但是现在为了最大兼容,必需还要写一个shader版本的骨骼动画模块,或多或少要改代码和优化数据结构。Gf2都支持2个BlendMatrix,但是到了GMA呢,为了运行以前的函数,难到真的要用软件T&L?至少我反对。
对于商业游戏当然不行,骨骼动画作为一个重要的部分,控制着整个游戏的人物运动,为了兼容和速度,旧的引擎需要修改。

3

主题

23

帖子

23

积分

注册会员

Rank: 2

积分
23
 楼主| 发表于 2006-8-26 15:41:00 | 显示全部楼层

Re:正确认识显卡的3D加速处理能力

CardCaps.pdf  虽然是去年10月的,但是还是个非常方便的资料。
恩,恩,开发者必备。
想在你的Engine里面加入新东西时,先在这里查查,比较一下,然后再和你的设计师和老板谈谈。哈哈

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-8-26 17:50:00 | 显示全部楼层

Re:正确认识显卡的3D加速处理能力

“比如要重新设计骨骼动画模块,以前检测到支持硬件T&L就能使用VertexBlendMatrix去进行骨骼动画,但是现在为了最大兼容,必需还要写一个shader版本的骨骼动画模块,或多或少要改代码和优化数据结构。”
FFP 的 skinned animation 是用 matrix palette 来实现的,但是实际上如果 gpu 不支持 vs 很少有用 matrix palette 来运算,都是 cpu 来 blend vertex,甚至连 nvidia 都不建议使用 matrix platette,因为它比 cpu 运算更慢。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-8-26 17:57:00 | 显示全部楼层

Re:正确认识显卡的3D加速处理能力

如果单纯从运算速度来讲,GPU 一定不会比 CPU 快,看看他们之间的频率差距就知道了。所以相同的运算,在 CPU 上要比 GPU 还要快一些,不过这并不是主要的衡量依据,因为需要访问 vertex 数据,这之间的传输过程是有一定的开销的(D3D9 LOCK\UNLOCK,D3D10 MAP、UNMAP),所以硬件的 T&L 在运算速度上并没有什么优势,而是访问数据不需要有额外的开销。当然,如果在 UMA 的 IGP 上几乎就没有差别了。

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2006-8-27 11:03:00 | 显示全部楼层

Re:正确认识显卡的3D加速处理能力

"如果单纯从运算速度来讲,GPU 一定不会比 CPU 快,看看他们之间的频率差距就知道了。所以相同的运算,在 CPU 上要比 GPU 还要快一些"
——————————————
这要看是什么运算了吧,如果是矢量、矩阵运算,还是GPU上快吧
毕竟GPU是为这些矢量运算做了专门优化的

8

主题

553

帖子

560

积分

高级会员

Rank: 4

积分
560
发表于 2006-8-27 12:16:00 | 显示全部楼层

Re:正确认识显卡的3D加速处理能力

我的“评论”可不是我的个人观点,是我个人和同行业人知识和经验的总结,不敢说就是事实(因为MS不公开原码),所以在楼主找到更接近事实的说法以前,你可以认为这就是事实。

楼主还没有明白一点:硬件规格和D3D caps的区别,实际的硬件规范除了IHV,在外面几乎不可能看到。D3D caps是driver报给os/runtime的信息。关于caps里的那个hw T&L,假如driver不报这个,那么runtime会做T&L和VS(当然是CPU上做),假如driver报了这个,那么还要看driver的实现,对于独立显卡来说,硬件是支持的,对于IGP来说,driver可以自己用CPU做T&L和VS,而上层的应用程序根本就不知道这些。NV和ATI似乎都不太满意MS的software vertex process的效率,所以它们都在自己的driver里做了自己的一套,如果实现恰当,CPU做vertex processing的能力可能远比你想象的要强得多,这里面也有很多有趣的地方,有兴趣可以另开主题来讨论。
如果你只是关心matrix palette是否能用得话,那么请立刻忘记它。

34

主题

629

帖子

629

积分

高级会员

Rank: 4

积分
629
发表于 2006-8-27 12:41:00 | 显示全部楼层

Re: 正确认识显卡的3D加速处理能力

这是ATi的一个把骨骼动画做进Pixelshader中的试验,好像是10000个角色吧,在目前的低端显卡1600Pro上也有近20FPS,光看频率的话1600应该是12x500=6000MHZ,肯定比低端CPU快了

1900的频率好像是1600的四倍
sf_2006827124038.jpg

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-8-27 22:29:00 | 显示全部楼层

Re:正确认识显卡的3D加速处理能力

什么叫把骨骼动画做进Pixel Shader里??用PS来做人物动作??难不成是用面片画的?

0

主题

1037

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
发表于 2006-8-28 02:57:00 | 显示全部楼层

Re:正确认识显卡的3D加速处理能力

18楼的演示真是不可思议!
请原谅我的少见多怪。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 05:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表