abs(x)——返回輸入引數的絕對值
acos(x)——反餘切函式,輸入引數範圍為[-1,1],返回[0,π ]區間的角度值
all(x)——如果輸入引數均不為0,則返回ture;否則返回flase。&&運算
any(x)——輸入引數只要有其中乙個不為0,則返回true。||運算
asin(x)——反正弦函式,輸入引數取值區間為[−1,1],返回角度值範圍為[-π/2, π/2]
atan(x)——反正切函式,返回角度值範圍為[-π/2, π/2]
atan2(y,x)——計算y/x 的反正切值。實際上和atan(x)函式功能完全一樣,至少輸入引數不同。atan(x) =atan2(x, float(1))。
ceil(x)——對輸入引數向上取整。例如:ceil(float(1.3)),其返回值為2.0
clamp(x, min, max)——將x收縮至min與max之間,即min(max(x, min), max);
cos(x)——返回弧度 x的余弦值。返回值範圍為[−1,1]
cosh(x)——雙曲余弦(hyperbolic cosine)函式,計算x的雙曲余弦值。cosh(x) = (exp(x) + exp(-x))/2
cross(x, y)——差積,x叉乘y = (x[1]*y[2]-y[1]*x[2], x[2]*y[0] - y[2]*x[0], x[0]*y[1] - y[0]*x[1]),注意,輸入引數必須是三元向量!;
degrees(x)——輸入引數為弧度值(radians),函式將其轉換為角度值(degrees)
determinant(m)——計算矩陣的行列式。
distance(p0, p1)——兩點距離, length(p0-p1);
dot(x, y)——點積,各分量分別相乘後相加;
exp(x)——計算pow(e, x)的值,e= 2.71828182845904523536
exp2(x)——計算pow(2, x)的值
floor(x)——對輸入引數向下取整。例如floor(float(1.3))返回的值為1.0;但是floor(float(-1.3))返回的值為-2.0。該函式與ceil(x)函式相對應。
fmod(x,y)——返回x/y 的餘數。如果y 為0,結果不可預料。
fract(x)——取小數部分,即x - floor(x);
frexp(x, out exp)——將浮點數x 分解為尾數和指數,即x = m* 2^exp,返回m,並將指數存入exp 中;如果x 為0,則尾數和指數都返回0
ldexp(x, n)——計算x ∗2^n的值
length(x)——向量長度;
lerp(a, b, f)——計算(1− f )∗ a + b∗ f 或者a + f ∗(b − a)的值。即在下限a 和上限b 之間進行插值,f 表示權值。注意,如果a 和b 是向量,則權值f必須是標量或者等長的向量。
lit(ndotl,ndoth, m)——n 表示法向量;l 表示入射光向量;h 表示半形向量;m 表示高光係數。函式計算環境光、散射光、鏡面光的貢獻,返回的4 元向量:
x 位表示環境光的貢獻,總是1.0;
y位代表散射光的貢獻,如果n • l < 0,則為 0;否則為n • l
z位代表鏡面光的貢獻,如果 n • l < 0或者n • h < 0,則位 0;否則為(n • h)m;
w 位始終位1.0
log(x)——計算ln(x)的值,x必須大於 0
log2(x)——計算 log 2
x 的值,x 必須大於0
log10(x)——計算 log 10
x 的值,x 必須大於0
max(x, y)——取最大值;
min(x, y)——取最小值,x、y為標量;
mod(x, y)—— 取模, x - y*floor(x/y)
mul(m, n)——計算兩個矩陣相乘,如果m 為axb 階矩陣,n 為bxc 階矩陣,則返回axc 階矩陣。下面兩個函式為其過載函式。
mul(m, v)——計算矩陣和向量相乘
mul(v, m)——計算向量和矩陣相乘
noise(x)——雜訊函式,返回值始終在0,1 之間;對於同樣的輸入,始終返回相同的值(也就是說,並不是真正意義上的隨機雜訊)。
normalize(x)——歸一化, length(x)=1;
pow(x, y)—— xy
radians(x)——函式將角度值轉換為弧度值
reflect(i, n)——根據入射光方向向量i,和頂點法向量n,計算反射光方向向量。其中i 和n必須被歸一化,需要非常注意的是,這個i 是指向模型頂點的;函式只對三元向量有效。
refract(i,n,eta)——計算折射向量,i 為入射光線,n 為法向量,eta 為折射係數;其中i 和n 必須被歸一化,如果i 和n 之間的夾角太大,則返回(0,0,0),也就是沒有折射光線;i 是指向模型頂點的;函式只對三元向量有效。
round(x)——round-to-nearest,或closest integer to x 即四捨五入。
saturate(x)——如果x 小於0,返回0;如果x 大於1,返回1;否則,返回x
sign(x)——如果x 大於0,返回1;如果x 小於0,返回01;否則返回0。
sin(x)——輸入引數為弧度,計算正弦值,返回值範圍為[−1,1]
sincos(float x,out s, out c)——該函式是同時計算x 的sin 值和cos 值,其中s=sin(x),c=cos(x)。該函式用於「同時需要計算sin 值和cos 值的情況」,比分別運算要快很多!
sinh(x)——計算雙曲正弦(hyperbolic sine)值。cosh(x) = (exp(x) - exp(-x))/2
smoothstep(min, max, x)——x大於min,小於max時平滑差值,x<=min時為0.0, x>=max時為1.0;按照下列公式平滑插值:
-2( (x-min) / (max-min) )^3 + 3( (x-min) / (max-min) )^2
sqrt(x)——求x 的平方根, x ,x 必須大於0。
step(edge, x)——如 x小於edge,則返回0.0,否則返回1.0;
tan(x)——輸入引數為弧度,計算正切值
tanh(x)——計算雙曲正切值
transpose(m)——m為矩陣,計算其轉置矩陣
tex1d(sampler1d tex, float s)——一維紋理查詢
tex1d(sampler1d tex, float s, float dsdx, float dsdy)——使用導數值(derivatives)查詢一維紋理
** tex2d(sampler2d tex, float2 s) ** 二維紋理查詢
tex2d(sampler2d tex, float2 s, float2 dsdx, float2 dsdy)——使用導數值(derivatives)查詢二維紋理
**texcube(samplercube tex, float3 s)**查詢立方體紋理
ddx(a) 引數a 對應乙個畫素位置,返回該畫素值在x 軸上的偏導數
ddy(a) 引數a 對應乙個畫素位置,返回該畫素值在x 軸上的偏導數
attention:
函式 ddx 和ddy 用於求取相鄰畫素間某屬性的差值;
函式 ddx 和ddy 的輸入引數通常是紋理座標;
函式 ddx 和ddy 返回相鄰畫素鍵的屬性差值;
假設傳遞給ddx\ddy 函式的引數myvar 是紋理座標,則,ddx(myvar)的值為,紋理上畫素點 p (i +1, j)的紋理顏色值減去 myvar 對應的紋理顏色值。
clip(a)——根據變數a來捨棄當前片段,若a<=0則捨棄
discard——用於拋棄當前畫素
CG語言的數學函式
abs x 返回標量和向量x的絕對值 如果x是向量,則返回每乙個成員的絕對值 acos x 返回標量和向量x的反余弦 x的範圍是 1,1 返回值的範圍是 0,如果x是向量,則返回每乙個成員的反余弦 all x 如果乙個布林標量為真,或者布林向量的所有成員為真,則返回真 any x 如果乙個布林標量為...
CG 標準函式庫
函式 功能描述 abs x 返回輸入引數的絕對值 acos x 反餘切函式,輸入引數範圍為 1,1 返回 0,區間的角度值 all x 如果輸入引數均不為0,則返回ture 否則返回flase。運算 any x 輸入引數只要有其中乙個不為0,則返回true。asin x 反正弦函式,輸入引數取值區間...
CG語法及函式庫
cg 標準函式庫主要分為五個部分 1.數學函式 mathematical functions 2.幾何函式 geometric functions 3.紋理對映函式 texture map functions 4.偏導數函式 derivative functions 5.除錯函式 debugging...