Chapter 1. Generating Complex Procedural Terrains Using the GPUdeveloper.nvidia.com
![bdd13779dee5135f6783aa8035ed314e.png](https://i-blog.csdnimg.cn/blog_migrate/f0224bc9e14a23820919504cc6fdd59e.png)
介绍
传统的地形生成方法受限于CPU生成的高度图,地形不够复杂也不够吸引人。本文使用GPU在交互帧率下快速生成大块的复杂程序化地形。
Marching Cubes和密度函数
密度函数(density function): 用来描述地形表面,输入为空间坐标,若结果为正则该点在地形中,若为负则在空气或水中,为0则为地形表面。
Marching Cubes算法:将地形块细分成32x32x32的体素单元,在体素内生成正确的地形多边形。算法输入为八个顶点的密度值,如果八个密度值都为正或都为负,则该体素单元都在地形内或地形外,其他情况下则会在地形表面生成1-5个多边形。
生成多边形的方式为:得到八个密度值后,若为正则记为1,若为负则记为0,连接这八个字节位并把结果叫做case,case值的范围为0-255,如果case为0或255则该体素在地形内或地形外,其它情况下通过索引查找表来确定生成多少个多边形及如何生成(多边形顶点所在的体素边序号),多边形顶点在体素边上的位置由密度值插值决定,输出为一个三角形列表