游戏开发论坛

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

请教:各位用D3D的同志有发现一个问题吗?.....

[复制链接]

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-10-12 10:50:00 | 显示全部楼层

Re: Re:请教:各位用D3D的同志有发现一个问题吗?.....

secondage: Re:请教:各位用D3D的同志有发现一个问题吗?.....

son of batch~

2004年GPU优化的第一条都是尽量减少batch,在D3D里也就是减少DP的次数
因为DP会在CPU,和D...

hehe,或许是我的表述不够准确,我的意思是:分类,然后一次渲染一批……而不是一次调用N多次DP或者DIP(如果这样我在四楼的话不就白说了么?)。
我建议是按照shader或者Texture分类,原因在于这样可以利用到Instancing。

8

主题

553

帖子

560

积分

高级会员

Rank: 4

积分
560
发表于 2004-10-12 12:19:00 | 显示全部楼层

Re:请教:各位用D3D的同志有发现一个问题吗?.....

100次DIP(DP)开销肯定很大(象farcry, painkiller这样的游戏也就是300-500次DIP),按texture,shader来排序后再绘制仍然不能避免这个调用开销大的问题,目前最好的方法当然就是instancing拉,现在NV的GeForce6800和ATI的Radeon 9500以上的显卡都支持。

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-10-12 12:35:00 | 显示全部楼层

Re: Re:请教:各位用D3D的同志有发现一个问题吗?.....

kypck: Re:请教:各位用D3D的同志有发现一个问题吗?.....
100次DIP(DP)开销肯定很大(象farcry, painkiller这样的游戏也就是300-500次DIP),按texture,shader来排序后再绘制仍然不能避免这个调用开销大的问题,目前最好的方法当然就是instancing拉,现在NV的GeForce6800和ATI的Radeon 9500以上的显卡都支持。

如果想把东西凑合到一个DIP中画,当然要分类。这是一般论。当然,这样同时也可以减少渲染状态的改变次数。
如果涉及到Instancing,那么正是因为要用instancing,所以才要按照texture,shader分类嘛.
另外,其实instancing是一种思路,并不是必须要用到那个硬件限制很大的StreamFreq。比如原先Humus的Instancing demo和最新的DXSDK Oct 2004都介绍了几种方法。
对了,修改了一下DXSDK Oct2004中的Instancing sample,去掉了VS3.0检测,但是发现不能在9700上得到正确结果,有工夫要研究一下……
顺便说一下,DXSDK Oct2004终于允许在PS2.0中使用Centroid sample了,这样R3xx不用再使用dcl_pp t0这样的centroid sample hack了。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-10-12 13:57:00 | 显示全部楼层

Re:请教:各位用D3D的同志有发现一个问题吗?.....

画 100 次和画 1 次,你说是谁快?

11

主题

1265

帖子

1265

积分

金牌会员

Rank: 6Rank: 6

积分
1265
发表于 2004-10-12 15:03:00 | 显示全部楼层

Re: 请教:各位用D3D的同志有发现一个问题吗?.....

你是不是用软件处理顶点??

8

主题

553

帖子

560

积分

高级会员

Rank: 4

积分
560
发表于 2004-10-12 17:17:00 | 显示全部楼层

Re:请教:各位用D3D的同志有发现一个问题吗?.....

to hourousha:
估计以后的硬件都支持HW instancing了,毕竟硬件支持才是硬道理。
humus的那另外几个方法都不能保证只调用DIP一次,有的还得额外的复制顶点数据,内存上的开销也大些。
关于9700不能使用instancing的问题,请确定你安装了4.9版的驱动程序,如果是4.8,用
pd3ddev->SetRenderState(D3DRS_POINTSIZE, MAKEFOURCC('I', 'N', 'S', 'T'))来打开instancing功能,如果还不行就不知道了。
不过在R3XX使用HW instancing对速度的提高远没有GF6800那么明显。

1

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
 楼主| 发表于 2004-10-12 19:19:00 | 显示全部楼层

Re: 请教:各位用D3D的同志有发现一个问题吗?.....

我是用 VERTEX SHADER
用最简单的 无光照 只有DIFFUSE 和 材质
速度相差很大呀~

非常感谢各位的解答

《3D图形渲染通道负载优化的几种方法》 我去看了~
非常感谢 KINGMARK 的提示~

各位可以介绍哈 INSTANCING 的方法吗?
给点提示~  [em13]

非常感谢~

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2004-10-12 20:32:00 | 显示全部楼层

Re: 请教:各位用D3D的同志有发现一个问题吗?.....

哈哈,那我家的《家园2》中多少的独立的物体呀,每个物体又有多少个面呀,还R9500,
我家的显卡是GeForce2 MX 的呀,FPS都在40以上呀!(当有至少100架战斗机和30艘大型战舰时)

大家看看一架小飞机要多少个面吧。 [em10]
sf_2004101220321.jpg

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-10-12 20:35:00 | 显示全部楼层

Re: Re:请教:各位用D3D的同志有发现一个问题吗?.....

to kypck:
关于9700的GInstancing问题成功解决,确实是忘了使用FOURCC hack了(驱动是8.07),多谢。
to楼主。
关于GI可以参考DX9SDK Oct. 2004 Update的文档和sample。
不过GI的使用还是有一些限制的,而且需要有很大量的相同模型时才能产生明显效果。(见NV的《Optimization for DirectX 9 Graphics》)这种情况在游戏中并不是很多见。

18

主题

579

帖子

583

积分

高级会员

Rank: 4

积分
583
发表于 2004-10-13 09:32:00 | 显示全部楼层

Re:请教:各位用D3D的同志有发现一个问题吗?.....

是不是你处理的箱子的函数效率太低,我渲染1.7w个定点的图形也就20fps,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-22 19:26

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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