Tessellation for OpenGL* ES 3.1 on Android*

Published: 06/30/2014, Last Updated: 06/30/2014

Download Code Sample

This is a sample article with source code created by Kyle Weicht, Software Engineer with the Visual Computing Engineering team at Intel Corporation. This article extends exploratory and proof of concept work by Leigh Davies, Software Engineer with the Visual Computing Engineering team at Intel Corporation.

Introduction

This article discusses how to use and implement tessellation in OpenGL* ES 3.0 on Android*.

What is Tessellation?

Tessellation is a hardware feature that allows a graphics processing unit (GPU) to dynamically subdivide primitives. This feature also allows you to control new vertex placements.

One common use of tessellation is to dynamically scale the level of detail of a terrain based on the distance from the camera. This scaling maintains the visual fidelity of a highly triangulated terrain with great performance.

To support this technique, tessellation shaders were recently added to DirectX* 11 and OpenGL 4.0. OpenGL ES does not have tessellation shaders yet, but Intel’s Bay Trail platform now has an extension that would allow for the use of tessellation shaders in OpenGL ES 3.0.

Process for implementing tessellation

The following steps outline how the GPU uses tessellation shaders to dynamically scale terrain. The base terrain consists of a low-resolution mesh and a high resolution height map texture. . 

  1. The tessellation control shader
  • calculates the distance from the current triangle to the camera
  • scales the level of tessellation based on the distance calculation.

Note: When the camera is close to the triangle, a higher degree of tessellation is performed.

  1. The tessellation evaluation shader
  • adds the new vertices
  • samples the high-resolution height map
  • moves the new vertices up or down, based on the value of the height map.

Result: The tessellated triangles that are close to the camera sample the height map at finer detail and add the small crevices and bumps where the camera can see them.

Tessellation Off

Tessellation On

Resources

https://www.opengl.org/wiki/Tessellation

http://www.khronos.org/registry/gles/extensions/EXT/EXT_tessellation_shader.txt

Kyle Weicht
07-09-2014
07-09-2014
Graphics Tech Samples
Tessellation for OpenGL ES 3.1 on Android
/content/dam/develop/external/us/en/images/tesson-517582.png
Tessellation is a hardware feature that allows a graphics processing unit (GPU) to dynamically subdivide primitives. This feature also allows you to control new vertex placements.

Attachment Size
opengl-es-tessellation.zip 73.3 MB

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804