Top Description Fields Constructors Methods
org.lwjgl.opengl

public Class ARBTessellationShader

extends Object
Class Inheritance
Imports
java.nio.*, org.lwjgl.system.*

Native bindings to the ARB_tessellation_shader extension.

This extension introduces new tessellation stages and two new shader types to the OpenGL primitive processing pipeline. These pipeline stages operate on a new basic primitive type, called a patch. A patch consists of a fixed-size collection of vertices, each with per-vertex attributes, plus a number of associated per-patch attributes. Tessellation control shaders transform an input patch specified by the application, computing per-vertex and per-patch attributes for a new output patch. A fixed-function tessellation primitive generator subdivides the patch, and tessellation evaluation shaders are used to compute the position and attributes of each vertex produced by the tessellator.

When tessellation is active, it begins by running the optional tessellation control shader. This shader consumes an input patch and produces a new fixed-size output patch. The output patch consists of an array of vertices, and a set of per-patch attributes. The per-patch attributes include tessellation levels that control how finely the patch will be tessellated. For each patch processed, multiple tessellation control shader invocations are performed -- one per output patch vertex. Each tessellation control shader invocation writes all the attributes of its corresponding output patch vertex. A tessellation control shader may also read the per-vertex outputs of other tessellation control shader invocations, as well as read and write shared per-patch outputs. The tessellation control shader invocations for a single patch effectively run as a group. A built-in barrier() function is provided to allow synchronization points where no shader invocation will continue until all shader invocations have reached the barrier.

The tessellation primitive generator then decomposes a patch into a new set of primitives using the tessellation levels to determine how finely tessellated the output should be. The primitive generator begins with either a triangle or a quad, and splits each outer edge of the primitive into a number of segments approximately equal to the corresponding element of the outer tessellation level array. The interior of the primitive is tessellated according to elements of the inner tessellation level array. The primitive generator has three modes: "triangles" and "quads" split a triangular or quad-shaped patch into a set of triangles that cover the original patch; "isolines" splits a quad-shaped patch into a set of line strips running across the patch horizontally. Each vertex generated by the tessellation primitive generator is assigned a (u,v) or (u,v,w) coordinate indicating its relative location in the subdivided triangle or quad.

For each vertex produced by the tessellation primitive generator, the tessellation evaluation shader is run to compute its position and other attributes of the vertex, using its (u,v) or (u,v,w) coordinate. When computing final vertex attributes, the tessellation evaluation shader can also read the attributes of any of the vertices of the patch written by the tessellation control shader. Tessellation evaluation shader invocations are completely independent, although all invocations for a single patch share the same collection of input vertices and per-patch attributes.

The tessellator operates on vertices after they have been transformed by a vertex shader. The primitives generated by the tessellator are passed further down the OpenGL pipeline, where they can be used as inputs to geometry shaders, transform feedback, and the rasterizer.

The tessellation control and evaluation shaders are both optional. If neither shader type is present, the tessellation stage has no effect. If no tessellation control shader is present, the input patch provided by the application is passed directly to the tessellation primitive generator, and a set of default tessellation level parameters is used to control primitive generation. In this extension, patches may not be passed beyond the tessellation evaluation shader, and an error is generated if an application provides patches and the current program object contains no tessellation evaluation shader.

Requires GL32 and GLSL 1.50. Promoted to core in OpenGL 4.0.

Field Summary

Modifier and TypeField and Description
public static final int
GL_FRACTIONAL_EVEN

Returned by GetProgramiv when pname is TESS_GEN_SPACING.

public static final int
GL_FRACTIONAL_ODD

Returned by GetProgramiv when pname is TESS_GEN_SPACING.

public static final int
GL_ISOLINES

Returned by GetProgramiv when pname is TESS_GEN_MODE.

public static final int
GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_PATCH_VERTICES

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_TESS_CONTROL_INPUT_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_TESS_GEN_LEVEL

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_MAX_TESS_PATCH_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_PATCH_DEFAULT_INNER_LEVEL

Accepted by the pname parameter of PatchParameterfv, GetBooleanv, GetDoublev, GetFloatv, and GetIntegerv, and GetInteger64v.

public static final int
GL_PATCH_DEFAULT_OUTER_LEVEL

Accepted by the pname parameter of PatchParameterfv, GetBooleanv, GetDoublev, GetFloatv, and GetIntegerv, and GetInteger64v.

public static final int
GL_PATCH_VERTICES

Accepted by the pname parameter of PatchParameteri, GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

public static final int
GL_PATCHES

Accepted by the mode parameter of Begin and all vertex array functions that implicitly call Begin.

public static final int
GL_TESS_CONTROL_OUTPUT_VERTICES

Accepted by the pname parameter of GetProgramiv.

public static final int
GL_TESS_CONTROL_SHADER

Accepted by the type parameter of CreateShader and returned by the params parameter of GetShaderiv.

public static final int
GL_TESS_EVALUATION_SHADER

Accepted by the type parameter of CreateShader and returned by the params parameter of GetShaderiv.

public static final int
GL_TESS_GEN_MODE

Accepted by the pname parameter of GetProgramiv.

public static final int
GL_TESS_GEN_POINT_MODE

Accepted by the pname parameter of GetProgramiv.

public static final int
GL_TESS_GEN_SPACING

Accepted by the pname parameter of GetProgramiv.

public static final int
GL_TESS_GEN_VERTEX_ORDER

Accepted by the pname parameter of GetProgramiv.

public static final int
GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER

Accepted by the pname parameter of GetActiveUniformBlockiv.

public static final int
GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER

Accepted by the pname parameter of GetActiveUniformBlockiv.

Constructor Summary

AccessConstructor and Description
protected

Method Summary

Modifier and TypeMethod and Description
public static void
glPatchParameterfv(int
the name of the parameter to set. One of:
PATCH_DEFAULT_OUTER_LEVELPATCH_DEFAULT_INNER_LEVEL
pname
,
FloatBuffer
an array containing the new values for the parameter given by pname
values
)

Specifies an array of float values for the specified parameter for patch primitives.

public static void
glPatchParameterfv(int pname, float[] values)

Array version of: PatchParameterfv

public static void
glPatchParameteri(int
the name of the parameter to set. Must be:
PATCH_VERTICES
pname
,
int
the new value for the parameter given by pname
value
)

Specifies the integer value of the specified parameter for patch primitives.

public static void
nglPatchParameterfv(int pname, long values)

Unsafe version of: PatchParameterfv

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

GL_FRACTIONAL_EVENback to summary
public static final int GL_FRACTIONAL_EVEN

Returned by GetProgramiv when pname is TESS_GEN_SPACING.

GL_FRACTIONAL_ODDback to summary
public static final int GL_FRACTIONAL_ODD

Returned by GetProgramiv when pname is TESS_GEN_SPACING.

GL_ISOLINESback to summary
public static final int GL_ISOLINES

Returned by GetProgramiv when pname is TESS_GEN_MODE.

GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTSback to summary
public static final int GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTSback to summary
public static final int GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_PATCH_VERTICESback to summary
public static final int GL_MAX_PATCH_VERTICES

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_TESS_CONTROL_INPUT_COMPONENTSback to summary
public static final int GL_MAX_TESS_CONTROL_INPUT_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTSback to summary
public static final int GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITSback to summary
public static final int GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTSback to summary
public static final int GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_TESS_CONTROL_UNIFORM_BLOCKSback to summary
public static final int GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTSback to summary
public static final int GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_TESS_EVALUATION_INPUT_COMPONENTSback to summary
public static final int GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTSback to summary
public static final int GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITSback to summary
public static final int GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKSback to summary
public static final int GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTSback to summary
public static final int GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_TESS_GEN_LEVELback to summary
public static final int GL_MAX_TESS_GEN_LEVEL

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_MAX_TESS_PATCH_COMPONENTSback to summary
public static final int GL_MAX_TESS_PATCH_COMPONENTS

Accepted by the pname parameter of GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_PATCH_DEFAULT_INNER_LEVELback to summary
public static final int GL_PATCH_DEFAULT_INNER_LEVEL

Accepted by the pname parameter of PatchParameterfv, GetBooleanv, GetDoublev, GetFloatv, and GetIntegerv, and GetInteger64v.

GL_PATCH_DEFAULT_OUTER_LEVELback to summary
public static final int GL_PATCH_DEFAULT_OUTER_LEVEL

Accepted by the pname parameter of PatchParameterfv, GetBooleanv, GetDoublev, GetFloatv, and GetIntegerv, and GetInteger64v.

GL_PATCH_VERTICESback to summary
public static final int GL_PATCH_VERTICES

Accepted by the pname parameter of PatchParameteri, GetBooleanv, GetDoublev, GetFloatv, GetIntegerv, and GetInteger64v.

GL_PATCHESback to summary
public static final int GL_PATCHES

Accepted by the mode parameter of Begin and all vertex array functions that implicitly call Begin.

GL_TESS_CONTROL_OUTPUT_VERTICESback to summary
public static final int GL_TESS_CONTROL_OUTPUT_VERTICES

Accepted by the pname parameter of GetProgramiv.

GL_TESS_CONTROL_SHADERback to summary
public static final int GL_TESS_CONTROL_SHADER

Accepted by the type parameter of CreateShader and returned by the params parameter of GetShaderiv.

GL_TESS_EVALUATION_SHADERback to summary
public static final int GL_TESS_EVALUATION_SHADER

Accepted by the type parameter of CreateShader and returned by the params parameter of GetShaderiv.

GL_TESS_GEN_MODEback to summary
public static final int GL_TESS_GEN_MODE

Accepted by the pname parameter of GetProgramiv.

GL_TESS_GEN_POINT_MODEback to summary
public static final int GL_TESS_GEN_POINT_MODE

Accepted by the pname parameter of GetProgramiv.

GL_TESS_GEN_SPACINGback to summary
public static final int GL_TESS_GEN_SPACING

Accepted by the pname parameter of GetProgramiv.

GL_TESS_GEN_VERTEX_ORDERback to summary
public static final int GL_TESS_GEN_VERTEX_ORDER

Accepted by the pname parameter of GetProgramiv.

GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADERback to summary
public static final int GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER

Accepted by the pname parameter of GetActiveUniformBlockiv.

GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADERback to summary
public static final int GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER

Accepted by the pname parameter of GetActiveUniformBlockiv.

Constructor Detail

ARBTessellationShaderback to summary
protected ARBTessellationShader()

Method Detail

glPatchParameterfvback to summary
public static void glPatchParameterfv(int pname, FloatBuffer values)

Specifies an array of float values for the specified parameter for patch primitives.

Parameters
pname:int

the name of the parameter to set. One of:

PATCH_DEFAULT_OUTER_LEVELPATCH_DEFAULT_INNER_LEVEL
values:FloatBuffer

an array containing the new values for the parameter given by pname

glPatchParameterfvback to summary
public static void glPatchParameterfv(int pname, float[] values)

Array version of: PatchParameterfv

glPatchParameteriback to summary
public static void glPatchParameteri(int pname, int value)

Specifies the integer value of the specified parameter for patch primitives.

Parameters
pname:int

the name of the parameter to set. Must be:

PATCH_VERTICES
value:int

the new value for the parameter given by pname

nglPatchParameterfvback to summary
public static void nglPatchParameterfv(int pname, long values)

Unsafe version of: PatchParameterfv