Cg內建函式

2021-08-07 03:29:43 字數 4443 閱讀 4184

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...