From 9bfd4c400c574058bcfa87f4fc013680053acf7a Mon Sep 17 00:00:00 2001 From: Chaosus Date: Thu, 11 Jul 2019 19:34:06 +0300 Subject: [PATCH] Update shader built-ins --- .../shading_reference/shading_language.rst | 376 +++++++++--------- 1 file changed, 197 insertions(+), 179 deletions(-) diff --git a/tutorials/shading/shading_reference/shading_language.rst b/tutorials/shading/shading_reference/shading_language.rst index 3429124f7..43f3a8b41 100644 --- a/tutorials/shading/shading_reference/shading_language.rst +++ b/tutorials/shading/shading_reference/shading_language.rst @@ -448,182 +448,200 @@ When vec_type (float), vec_int_type, vec_uint_type, vec_bool_type nomenclature i .. note:: For a list of the functions that are not available in the GLES2 backend, please see the :ref:`Differences between GLES2 and GLES3 doc `. -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| Function | Description | -+===============================================================================================+================================================+ -| vec_type **radians** ( vec_type ) | Convert degrees to radians | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **degrees** ( vec_type ) | Convert radians to degrees | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **sin** ( vec_type ) | Sine | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **cos** ( vec_type ) | Cosine | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **tan** ( vec_type ) | Tangent | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **asin** ( vec_type ) | Arc-Sine | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **acos** ( vec_type ) | Arc-Cosine | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **atan** ( vec_type ) | Arc-Tangent | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **atan** ( vec_type x, vec_type y ) | Arc-Tangent to convert vector to angle | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **sinh** ( vec_type ) | Hyperbolic-Sine | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **cosh** ( vec_type ) | Hyperbolic-Cosine | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **tanh** ( vec_type ) | Hyperbolic-Tangent | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **asinh** ( vec_type ) | Inverse-Hyperbolic-Sine | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **acosh** ( vec_type ) | Inverse-Hyperbolic-Cosine | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **atanh** ( vec_type ) | Inverse-Hyperbolic-Tangent | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **pow** ( vec_type, vec_type ) | Power | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **exp** ( vec_type ) | Base-e Exponential | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **exp2** ( vec_type ) | Base-2 Exponential | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **log** ( vec_type ) | Natural Logarithm | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **log2** ( vec_type ) | Base-2 Logarithm | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **sqrt** ( vec_type ) | Square Root | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **inversesqrt** ( vec_type ) | Inverse Square Root | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **abs** ( vec_type ) | Absolute | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_int_type **abs** ( vec_int_type ) | Absolute | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **sign** ( vec_type ) | Sign | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_int_type **sign** ( vec_int_type ) | Sign | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **floor** ( vec_type ) | Floor | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **round** ( vec_type ) | Round | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **roundEven** ( vec_type ) | Round nearest even | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **trunc** ( vec_type ) | Truncation | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **ceil** ( vec_type ) | Ceiling | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **fract** ( vec_type ) | Fractional | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **mod** ( vec_type, vec_type ) | Remainder | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **mod** ( vec_type, float ) | Remainder | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **modf** ( vec_type x, out vec_type i ) | Fractional of x, with i has integer part | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_scalar_type **min** ( vec_scalar_type a, vec_scalar_type b ) | Minimum | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_scalar_type **max** ( vec_scalar_type a, vec_scalar_type b ) | Maximum | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_scalar_type **clamp** ( vec_scalar_type value, vec_scalar_type min, vec_scalar_type max ) | Clamp to Min-Max | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **mix** ( vec_type a, vec_type b, float c ) | Linear Interpolate (Scalar Coef.) | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **mix** ( vec_type a, vec_type b, vec_type c ) | Linear Interpolate (Vector Coef.) | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **mix** ( vec_type a, vec_type b, bool c ) | Linear Interpolate (Bool Selection) | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **mix** ( vec_type a, vec_type b, vec_bool_type c ) | Linear Interpolate (Bool-Vector Selection) | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **step** ( vec_type a, vec_type b ) | ``b[i] < a[i] ? 0.0 : 1.0`` | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **step** ( float a, vec_type b ) | ``b[i] < a ? 0.0 : 1.0`` | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **smoothstep** ( vec_type a, vec_type b, vec_type c ) | Hermite Interpolate | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **smoothstep** ( float a, float b, vec_type c ) | Hermite Interpolate | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_bool_type **isnan** ( vec_type ) | Scalar, or vector component being nan | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_bool_type **isinf** ( vec_type ) | Scalar, or vector component being inf | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_int_type **floatBitsToInt** ( vec_type ) | Float->Int bit copying, no conversion | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_uint_type **floatBitsToUint** ( vec_type ) | Float->UInt bit copying, no conversion | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **intBitsToFloat** ( vec_int_type ) | Int->Float bit copying, no conversion | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **uintBitsToFloat** ( vec_uint_type ) | UInt->Float bit copying, no conversion | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| float **length** ( vec_type ) | Vector Length | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| float **distance** ( vec_type, vec_type ) | Distance between vector | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| float **dot** ( vec_type, vec_type ) | Dot Product | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec3 **cross** ( vec3, vec3 ) | Cross Product | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **normalize** ( vec_type ) | Normalize to unit length | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec3 **reflect** ( vec3 I, vec3 N ) | Reflect | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec3 **refract** ( vec3 I, vec3 N, float eta ) | Refract | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **faceforward** ( vec_type N, vec_type I, vec_type Nref ) | If dot(Nref, I) < 0, return N, otherwise –N | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| mat_type **matrixCompMult** ( mat_type, mat_type ) | Matrix Component Multiplication | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| mat_type **outerProduct** ( vec_type, vec_type ) | Matrix Outer Product | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| mat_type **transpose** ( mat_type ) | Transpose Matrix | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| float **determinant** ( mat_type ) | Matrix Determinant | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| mat_type **inverse** ( mat_type ) | Inverse Matrix | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_bool_type **lessThan** ( vec_scalar_type, vec_scalar_type ) | Bool vector cmp on < int/uint/float vectors | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_bool_type **greaterThan** ( vec_scalar_type, vec_scalar_type ) | Bool vector cmp on > int/uint/float vectors | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_bool_type **lessThanEqual** ( vec_scalar_type, vec_scalar_type ) | Bool vector cmp on <= int/uint/float vectors | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_bool_type **greaterThanEqual** ( vec_scalar_type, vec_scalar_type ) | Bool vector cmp on >= int/uint/float vectors | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_bool_type **equal** ( vec_scalar_type, vec_scalar_type ) | Bool vector cmp on == int/uint/float vectors | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_bool_type **notEqual** ( vec_scalar_type, vec_scalar_type ) | Bool vector cmp on != int/uint/float vectors | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| bool **any** ( vec_bool_type ) | Any component is true | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| bool **all** ( vec_bool_type ) | All components are true | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| bool **not** ( vec_bool_type ) | No components are true | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| ivec2 **textureSize** ( sampler2D_type s, int lod ) | Get the size of a texture | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| ivec2 **textureSize** ( samplerCube s, int lod ) | Get the size of a cubemap | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec4_type **texture** ( sampler2D_type s, vec2 uv [, float bias] ) | Perform a 2D texture read | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec4_type **texture** ( samplerCube s, vec3 uv [, float bias] ) | Perform a Cube texture read | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec4_type **textureProj** ( sampler2D_type s, vec3 uv [, float bias] ) | Perform a texture read with projection | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec4_type **textureProj** ( sampler2D_type s, vec4 uv [, float bias] ) | Perform a texture read with projection | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec4_type **textureLod** ( sampler2D_type s, vec2 uv, float lod ) | Perform a 2D texture read at custom mipmap | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec4_type **textureLod** ( samplerCube s, vec3 uv, float lod ) | Perform a Cube texture read at custom mipmap | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec4_type **textureProjLod** ( sampler2D_type s, vec3 uv, float lod ) | Perform a texture read with projection/lod | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec4_type **textureProjLod** ( sampler2D_type s, vec4 uv, float lod ) | Perform a texture read with projection/lod | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec4_type **texelFetch** ( sampler2D_type s, ivec2 uv, int lod ) | Fetch a single texel using integer coords | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **dFdx** ( vec_type ) | Derivative in x using local differencing | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **dFdy** ( vec_type ) | Derivative in y using local differencing | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ -| vec_type **fwidth** ( vec_type ) | Sum of absolute derivative in x and y | -+-----------------------------------------------------------------------------------------------+------------------------------------------------+ ++----------------------------------------------------------------------------+--------------------------------------------------+ +| Function | Description | ++============================================================================+==================================================+ +| vec_type **radians** ( vec_type degrees ) | Convert degrees to radians | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **degrees** ( vec_type radians ) | Convert radians to degrees | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **sin** ( vec_type x ) | Sine | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **cos** ( vec_type x ) | Cosine | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **tan** ( vec_type x ) | Tangent | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **asin** ( vec_type x ) | Arc-Sine | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **acos** ( vec_type x ) | Arc-Cosine | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **atan** ( vec_type y_over_x ) | Arc-Tangent | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **atan** ( vec_type y, vec_type x ) | Arc-Tangent to convert vector to angle | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **sinh** ( vec_type x ) | Hyperbolic-Sine | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **cosh** ( vec_type x ) | Hyperbolic-Cosine | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **tanh** ( vec_type x ) | Hyperbolic-Tangent | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **asinh** ( vec_type x ) | Inverse-Hyperbolic-Sine | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **acosh** ( vec_type x ) | Inverse-Hyperbolic-Cosine | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **atanh** ( vec_type x ) | Inverse-Hyperbolic-Tangent | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **pow** ( vec_type x, vec_type y ) | Power | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **exp** ( vec_type x ) | Base-e Exponential | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **exp2** ( vec_type x ) | Base-2 Exponential | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **log** ( vec_type x ) | Natural Logarithm | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **log2** ( vec_type x ) | Base-2 Logarithm | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **sqrt** ( vec_type x ) | Square Root | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **inversesqrt** ( vec_type x ) | Inverse Square Root | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **abs** ( vec_type x ) | Absolute | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| ivec_type **abs** ( ivec_type x ) | Absolute | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **sign** ( vec_type x ) | Sign | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| ivec_type **sign** ( ivec_type x ) | Sign | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **floor** ( vec_type x ) | Floor | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **round** ( vec_type x ) | Round | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **roundEven** ( vec_type x ) | Round nearest even | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **trunc** ( vec_type x ) | Truncation | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **ceil** ( vec_type x ) | Ceil | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **fract** ( vec_type x ) | Fractional | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **mod** ( vec_type x, vec_type y ) | Remainder | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **mod** ( vec_type x , float y ) | Remainder | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **modf** ( vec_type x, out vec_type i ) | Fractional of x, with i has integer part | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **min** ( vec_type a, vec_type b ) | Minimum | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **max** ( vec_type a, vec_type b ) | Maximum | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **clamp** ( vec_type x, vec_type min, vec_type max ) | Clamp to Min-Max | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **mix** ( float a, float b, float c ) | Linear Interpolate | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **mix** ( vec_type a, vec_type b, float c ) | Linear Interpolate (Scalar Coef.) | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **mix** ( vec_type a, vec_type b, vec_type c ) | Linear Interpolate (Vector Coef.) | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **mix** ( vec_type a, vec_type b, bvec_type c ) | Linear Interpolate (Boolean-Vector Selection) | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **step** ( vec_type a, vec_type b ) | ``b[i] < a[i] ? 0.0 : 1.0`` | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **step** ( float a, vec_type b) | ``b[i] < a ? 0.0 : 1.0`` | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **smoothstep** ( vec_type a, vec_type b, vec_type c ) | Hermite Interpolate | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **smoothstep** ( float a, float b, vec_type c ) | Hermite Interpolate | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| bvec_type **isnan** ( vec_type x ) | Scalar, or vector component being NaN | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| bvec_type **isinf** ( vec_type x ) | Scalar, or vector component being INF | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| ivec_type **floatBitsToInt** ( vec_type x ) | Float->Int bit copying, no conversion | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| uvec_type **floatBitsToUint** ( vec_type x ) | Float->UInt bit copying, no conversion | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **intBitsToFloat** ( ivec_type x ) | Int->Float bit copying, no conversion | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **uintBitsToFloat** ( uvec_type x ) | UInt->Float bit copying, no conversion | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| float **length** ( vec_type x ) | Vector Length | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| float **distance** ( vec_type a, vec_type b ) | Distance between vectors i.e ``length(a - b)`` | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| float **dot** ( vec_type a, vec_type b ) | Dot Product | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec3 **cross** ( vec3 a, vec3 b ) | Cross Product | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **normalize** ( vec_type x ) | Normalize to unit length | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec3 **reflect** ( vec3 I, vec3 N ) | Reflect | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec3 **refract** ( vec3 I, vec3 N, float eta ) | Refract | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **faceforward** ( vec_type N, vec_type I, vec_type Nref ) | If dot(Nref, I) < 0, return N, otherwise –N | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| mat_type **matrixCompMult** ( mat_type x, mat_type y ) | Matrix Component Multiplication | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| mat_type **outerProduct** ( vec_type column, vec_type row ) | Matrix Outer Product | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| mat_type **transpose** ( mat_type m ) | Transpose Matrix | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| float **determinant** ( mat_type m ) | Matrix Determinant | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| mat_type **inverse** ( mat_type m ) | Inverse Matrix | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| bvec_type **lessThan** ( vec_type x, vec_type y ) | Bool vector cmp on < int/uint/float vectors | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| bvec_type **greaterThan** ( vec_type x, vec_type y ) | Bool vector cmp on > int/uint/float vectors | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| bvec_type **lessThanEqual** ( vec_type x, vec_type y ) | Bool vector cmp on <= int/uint/float vectors | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| bvec_type **greaterThanEqual** ( vec_type x, vec_type y ) | Bool vector cmp on >= int/uint/float vectors | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| bvec_type **equal** ( vec_type x, vec_type y ) | Bool vector cmp on == int/uint/float vectors | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| bvec_type **notEqual** ( vec_type x, vec_type y ) | Bool vector cmp on != int/uint/float vectors | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| bool **any** ( bvec_type x ) | Any component is true | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| bool **all** ( bvec_type x ) | All components are true | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| bvec_type **not** ( bvec_type x ) | Invert boolean vector | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| ivec2 **textureSize** ( sampler2D_type s, int lod ) | Get the size of a 2D texture | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| ivec3 **textureSize** ( sampler2DArray_type s, int lod ) | Get the size of a 2D texture array | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| ivec3 **textureSize** ( sampler3D s, int lod ) | Get the size of a 3D texture | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| ivec2 **textureSize** ( samplerCube s, int lod ) | Get the size of a Cube texture | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **texture** ( sampler2D_type s, vec2 uv [, float bias] ) | Perform a 2D texture read | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **texture** ( sampler2DArray_type s, vec3 uv [, float bias] ) | Perform a 2D texture array read | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **texture** ( sampler3D_type s, vec3 uv [, float bias] ) | Perform a 3D texture read | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4 **texture** ( samplerCube s, vec3 uv [, float bias] ) | Perform an Cube texture read | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **textureProj** ( sampler2D_type s, vec3 uv [, float bias] ) | Perform a 2D texture read with projection | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **textureProj** ( sampler2D_type s, vec4 uv [, float bias] ) | Perform a 2D texture read with projection | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **textureProj** ( sampler3D_type s, vec4 uv [, float bias] ) | Perform a 3D texture read with projection | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **textureLod** ( sampler2D_type s, vec2 uv, float lod ) | Perform a 2D texture read at custom mipmap | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **textureLod** ( sampler2DArray_type s, vec3 uv, float lod ) | Perform a 2D texture array read at custom mipmap | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **textureLod** ( sampler3D_type s, vec3 uv, float lod ) | Perform a 3D texture read at custom mipmap | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4 **textureLod** ( samplerCube s, vec3 uv, float lod ) | Perform a 3D texture read at custom mipmap | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **textureProjLod** ( sampler2D_type s, vec3 uv, float lod ) | Perform a 2D texture read with projection/lod | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **textureProjLod** ( sampler2D_type s, vec4 uv, float lod ) | Perform a 2D texture read with projection/lod | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **texelFetch** ( sampler2D_type s, ivec2 uv, int lod ) | Fetch a single texel using integer coords | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **texelFetch** ( sampler2DArray_type s, ivec3 uv, int lod ) | Fetch a single texel using integer coords | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec4_type **texelFetch** ( sampler3D_type s, ivec3 uv, int lod ) | Fetch a single texel using integer coords | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **dFdx** ( vec_type p ) | Derivative in x using local differencing | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **dFdy** ( vec_type p ) | Derivative in y using local differencing | ++----------------------------------------------------------------------------+--------------------------------------------------+ +| vec_type **fwidth** ( vec_type p ) | Sum of absolute derivative in x and y | ++----------------------------------------------------------------------------+--------------------------------------------------+