hi-island日志(四)

小明 2012-09-3 2,389 views

这次工作主要应用了projected grid,这是一种能实现无限网格浏览的技术,它能保证你的视口内一直保有网格,同时自动提供了lod,在水面渲染,无限地形等大规模顶点的应用中非常有用,paper及代码详见http://fileadmin.cs.lth.se/graphics/theses/projects/projgrid/

上面2图一张是128*128 的proj grid网格,一张是普通128*128个顶点为一个tile,10*10个tile的普通网格,可以看到pg网格定点数量很少,远处和近处的顶点分布均匀,而且pg的特点是无论摄像机朝向何处,网格都是与屏幕对齐的。上面两图对比,下面以普通方式实现的水面远处网格过于密集,存在非常多的顶点浪费,渲染效率低。

上面是近景帧速对比

可以看到当镜头拉远时proj grid的帧速保持不变,而传统基于tile组合的mesh则帧速下降非常明显。
由于proj grid需要根据投影后的网格反向变换为世界空间顶点,所以改动较大,包括纹理坐标、顶点坐标都要从世界空间反算,尤其是法线,由于网格对于世界空间并不是线性均匀分布的,通过pg顶点算出的法线细节不够,所以只能改成在cpu端计算由FFT得到的顶点生成的法线在ps中采样法线贴图了。但是效果很好,帧速提升明显,同时渲染质量基本保持不变。


    欢迎拍砖!