游戏开发

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的绝对导数之和
上一篇下一篇

猜你喜欢

热点阅读