![]() ![]() OpenGL’s tessellation engine introduces three new components to the OpenGL pipeline: the tessellation control shader (TCS), the tessellation primitive generator (TPG), and the tessellation evaluation shader (TES). For terrain rendering, it would be nice to leverage this functionality by providing a smaller set of input primitives and allowing OpenGL to tessellate the interior of these input primitives to generate a larger number of output primitives efficiently. The role of the tessellation engine is to generate additional primitives on the GPU to be manipulated and rasterized given some kind of input. The tessellation engine was introduced in OpenGL version 4.0. See the “Rendering Pipeline Overview” article in the OpenGL Wiki for details about the OpenGL programmable Pipeline. ![]() These programs give control over the GPU hardware for different stages of the rendering pipeline and allow developers to implement rendering algorithms in whatever way they see fit.Īlthough knowledge of the programmable pipeline was vital for this project, a detailed description of the pipeline is beyond the scope of this report – the focus here deals more with how the tessellation engine operates. OpenGL shaders are written using the OpenGL Shading Language (GLSL). ![]() Shaders are programs that are executed by the GPU hardware at some stage in the programmable pipeline. As the API grew, more flexibility in how the graphics hardware got utilized was desired – a desire fulfilled in the development of shaders. Different rendering algorithms were fixed into the GPU and were simply configured through the API functions. Previous versions of OpenGL (before version 2.0) were considered a “fixed-function” graphics pipeline. ![]() It also provides great information about the tessellation engine in OpenGL. The OpenGL 4 Shading Language Cookbook was an invaluable resource when learning about the OpenGL programmable pipeline and the OpenGL Shading Language. The NVIDIA whitepaper DirectX 11 Terrain Tessellation serves as the main reference and motivation for the terrain rendering approaches in this project. Two main resources for the project were used ( many other references were consulted, of course these two were the primary motivators). This report will look at the basics on the OpenGL 4.x programmable pipeline, the role of the tessellation engine in this pipeline, two approaches to dynamic level-of-detail using tessellation, and two basic approaches for a terrain rendering layout. Finally, basic concepts for terrain data structures and rendering were evaluated. The role and usage of tessellation shaders and how to control the tessellation stage to dynamically alter the level of detail being rendered was next to be understood. Some basic foundation knowledge needed to be addressed first, such as understanding the OpenGL programmable pipeline (hardware tessellation is only available in “modern” OpenGL pipelines that run programmable shaders). The goal of this project was to explore some basic concepts for using tessellation with GPU acceleration to render large terrains in such a manner. The goal, as with many real-time rendering applications, is to render a high level of detail (LOD) without sacrificing efficiency and performance. Rendering large, detailed terrain meshes is an important issue in many graphics applications such as video games, simulators (flight, space, auto, world, etc.), and geographic information systems. The source code is available on BitBucket. Enjoy! Goals and Motivation This report was for a project/presentation assignment for my Computer Graphics course in the Fall 2014 semester. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |