一、三角函數(shù)
1、radians(degrees)
把角度轉(zhuǎn)為弧度,轉(zhuǎn)換公式:弧度=(π/180) * degrees
2、degrees(radians)
把弧度轉(zhuǎn)為角度,轉(zhuǎn)換公式:角度(180/π) * radians
3、sin(angle)
正弦函數(shù)
4、cos(angle)
余弦函數(shù)
5、tan(angle)
正切函數(shù)
二、指數(shù)函數(shù)
1、pow(x, y)
x的y次方,x > 0, y >= 0
2、exp(x)
以e為底的指數(shù)函數(shù)
3、log(x)
以e為底的對(duì)數(shù)函數(shù),x > 0
4、sqrt(x)
平方根函數(shù),x >= 0
三、通用函數(shù)
1、abs(x)
求絕對(duì)值
2、sign(x)
符號(hào)函數(shù)。x>0時(shí),返回值為1;x<0時(shí),返回值為-1
3、floor(x)
向下取整,返回小于等于x的整數(shù)
4、round(x)
近似值取整,返回最接近x的整數(shù),即四舍五入
5、ceil(x)
向上取整,返回大于等于x的整數(shù)
6、mod(x, y)
取模函數(shù),返回x - y * (x/y)
7、min(x, y)
求x與y的較小值
8、max(x, y)
求x與y的較大值
9、clamp(x, minVal, maxVal)
求minVal與maxVal之間的數(shù)值,即min(max(x, minVal), maxVal)
10、mix(x, y, a)
x與y的混合,即x * (1- a) + y * a
11、step(edge, x)
階躍函數(shù)。當(dāng)x < edge時(shí)返回0,否則返回1
12、smoothstemp(edge0, edge1, x)
平滑階躍函數(shù)。當(dāng)x <= edge0且x >= edge1時(shí),返回0。否則在[0, 1]區(qū)間執(zhí)行Hermite插值(edge0 < x < edge1)
四、幾何函數(shù)
1、length(x)
求矢量的長度,sqrt( x0 + x1 + … )
2、distance(p0, p1)
求兩點(diǎn)距離,即length(p0 - p1)
3、dot(x, y)
x與y點(diǎn)乘,即x0 · y0 + x1 · y1 + …
4、cross(vec3 x, vec3 y)
求矢量x與y的叉乘,即(x1 · y2 - y1 · x2 , x2 · y0 - y2 · x0 , x0 · y1 - y0 · x1)
5、normalize(x)
歸一化操作,即x / length(x)
五、矩陣函數(shù)
1、matrixCompMult(mat x, mat y)
矩陣x與y相乘
2、outerProduct(vec3 a, vec3 b)
向量a與b的外積
3、transpose(mat3 m)
矩陣的轉(zhuǎn)置
4、inverse(mat3 m)
矩陣的反轉(zhuǎn)
六、矢量關(guān)系函數(shù)
1、lessThan(vec x, vec y)
判斷矢量x是否小于矢量y,返回bvec矢量
2、greaterThan(vec x, vec y)
判斷矢量x是否大于矢量y,返回bvec矢量
3、equal(vec x, vec y)
判斷矢量x與矢量y是否相等,返回bvec矢量
4、any(bvec x)
矢量x中任意數(shù)值為true,則返回true
5、all(bvec x)
矢量x中所有數(shù)值為true,則返回true
七、整數(shù)運(yùn)算函數(shù)
1、bitCount(value)
返回二進(jìn)制value中含有1的個(gè)數(shù)
2、findLSB(value)
返回二進(jìn)制value的最低有效位
3、findMSB(value)
返回二進(jìn)制value的最高有效位
八、紋理函數(shù)
1、texture(gsampler2D sampler, vec2 P[,float bias])
使用紋理坐標(biāo)來查找綁定采樣器的紋理
2、textureLod(gsampler2D sampler, vec2 P, float lod)
使用紋理坐標(biāo),結(jié)合lod(level-of-detail)來查找紋理
3、textureG rad(gsampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy)
使用紋理坐標(biāo),結(jié)合梯度來查找紋理
九、原子函數(shù)
1、atomicAdd(uint mem, uint data)
原子變量加運(yùn)算
2、atomicAnd(uint mem, uint data)
原子變量邏輯與運(yùn)算
3、atomicOr(uint mem, uint data)
原子變量邏輯或運(yùn)算
4、atomicCompSwap(int mem, int compare, int data)
原子變量的比較交換。mem與compare比較,如果兩者相等,那么data賦值給mem
十、圖像函數(shù)
1、imageSize(gimage2D image)
計(jì)算圖像的大小
2、imageLoad()
加載圖像數(shù)據(jù)
3、imageStore()
存儲(chǔ)圖像數(shù)據(jù)
十一、插值函數(shù)
1、interpolateAtCentroid(vec3 interpolant)
在質(zhì)心的位置進(jìn)行插值
2、interpolateAtSample(vec3 interpolant, int sample)
在指定采樣數(shù)的位置進(jìn)行插值
3、interpolateAtOffset(vec3 interpolant, vec3 offset)
1、Mix: 內(nèi)置函數(shù)mix是一個(gè)特殊線性插值函數(shù),兩個(gè)參數(shù)值基于第三個(gè)參數(shù)插值genType mix(genType x,genType y,float a),即(x*(1-a)+y*a)。簡單理解就是a的值決定了x和y的強(qiáng)弱關(guān)系。a取值范圍在[0,1]之間,a值越大,結(jié)果值中y占比會(huì)越大;a值越小,結(jié)果值中y占比會(huì)越??;