Просмотр исходного кода

Fixes for builtin shader functions

Chaosus 7 лет назад
Родитель
Сommit
8b433465a9
1 измененных файлов с 179 добавлено и 171 удалено
  1. 179 171
      tutorials/shading/shading_language.rst

+ 179 - 171
tutorials/shading/shading_language.rst

@@ -471,177 +471,185 @@ A large number of built-in functions are supported, conforming mostly to GLSL ES
 When vec_type (float), vec_int_type, vec_uint_type, vec_bool_type nomenclature is used, it can be scalar or vector.
 
 
-+-------------------------------------------------------------------------+---------------------------------------------+
-| Function                                                                | Description                                 |
-+=========================================================================+=============================================+
-| vec_type **radians** ( vec_type )                                       | Convert degrees to radians                  |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| vec_type **degrees** ( vec_type )                                       | Convert radians to degrees                  |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| float **sin** ( vec_type )                                              | Sine                                        |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| float **cos** ( vec_type )                                              | Cosine                                      |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| float **tan** ( vec_type )                                              | Tangent                                     |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| float **asin** ( vec_type )                                             | arc-Sine                                    |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| float **acos** ( vec_type )                                             | arc-Cosine                                  |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| float **atan** ( vec_type )                                             | arc-Tangent                                 |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| float **atan** ( vec_type x, vec_type y )                               | arc-Tangent to convert vector to angle      |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| float **asinh** ( vec_type )                                            | arc-Hyperbolic-Sine                         |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| float **acosh** ( vec_type )                                            | arc-Hyperbolic-Cosine                       |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| float **atanh** ( vec_type )                                            | arc-Hyperbolic-Tangent                      |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| float **sinh** ( vec_type )                                             | Hyperbolic-Sine                             |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| float **cosh** ( vec_type )                                             | Hyperbolic-Cosine                           |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| float **tanh** ( vec_type )                                             | Hyperbolic-Tangent                          |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| vec_type **pow** ( float x, float y )                                   | Power, x elevated to y                      |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| vec_type **pow** ( vec_type, vec_type )                                 | Power (Vec. Exponent)                       |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| 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_type **sign** ( vec_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 **modf** ( vec_type x, out vec_type i )                        | Fractional of x, with i has integer part    |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| vec_type **min** ( vec_type, vec_type )                                 | Minimum                                     |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| vec_type **max** ( vec_type, vec_type )                                 | Maximum                                     |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| vec_type **clamp** ( vec_type value, vec_type min, vec_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 )                            | \` a[i] < b[i] ? 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, vec3 )                                         | Reflect                                     |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| vec3 **refract** ( vec3, vec3 )                                         | 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 )                          | Bool vector cmp on < int/uint/float vectors |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| vec_bool_type **greaterThan** ( vec_scalar_type )                       | Bool vector cmp on > int/uint/float vectors |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| vec_bool_type **lessThanEqual** ( vec_scalar_type )                     | Bool vector cmp on <= int/uint/float vectors|
-+-------------------------------------------------------------------------+---------------------------------------------+
-| vec_bool_type **greaterThanEqual** ( vec_scalar_type )                  | Bool vector cmp on >= int/uint/float vectors|
-+-------------------------------------------------------------------------+---------------------------------------------+
-| vec_bool_type **equal** ( vec_scalar_type )                             | Bool vector cmp on == int/uint/float vectors|
-+-------------------------------------------------------------------------+---------------------------------------------+
-| vec_bool_type **notEqual** ( 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 **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  |
-+-------------------------------------------------------------------------+---------------------------------------------+
-| vec_type **texelFetch** ( samplerCube 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 )                                                             | 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          |
++-----------------------------------------------------------------------------------------------+------------------------------------------------+