游戏开发论坛

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

lod地形贴图有了进展,有效果图,nostopforever和各位朋友可

[复制链接]

11

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2007-4-19 13:47:00 | 显示全部楼层

Re:lod地形贴图有了进展,有效果图,nostopforever和各位朋

原来如此,我才大一,看来要多看书

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-4-19 23:35:00 | 显示全部楼层

Re: lod地形贴图有了进展,有效果图,nostopforever和各位朋

今天回到家测试了一下实际的效率
1025x1025 的地形,两层纹理,一层细节纹理,33x33的BLOCK
四叉裁减在2W多个三角形的情况下能达到220~240FPS之间,
我的机器配置大概是:CPU:AMD2800+ RAM:1G VidoCard:ATI9550
不知道这个性能测试是否达标?

不过内存耗用有点夸张,用了足足100MB。

分析内存占用情况如下:
顶点数:1025x1025=1050625每个顶点的格式是:
const DWORD FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX2;
也就是3个float +3个float + 1个DWORD + 2*2个float=11x4=44个字节
1050625 x 44 byte / 1024 =45,144KB
顶点真是耗内存啊,没办法这是硬指标
以后支持shader的话应该能降下一半多的空间占用

索引是:
1024 * 1024 * 2 个三角形 * 3 (每个三角形三个顶点) * sizeof(WORD) /1024
=1024*1024*2*3*2 byte /1024 =12,288KB
高度图:
我放入了一个D3DXVECTOR3数组里面了,每个点也包含xyz坐标
这个数据也需要:1050625 x 3 *sizeof(float) = 1050625 x 12 =12,312KB


顶点缓冲+顶点索引缓冲+顶点位置向量(包含高度)
就需要 57,432KB + 12,288KB + 12,312KB=82,032KB

还有尽20M的内存可能耗用在纹理贴图和其他方面,也是应用程序所必要的开销。

看来内存方面需要做优化了,考虑做缓冲处理,不经常渲染的BLOCK要从内存中删除,
这将是下一个目标,只把经常使用的BLOCK放入到内存里去。

地图可以无限大,内存不能无限大啊!

只是还每想好算法,怎么样才算是是“经常”怎么才算“不经常”渲染的BLOCK?
只有个模糊的想法,具体实现怎么做?希望有经验的朋友给予指教!
[em24]
sf_2007419233435.jpg

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-4-19 23:58:00 | 显示全部楼层

Re:lod地形贴图有了进展,有效果图,nostopforever和各位朋

另外本帖希望能加精,对于搞LOD的朋友应该还是有帮助的,我基本单枪匹马,走了很多弯路。

11

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2007-4-20 16:41:00 | 显示全部楼层

Re:lod地形贴图有了进展,有效果图,nostopforever和各位朋

我的CPU:Intel X86 730MHz 内存128 显卡Geforce440

30

主题

357

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
QQ
发表于 2007-4-20 16:53:00 | 显示全部楼层

Re:lod地形贴图有了进展,有效果图,nostopforever和各位朋

你可以尝试将索引组织成这样:
LOD级别  第1种索引 第2种索引 第3种索引
1          x          xx        xxx
2          y          yy        yyy
3          z          zz        zzz
这样,所有索引都可以从这9种中选。一次都不用LOCK。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-4-20 18:19:00 | 显示全部楼层

Re:lod地形贴图有了进展,有效果图,nostopforever和各位朋

楼上的提议不错,我可以把索引做成静态的,这样所有block都可以共用了
同一些列的索引了,然后分多级别来列举所有可能出现的情况.
彻底的抛弃lock unlock!!!

好,  不失为上乘的想法!!!![em16]

太感谢了,  我将再做次大手术~!

还有自动释放BLOCK的问题我也有了个基本思路,那就是类似session的东西,有个生命周期,用线程隔一段时间扫描一次,然后生存期递减,这个间隔期,如果长时间没有被访问到的,将递减到0然后自动释放这个block

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-4-20 19:24:00 | 显示全部楼层

Re:lod地形贴图有了进展,有效果图,nostopforever和各位朋

回家的路上又想了一想算法,32x32的形态太多了,我想把所有出现的情况用算法直接加到map里面去
也就是6个值决定BLOCK形态 ]
blocksize(int), lodlevel(int),  fixTop(BOOL) fixDown(BOOL) ,fixLeft(BOOL),fixRight(BOOL)
我之前已经能根据这6个参数来动态生成各种BLOCK了,这下很简单,只需要把这6个参数的值连接成一个字符窜
做为KEY,把生成出来的索引缓冲作为value 放入一个静态的MAP里面
用MAP来管理,存算法实现了才较爽,这样我的代码改动就很小很小了,太好了!!

3

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2007-4-25 15:35:00 | 显示全部楼层

Re:lod地形贴图有了进展,有效果图,nostopforever和各位朋

感觉地形的贴图还是用shader比较好。。。。。。。现在玩家的显卡几乎都不错
可以先看看这个讲wow的文章
http://blog.csdn.net/ZERO2046/archive/2006/05/30/764121.aspx
wow地形用了4层纹理,渲染时使用5张纹理,第5张纹理的r,g,b保存的是那4张纹理混合的alpha值,第5张纹理的a保存的是地形的阴影。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-4-26 11:43:00 | 显示全部楼层

Re:lod地形贴图有了进展,有效果图,nostopforever和各位朋

我现在还不是特别明白,地形的阴影为什么一定要用图混出来,光线变化了怎么办?阴影能变吗?
为什么不用法线+light自动出光照阴影,可动态,效果好,实现也简单。

真搞不懂。

32

主题

108

帖子

108

积分

注册会员

Rank: 2

积分
108
发表于 2007-4-26 15:36:00 | 显示全部楼层

Re: Re:lod地形贴图有了进展,有效果图,nostopforever和各位

tonykee: Re:lod地形贴图有了进展,有效果图,nostopforever和各位朋友可继续给些建议
另外本帖希望能加精,对于搞LOD的朋友应该还是有帮助的,我基本单枪匹马,走了很多弯路。

支持,希望你整理出一篇完整的文章贴出来让我们学习啊,真的能让我们少走很多弯路.
最近我也在学习地形渲染,比较郁闷,没头绪.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-16 01:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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