Class ARBGPUShader5

java.lang.Object
org.lwjgl.opengl.ARBGPUShader5

public final class ARBGPUShader5 extends Object
Native bindings to the ARB_gpu_shader5 extension.

This extension provides a set of new features to the OpenGL Shading Language and related APIs to support capabilities of new GPUs, extending the capabilities of version 1.50 of the OpenGL Shading Language. Shaders using the new functionality provided by this extension should enable this functionality via the construct:


 #extension GL_ARB_gpu_shader5 : require     (or enable)

This extension provides a variety of new features for all shader types, including:

  • support for indexing into arrays of samplers using non-constant indices, as long as the index doesn't diverge if multiple shader invocations are run in lockstep;
  • extending the uniform block capability of OpenGL 3.1 and 3.2 to allow shaders to index into an array of uniform blocks;
  • support for implicitly converting signed integer types to unsigned types, as well as more general implicit conversion and function overloading infrastructure to support new data types introduced by other extensions;
  • a "precise" qualifier allowing computations to be carried out exactly as specified in the shader source to avoid optimization-induced invariance issues (which might cause cracking in tessellation);
  • new built-in functions supporting:
    • fused floating-point multiply-add operations;
    • splitting a floating-point number into a significand and exponent (frexp), or building a floating-point number from a significand and exponent (ldexp);
    • integer bitfield manipulation, including functions to find the position of the most or least significant set bit, count the number of one bits, and bitfield insertion, extraction, and reversal;
    • packing and unpacking vectors of small fixed-point data types into a larger scalar; and
    • convert floating-point values to or from their integer bit encodings;
  • extending the textureGather() built-in functions provided by ARB_texture_gather:
    • allowing shaders to select any single component of a multi-component texture to produce the gathered 2x2 footprint;
    • allowing shaders to perform a per-sample depth comparison when gathering the 2x2 footprint using for shadow sampler types;
    • allowing shaders to use arbitrary offsets computed at run-time to select a 2x2 footprint to gather from; and
    • allowing shaders to use separate independent offsets for each of the four texels returned, instead of requiring a fixed 2x2 footprint.

This extension also provides some new capabilities for individual shader types, including:

  • support for instanced geometry shaders, where a geometry shader may be run multiple times for each primitive, including a built-in gl_InvocationID to identify the invocation number;
  • support for emitting vertices in a geometry program where each vertex emitted may be directed independently at a specified vertex stream (as provided by ARB_transform_feedback3), and where each shader output is associated with a stream;
  • support for reading a mask of covered samples in a fragment shader; and
  • support for interpolating a fragment shader input at a programmable offset relative to the pixel center, a programmable sample number, or at the centroid.

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

  • Field Details

    • GL_GEOMETRY_SHADER_INVOCATIONS

      public static final int GL_GEOMETRY_SHADER_INVOCATIONS
      Accepted by the pname parameter of GetProgramiv.
      See Also:
    • GL_MAX_GEOMETRY_SHADER_INVOCATIONS

      public static final int GL_MAX_GEOMETRY_SHADER_INVOCATIONS
      Accepted by the pname parameter of GetBooleanv, GetIntegerv, GetFloatv, GetDoublev, and GetInteger64v.
      See Also:
    • GL_MIN_FRAGMENT_INTERPOLATION_OFFSET

      public static final int GL_MIN_FRAGMENT_INTERPOLATION_OFFSET
      Accepted by the pname parameter of GetBooleanv, GetIntegerv, GetFloatv, GetDoublev, and GetInteger64v.
      See Also:
    • GL_MAX_FRAGMENT_INTERPOLATION_OFFSET

      public static final int GL_MAX_FRAGMENT_INTERPOLATION_OFFSET
      Accepted by the pname parameter of GetBooleanv, GetIntegerv, GetFloatv, GetDoublev, and GetInteger64v.
      See Also:
    • GL_FRAGMENT_INTERPOLATION_OFFSET_BITS

      public static final int GL_FRAGMENT_INTERPOLATION_OFFSET_BITS
      Accepted by the pname parameter of GetBooleanv, GetIntegerv, GetFloatv, GetDoublev, and GetInteger64v.
      See Also:
    • GL_MAX_VERTEX_STREAMS

      public static final int GL_MAX_VERTEX_STREAMS
      Accepted by the pname parameter of GetBooleanv, GetIntegerv, GetFloatv, GetDoublev, and GetInteger64v.
      See Also: