[转帖]地形场景渲染的一些心德 ? ? 

2006-12-08 19:32 发布

2915 0 0


使用的是分片地形

(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)室内的连接考虑

在剔除相关的类上下点功夫,,做到剔除室内外无关

B Color Smilies

你可能喜欢

[转帖]地形场景渲染的一些心德 ? ? 
联系
我们
快速回复 返回顶部 返回列表