游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4633|回复: 7

LOD of multi-layered terrain

[复制链接]

46

主题

281

帖子

313

积分

中级会员

Rank: 3Rank: 3

积分
313
QQ
发表于 2005-3-24 01:47:00 | 显示全部楼层 |阅读模式
使用Gems II中提到的Interlocking Tiles实现LOD固然很快,但是它无法处理多层贴图,这是skull兄不久前在dreams兄的blog上的一段回复。
Interlocking Tiles的所有Tiles共享同一组index buffer,这是它节省内存的地方,也是它无法绘制多层贴图的主要原因。假设我们有一组贴图,分别为贴图1、贴图2…那么对于贴图1而言,并非所有的三角形中都含有它的成分,所以我们画了大量多余的三角形。
在生成interlocking tiles系统的多级index buffer时,我们仅仅考虑了相机与tile之间的距离这一个因素,现在,我们要把多层贴图这个因素考虑进去。
假设用ROAM
在初始化的时候,我们需要统计好每个非叶结点(这个时候把每个tile当成一棵最大的满二叉树,即分割到底)下所有子结点包含的顶点对于每层贴图的信息,这个用来决定是否继续分割。在渲染的时候,我们要用那三个参数(高度差,摄像机距离,贴图统计)来生成每层贴图的分割树,之后选择一棵(为了防止tile内部的裂缝,我们必须用同一棵树)来渲染,我们也可以对前一层贴图生成的树进行继续分割,这样可以保证最后得到的树对于每一层贴图都足够细致。
接下来我们画三角形,渲染的时候的循环是for each 贴图,我们只检查所有的叶结点,如果三角形的三个顶点当中包含该层贴图我们就画,否则不画。
渲染的时候我打算用单独一个流来保存alpha值,需要一提的是,渲染时候使用的alpha和我们习惯的混合度不一样,由于blend的顺序是依次进行,所以第一个贴图的权重最小,最后一个贴图的权重最大。
假设我们按照从上到下的顺序找出所有alpha不为0的贴图,比方说:
20%
20%
50%
10%(相加100%)
我们可以递推出渲染时候的alpha为:
1
0.5
5/9
0.1
注意:第一层定为100%,最后一层的值保持不变。

最后说一下,roam的确有点慢,可以的话还是要生成静态的index。

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2005-3-24 12:22:00 | 显示全部楼层

Re:LOD of multi-layered terrain

关注

7

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2005-3-25 00:52:00 | 显示全部楼层

Re:LOD of multi-layered terrain

确实如此,不过tiles的lod可以用ps shader来弥补多层纹理的缺憾。缺点是支持的显卡没有普及

7

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2005-3-25 01:11:00 | 显示全部楼层

Re:LOD of multi-layered terrain

还有一种方法是初始化的时候通过高度图和分层纹理生成新的大纹理,然后一次性覆盖上
一个想法,没有实践不知道是否可行。

18

主题

579

帖子

583

积分

高级会员

Rank: 4

积分
583
发表于 2005-3-25 15:37:00 | 显示全部楼层

Re: LOD of multi-layered terrain

Interlocking Tiles变差控制,在Real-Time 3D Terrain Engine using Dx9里面有明确的讲解。
多纹理,PS没有普及,我们正在开发的东西1年或者半年后,会在什么硬件上跑?
更何况33*33 Interlocking Tiles,将地形做成条带的速度是ROAM不能比的
相比之下,我觉得Interlocking Tiles更好

0

主题

14

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2005-4-12 15:19:00 | 显示全部楼层

Re:LOD of multi-layered terrain

I think LOD is the first obstacle on the way to mastering game programming! So, we must study it seriously!

16

主题

83

帖子

103

积分

注册会员

Rank: 2

积分
103
QQ
发表于 2005-4-13 13:59:00 | 显示全部楼层

Re:LOD of multi-layered terrain

Farcry就是用Interlocking Tiles的,它也是多层贴图的,不信你用D3DSpy跟一下它的Editer,连索引数据都能看到.也能看到它设置渲染状态.

33

主题

118

帖子

173

积分

注册会员

Rank: 2

积分
173
发表于 2005-4-13 17:44:00 | 显示全部楼层

Re:LOD of multi-layered terrain

farcry使用的Interlocking Tiles应该是它的一种变形用法,因为Interlocking Tiles中对tile使用的是triangle list进行渲染,而farcry使用的是triangle strip进行渲染的,不过从效率上来说应该差别不大,而且farcry的地形存在一个小bug,在它的接缝处会出现一个T型接缝,不知道大家注意了没有。感觉上Interlocking Tiles应该还是比较适应当前的GPU的,因为它大部分地方可以进行预处理,因此速度可以得到保证。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 06:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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