游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: sincrystal

在需求大批量的常量寄存器时,Lock和SetConstant那种做法速度

[复制链接]

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2006-7-20 22:34:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法

这个相对速度大小并不能简单说明哪种做法较好.
关键看"这种方法对管线各部分资源占用的比率",
例如方法A渲染1K顶点占用%1 CPU,再给GPU处理,占用%5 GPU,
方法B渲染1K顶点占用%4 CPU, 再到GPU, 占用 % 2GPU,
方法A单跑受限GPU,20FPS,
方法B单跑受限CPU,25FPS,
但是,有最佳平衡 11.11%的CPU按方法A执行, 88.89%CPU按方法B执行,结果GPU正好占用率也100%,但有33.33FPS.
但实际问题并不这么简单,管线的各部分都可能成为瓶颈,只有不断测试才能找到最佳平衡点.

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-7-20 22:55:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法

晕。。。你要这么考虑就太没意思了,CPU大家都差不多,GPU差大了,你在6200上试半天,放到7800的机子上发现根本就不是那么回事
何况游戏里面CPU还有无数工作要做,渲染这种事怎么能让CPU参与啊,太恐怖了

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2006-7-21 12:31:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法

机器不同当然平衡点不一样,可以动态适应的.
我并不指CPU做渲染,只是CPU参与部分预计算,
例如粒子的QUAD计算可以在CPU做,如果CPU已经是瓶颈,这时FPS肯定下降,也可以放到GPU,但要GPU计算就要绑定顶点额外的信息(粒子在QUAD四个点的顺序信息),顶点变大了,AGP带宽就可能成为新瓶颈,但CPU负荷不增加,FPS会上升.
也许这个例子计算强度小,但对于一些动态网格做水,布料模拟,CPU计算就很累了.

17

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
 楼主| 发表于 2006-7-21 21:09:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法

恩。同意moremoretime的意见,需要找其中的平衡点,现在的情况时CPU可以不处理很多的逻辑方面的计算,相反有大批量的人物,物件需要渲染,但是如果全部放到GPU来处理的话,有些拿不准,所以我提出这个问题是想问问做过的人是采用哪种方法。如果要测试的话,只能等到后期整个场景出来了再测试。

PS:这种当然不是CPU渲染,所有渲染肯定是GPU渲染,这里LOCK主要是lock顶点,预处理一些顶点位置,颜色等。

呵呵,主要也是自己比较懒,其实我以前做的是采用完全交给GPU做,但是后来又有些犹豫,所以现在再改进的时候采用LOCK顶点的方法,在顶点创建采用WriteOnly | Dynamic。

17

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
 楼主| 发表于 2006-7-21 21:12:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法

当然上面人物,物件都是用shader在做(暂时考虑vs1.1 PS1.4以上的显卡),这里所说的是做粒子系统时的考虑。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 00:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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