| | '''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 ) |
| |
|
| | |
| | glUniform1dv=wrapper.wrapper(glUniform1dv).setInputArraySize( |
| | 'value', None |
| | ) |
| | |
| | glUniform2dv=wrapper.wrapper(glUniform2dv).setInputArraySize( |
| | 'value', None |
| | ) |
| | |
| | glUniform3dv=wrapper.wrapper(glUniform3dv).setInputArraySize( |
| | 'value', None |
| | ) |
| | |
| | glUniform4dv=wrapper.wrapper(glUniform4dv).setInputArraySize( |
| | 'value', None |
| | ) |
| | |
| | glUniformMatrix2dv=wrapper.wrapper(glUniformMatrix2dv).setInputArraySize( |
| | 'value', None |
| | ) |
| | |
| | glUniformMatrix3dv=wrapper.wrapper(glUniformMatrix3dv).setInputArraySize( |
| | 'value', None |
| | ) |
| | |
| | glUniformMatrix4dv=wrapper.wrapper(glUniformMatrix4dv).setInputArraySize( |
| | 'value', None |
| | ) |
| | |
| | glUniformMatrix2x3dv=wrapper.wrapper(glUniformMatrix2x3dv).setInputArraySize( |
| | 'value', None |
| | ) |
| | |
| | glUniformMatrix2x4dv=wrapper.wrapper(glUniformMatrix2x4dv).setInputArraySize( |
| | 'value', None |
| | ) |
| | |
| | glUniformMatrix3x2dv=wrapper.wrapper(glUniformMatrix3x2dv).setInputArraySize( |
| | 'value', None |
| | ) |
| | |
| | glUniformMatrix3x4dv=wrapper.wrapper(glUniformMatrix3x4dv).setInputArraySize( |
| | 'value', None |
| | ) |
| | |
| | glUniformMatrix4x2dv=wrapper.wrapper(glUniformMatrix4x2dv).setInputArraySize( |
| | 'value', None |
| | ) |
| | |
| | glUniformMatrix4x3dv=wrapper.wrapper(glUniformMatrix4x3dv).setInputArraySize( |
| | 'value', None |
| | ) |
| | glGetUniformdv=wrapper.wrapper(glGetUniformdv).setOutput( |
| | 'params',size=_glgets._glget_size_mapping,pnameArg='location',orPassIn=True |
| | ) |
| | |