前腐后继 发表于 2006-12-8 19:32:00

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

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