人气 199

[游戏程序] [转帖]地形场景渲染的一些心德 ? ? [复制链接]

九艺网 2017-3-10 17:01:55

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
使用的是分片地形
(1)用四叉树管理tile,,并做Frustum Cull
前者在tile很多区域远大于视区时有好的CPU性能,,不过我还是用了视锥包围盒投影来加快剔除,,后者不用多说,,应该必做把。还有地形tile之间的OC我还是没做,,比较复杂;
(2)对地表渲染状态排序绘制
先按TextureStageState排,,再按纹理排,,不过实际使用中好像效果不是很明显(可能跟纹理在显存中有关吧)
(3)地形使用LOD
我使用了Interlocking Tiles的方法,,不过我没把tile做成米字形,,LOD等级的决定使用与计算的方法,,就是按等级距离先计算好一个模板,,运行时当视点所在的tile改变时,,把这个模板拷入相应位置。
还有注意顶点排的顺序,,最后我对index buffer也做了一下上次状态检测,,使切换尽量少(可能没必要)
这一条效果十分明显
(4)使用LOD地形的相关问题
地表过渡:LOD时地表细节由一张贴图组成,,不使用LOD时使用多纹理混合
光照问题:为每个tile加一张光照图,,可以把物体的阴影也算到里面去
物体阴影:细节要求高的话,,我的解决方案是使用预计算的贴花
(5)景物的绘制
先剔除,,我用了近似的方法,,即不可见tile上的景物不可见(对景物和地形有一定的要求)
然后先包围球剔除,,再包围盒剔除(可能是多余的,,可以直接包围盒剔除)
景物的排序,,这个最头痛,,如果景物只使用一张贴图时可以按景物类型排
不然,,就比较麻烦
景物的LOD,,我使用两级LOD,,不用额外的计算位置,,在最高细节的地形tile里使用高细节景物,,其她用低细节的(不知道这样合不合理)
(6)其她事项(有些还没实现)
天空盒:关z-buffer z-write
水特效:做剔除
粒子:LOD,,做剔除
人物:LOD,,做剔除
关于灯光效果:如果景物做了光照,,在绘低细节景物时关闭光照
(7)室内的连接考虑
在剔除相关的类上下点功夫,,做到剔除室内外无关
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|小黑屋|九艺游戏动画论坛 ( 津ICP备2022000452号-1 )

GMT+8, 2024-4-24 10:04 , Processed in 0.150832 second(s), 23 queries .

Powered by Discuz! X3.4  © 2001-2017 Discuz Team.