camenduru's picture
thanks to vye16 ❤
fb5159d
'''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:
http://www.opengl.org/registry/specs/ARB/gpu_shader_fp64.txt
'''
from OpenGL import platform, constant, arrays
from OpenGL import extensions, wrapper
import ctypes
from OpenGL.raw.GL import _types, _glgets
from OpenGL.raw.GL.ARB.gpu_shader_fp64 import *
from OpenGL.raw.GL.ARB.gpu_shader_fp64 import _EXTENSION_NAME
def glInitGpuShaderFp64ARB():
'''Return boolean indicating whether this extension is available'''
from OpenGL import extensions
return extensions.hasGLExtension( _EXTENSION_NAME )
# INPUT glUniform1dv.value size not checked against count
glUniform1dv=wrapper.wrapper(glUniform1dv).setInputArraySize(
'value', None
)
# INPUT glUniform2dv.value size not checked against count
glUniform2dv=wrapper.wrapper(glUniform2dv).setInputArraySize(
'value', None
)
# INPUT glUniform3dv.value size not checked against count
glUniform3dv=wrapper.wrapper(glUniform3dv).setInputArraySize(
'value', None
)
# INPUT glUniform4dv.value size not checked against count
glUniform4dv=wrapper.wrapper(glUniform4dv).setInputArraySize(
'value', None
)
# INPUT glUniformMatrix2dv.value size not checked against count
glUniformMatrix2dv=wrapper.wrapper(glUniformMatrix2dv).setInputArraySize(
'value', None
)
# INPUT glUniformMatrix3dv.value size not checked against count
glUniformMatrix3dv=wrapper.wrapper(glUniformMatrix3dv).setInputArraySize(
'value', None
)
# INPUT glUniformMatrix4dv.value size not checked against count
glUniformMatrix4dv=wrapper.wrapper(glUniformMatrix4dv).setInputArraySize(
'value', None
)
# INPUT glUniformMatrix2x3dv.value size not checked against count
glUniformMatrix2x3dv=wrapper.wrapper(glUniformMatrix2x3dv).setInputArraySize(
'value', None
)
# INPUT glUniformMatrix2x4dv.value size not checked against count
glUniformMatrix2x4dv=wrapper.wrapper(glUniformMatrix2x4dv).setInputArraySize(
'value', None
)
# INPUT glUniformMatrix3x2dv.value size not checked against count
glUniformMatrix3x2dv=wrapper.wrapper(glUniformMatrix3x2dv).setInputArraySize(
'value', None
)
# INPUT glUniformMatrix3x4dv.value size not checked against count
glUniformMatrix3x4dv=wrapper.wrapper(glUniformMatrix3x4dv).setInputArraySize(
'value', None
)
# INPUT glUniformMatrix4x2dv.value size not checked against count
glUniformMatrix4x2dv=wrapper.wrapper(glUniformMatrix4x2dv).setInputArraySize(
'value', None
)
# INPUT glUniformMatrix4x3dv.value size not checked against count
glUniformMatrix4x3dv=wrapper.wrapper(glUniformMatrix4x3dv).setInputArraySize(
'value', None
)
glGetUniformdv=wrapper.wrapper(glGetUniformdv).setOutput(
'params',size=_glgets._glget_size_mapping,pnameArg='location',orPassIn=True
)
### END AUTOGENERATED SECTION