Godot Shader笔记:着色器语言(五)
2019-06-16 本文已影响0人
吃烧烤的老王
原文地址:Docs » Shading » Shading reference » Shading language
译者注:本部分内容涉及大量数学专业名词,能力有限不确保翻译准确,建议大家以英文版为准
内置函数(Built-in functions)
Godot提供大量的内置函数,这些函数的形式和GLSL ES 3.0一致。函数的参数及返回值可以是标量也可以是向量。
注意:在文档Differences between GLES2 and GLES3 doc 可以查到GLES2所不支持的函数列表。
函数 | 描述 |
---|---|
vec_type radians ( vec_type ) | 将角度转为弧度 |
vec_type degrees ( vec_type ) | 将弧度转为角度 |
vec_type sin ( vec_type ) | 正弦 |
vec_type cos ( vec_type ) | 余弦 |
vec_type tan ( vec_type ) | 正切 |
vec_type asin ( vec_type ) | 反正弦 |
vec_type acos ( vec_type ) | 反余 |
vec_type atan ( vec_type ) | 反正切 |
vec_type atan ( vec_type x, vec_type y ) | Arc-Tangent to convert vector to angle |
vec_type sinh ( vec_type ) | 双曲正弦 |
vec_type cosh ( vec_type ) | 双曲余弦 |
vec_type tanh ( vec_type ) | 双曲正切 |
vec_type asinh ( vec_type ) | 反双曲正弦 |
vec_type acosh ( vec_type ) | 反双曲余弦 |
vec_type atanh ( vec_type ) | 反双曲正切 |
vec_type pow ( vec_type, vec_type ) | 幂运算 |
vec_type exp ( vec_type ) | e基指数 |
vec_type exp2 ( vec_type ) | 2基指数 |
vec_type log ( vec_type ) | e基(自然)对数 |
vec_type log2 ( vec_type ) | 2基对数 |
vec_type sqrt ( vec_type ) | 平方根 |
vec_type inversesqrt ( vec_type ) | 平方根倒数 |
vec_type abs ( vec_type ) | 绝对值 |
vec_int_type abs ( vec_int_type ) | 绝对值 |
vec_type sign ( vec_type ) | Sign |
vec_int_type sign ( vec_int_type ) | Sign |
vec_type floor ( vec_type ) | 向下取整 |
vec_type round ( vec_type ) | 四舍五入 |
vec_type roundEven ( vec_type ) | 四舍五入到临近偶数(Round nearest even) |
vec_type trunc ( vec_type ) | 截断 |
vec_type ceil ( vec_type ) | 向上取整 |
vec_type fract ( vec_type ) | 取小数部分 |
vec_type mod ( vec_type, vec_type ) | 取余 |
vec_type mod ( vec_type, float ) | 取余 |
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 ) | 最小值 |
vec_scalar_type max ( vec_scalar_type a, vec_scalar_type b ) | 最大值 |
vec_scalar_type clamp ( vec_scalar_type value, vec_scalar_type min, vec_scalar_type max ) | 约束至最大值与最小值之间 |
vec_type mix ( vec_type a, vec_type b, float c ) | 线性插值 (Scalar Coef.) |
vec_type mix ( vec_type a, vec_type b, vec_type c ) | 线性插值 (Vector Coef.) |
vec_type mix ( vec_type a, vec_type b, bool c ) | 线性插值 (Bool Selection) |
vec_type mix ( vec_type a, vec_type b, vec_bool_type c ) | 线性插值 (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 ) | 艾米插值 |
vec_type smoothstep ( float a, float b, vec_type c ) | 艾米插值 |
vec_bool_type isnan ( vec_type ) | 当标量或者向量分量为nan 时,返回true |
vec_bool_type isinf ( vec_type ) | 当标量或者向量分量为inf 时,返回true |
vec_int_type floatBitsToInt ( vec_type ) | 将Float按字节复制成Int, 不做类型转换 |
vec_uint_type floatBitsToUint ( vec_type ) | 将Float按字节复制成UInt, 不做类型转换 |
vec_type intBitsToFloat ( vec_int_type ) | 将Int按字节复制成Float, 不做类型转换 |
vec_type uintBitsToFloat ( vec_uint_type ) | 将UInt按字节复制成Float, 不做类型转换 |
float length ( vec_type ) | 向量长度 |
float distance ( vec_type, vec_type ) | 向量间距离 |
float dot ( vec_type, vec_type ) | 点积(Dot Product) |
vec3 cross ( vec3, vec3 ) | 叉积(Cross Product) |
vec_type normalize ( vec_type ) | 标准化成UInt长度 |
vec3 reflect ( vec3 I, vec3 N ) | 反射 |
vec3 refract ( vec3 I, vec3 N, float eta ) | 折射 |
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 ) | 矩阵外积 |
mat_type transpose ( mat_type ) | 转置矩阵 |
float determinant ( mat_type ) | 矩阵行列式 |
mat_type inverse ( mat_type ) | 逆矩阵 |
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 ) | 有任何一个分量为true,则值为true |
bool all ( vec_bool_type ) | 所有分量均为true |
bool not ( vec_bool_type ) | 所有分量均为false |
ivec2 textureSize ( sampler2D_type s, int lod ) | 获取纹理大小 |
ivec2 textureSize ( samplerCube s, int lod ) | 获取立方映射(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 ) | 用整数坐标获取一个纹理影像元件(texel) |
vec_type dFdx ( vec_type ) | 用局部差分对x求导 |
vec_type dFdy ( vec_type ) | 用局部差分对y求导 |
vec_type fwidth ( vec_type ) | x和y的绝对导数之和 |