| The large scale three-dimensional terrain rendering is a hot issue in computer graphics research field. It plays an important role in GIS. With appears of the concept "digital earth" and "global information grid", more and more attention was pay in creating global virtual terrain sense. In the other hand, the graphics processing units (GPU) changes rapidly and can process more and more triangles per second, and now GPU can provide flexible programming model in vertex and pixel shader. Now GPU can do many tasks which used to be done on CPU, such as view frustum culling and LOD level controlling. GPU even can do some common computations (GPGPU). The main problems of the global scale terrain rendering are how to manage the terrain data and reduce the larges amount triangles. The different coordinate system of the data also affects the rendering. Using latest graphics techniques, we study these problems and create a photograph about global terrain rendering.1. Quad-tree based delamination and partition about global terrain data. The global terrain data is very large and the size of the data exceeds the capabilities of current graphics equipment by far. And it is not necessary to always use the terrain data that has the highest resolution. We delaminates terrain data based on quad-tree. From the highest level, the next level has twice resolution and the next level also has twice row and column numbers of terrain block, so all terrain blocks ha the same resolution. Using quad-tree, it is easy to access the terrain block information that used to cull and level control. As all terrain blocks have same resolution, we can use some method to optimize the rendering performance.2. View-dependent LOD algorithm. We subdivide a terrain block until the desire detail. The subdividing depends on the terrain block level, the terrain's roughness and the distance between the viewer and the terrain block. The roughness factor is pre-calculated to improve speed. At the same time we performs culling, drops the terrain blocks that out of view range.3. Mouse pick up. Sometimes we want to know a screen point's world position. DirectX provide us with a method called "z-buffer", but it has some shortage that it can not provide enough accuracy sometimes. So we use a new method called "radial intersection". We gives a result based on the Direct3D transform matrix.4. GPU friendly terrain block rendering. We know that all terrain blocks has the same resolution. And there is a new method called "Vertex Texture Fetch" which can let us using texture data in vertex shader. So all the terrain blocks can use the same vertex buffer and index buffer. In the vertex buffer there are only position data, and using "Vertex Texture Fetch" technique we can get the height data from the height texture. Using this method we only need a vertex buffer and an index buffer rather than provide separate vertex and index buffers for each terrain block. At the same time the communication between CPU and GPU also reduce. We can use GPU more efficiently. CPU can do more other works.5. Plug-in system. We discuss the advantage and disadvantage of micro core and huge core framework. Then we design a plug-in system based on the huge core framework. It is easy to write and use plug-in. Microsoft .net framework provide us with runtime compile capability, so we can use c# source code as a plug-in.At last, we give a summary of the thesis and give some work to do future. |