Merge pull request #1266 from Chaosus/shaderdocfixes3

Fixes for builtin shader functions
This commit is contained in:
Max Hilbrunner
2018-03-30 17:22:33 +02:00
committed by GitHub

View File

@@ -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 |
+-----------------------------------------------------------------------------------------------+------------------------------------------------+