Godot Shader笔记:着色器语言(五)

原文地址: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的绝对导数之和
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容