OpenGL extension ARB.gpu_shader_fp64
This module customises the behaviour of the OpenGL.raw.GL.ARB.gpu_shader_fp64 to provide a more Python-friendly API
Overview (from the spec)
This extension allows GLSL shaders to use double-precision floating-point data types, including vectors and matrices of doubles. Doubles may be used as inputs, outputs, and uniforms.
The shading language supports various arithmetic and comparison operators on double-precision scalar, vector, and matrix types, and provides a set of built-in functions including:
  • square roots and inverse square roots;
  • 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);
  • absolute value, sign tests, various functions to round to an integer value, modulus, minimum, maximum, clamping, blending two values, step functions, and testing for infinity and NaN values;
  • packing and unpacking doubles into a pair of 32-bit unsigned integers;
  • matrix component-wise multiplication, and computation of outer products, transposes, determinants, and inverses; and
  • vector relational functions.
Double-precision versions of angle, trigonometry, and exponential functions are not supported.
Implicit conversions are supported from integer and single-precision floating-point values to doubles, and this extension uses the relaxed function overloading rules specified by the ARB_gpu_shader5 extension to resolve ambiguities.
This extension provides API functions for specifying double-precision uniforms in the default uniform block, including functions similar to the uniform functions added by EXT_direct_state_access (if supported).
This extension provides an "LF" suffix for specifying double-precision constants. Floating-point constants without a suffix in GLSL are treated as single-precision values for backward compatibility with versions not supporting doubles; similar constants are treated as double-precision values in the "C" programming language.
This extension does not support interpolation of double-precision values; doubles used as fragment shader inputs must be qualified as "flat". Additionally, this extension does not allow vertex attributes with 64-bit components. That support is added separately by EXT_vertex_attrib_64bit.
The official definition of this extension is available here:


glGetUniformdv( program , location , params )


GL_DOUBLE (5130)
GL_DOUBLE_MAT2 (36678)
GL_DOUBLE_MAT2x3 (36681)
GL_DOUBLE_MAT2x4 (36682)
GL_DOUBLE_MAT3 (36679)
GL_DOUBLE_MAT3x2 (36683)
GL_DOUBLE_MAT3x4 (36684)
GL_DOUBLE_MAT4 (36680)
GL_DOUBLE_MAT4x2 (36685)
GL_DOUBLE_MAT4x3 (36686)
GL_DOUBLE_VEC2 (36860)
GL_DOUBLE_VEC3 (36861)
GL_DOUBLE_VEC4 (36862)