【UnityShader】常用函數(數學函數、紋理映射函數)

數學函數

函數 描述
abs(x) 返回輸入參數的絕對值
acos(x) 反餘切函數,輸入參數範圍爲[-1,1], 返回[0,π]區間的角度值
all(x) 如果輸入參數均不爲0,則返回ture; 否則返回flase。&&運算
any(x) 輸入參數只要有其中一個不爲0,則返回true
asin(x) 反正弦函數,輸入參數取值區間爲,返回角度值範圍爲[−π/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,a,b) 如果x值小於a,則返回a;如果x值大於b,返回b;否則,返回x
clip(x) 將x小於0的像素點直接丟棄掉
cos(x) 返回弧度x的餘弦值。返回值範圍爲[-1,+1]
cosh(x) 雙曲餘弦(hyperbolic cosine)函數,計算x的雙曲餘弦值
cross(A,B) 返回兩個三元向量的叉積(cross product)。注意,輸入參數必須是三元向量
ddx(a) 返回a值關於屏幕空間x軸的偏導數
ddx(a) 返回a值關於屏幕空間y軸的偏導數
degrees(x) 輸入參數爲弧度值(radians),函數將其轉換爲角度值(degrees)
determinant(m) 計算矩陣的行列式因子
distance(pt1, pt2) 兩點之間的歐幾里德距離(Euclidean distance)
dot(A,B) 返回A和B的點積。參數A和B可以是標量,也可以是向量(輸入參數方面,點積和叉積函數有很大不同)
exp(x) 計算exe^x的值,e=2.7182818284590
exp2(x) 計算2x2^x的值
faceforward(N,I,Ng) 如果Ng•I < 0,返回N;否則返回-N
floor(x) 對輸入參數向下取整。例如floor(float(1.3))返回的值爲1.0;但是floor(float(-1.3))返回的值爲-2.0。該函數與ceil(x)函數相對應
fmod(x,y) 返回x/y的餘數。如果y爲0,結果不可預料
frac(x) 返回標量或矢量的小數
frexp(x, out i) 將浮點數x分解爲尾數和指數,即x = m * 2^exp,返回m,並將指數存入exp中;如果x爲0,則尾數和指數都返回0
inverse(A) 返回矩陣A的逆矩陣
isfinite(x) 判斷標量或者向量中的每個數據是否是有限數,如果是返回true;否則返回false
isinf(x) 判斷標量或者向量中的每個數據是否是無限,如果是返回true;否則返回false
isnan(x) 判斷標量或者向量中的每個數據是否是非數據(not-a-number NaN),如果是返回true;否則返回false
ldexp(x, n) 計算x*2n2^n的值
length(v) 返回一個向量的模,即sqrt(dot(v,v))
lerp(a, b, f) 計算a + f * (b - a)的值。即在下限a和上限b之間進行插值,f表示權值。注意,如果a和b是向量,則權值f必須是標量或者等長的向量
lit(NdotL, NdotH, m) 函數計算環境光、散射光、鏡面光的貢獻,返回的4元向量。
輸入參數:
  N表示法向量
  L表示入射光向量
  H表示半角向量
  m表示高光係數
返回4元向量:
  X位表示環境光的貢獻,總是1.0
  Y位代表散射光的貢獻,如果 N∙L<0,則爲0;否則爲N∙L
  Z位代表鏡面光的貢獻,如果N∙L<0 或者N∙H<0,則位0;否則爲(N∙L)m
  W位始終位1.0
log(x) 計算lnx\ln{x}的值,x必須大於0
log2(x) 計算log2x\log_2{x}的值,x必須大於0
log10(x) 計算lgx\lg{x}的值,x必須大於0
max(a, b) 比較兩個標量或等長向量元素,返回最大值
min(a,b) 比較兩個標量或等長向量元素,返回最小值
modf(x, out ip) 把x分解成整數和分數兩部分,每部分都和x有着相同的符號,整數部分被保存在ip中,分數部分由函數返回
mul(M, N) M*N 矩陣M和矩陣N的積
mul(M, v) M*v 矩陣M和列向量v的積
mul(v, M) v*M 行向量v和矩陣M的積
noise(x) 根據它的參數類型,這個函數可以是一元、二元或三元噪音函數。返回的值在0和1之間,並且通常與給定的輸入值一樣
normalize(v) 歸一化向量v
pow(x, y) 計算xyx^y的值
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) 返回四捨五入值
rsqrt(x) x的平方根的倒數,x必須大於0
saturate(x) 把x限制到[0,1]之間,如果x小於0,返回0;如果x大於1,返回1;否則,返回x
sign(x) 如果x>0則返回1;如果x=0返回0;如果x<0則返回-1
sin(x) 輸入參數爲弧度,計算正弦值,返回值範圍 爲[-1,1]
sincos(float x, out s, out c) 該函數是同時計算x的sin值和cos值,其中s=sin(x),c=cos(x)
sinh(x) 計算x的雙曲正弦
smoothstep(min, max, x) 值x位於min、max區間中。如果x=min,返回0;如果x=max,返回1;如果x在兩者之間,按照下列公式返回數據:
–2∗((xmin)/(maxmin))3((x–min)/(max–min)) ^3+3∗((xmin)/(maxmin))2((x–min)/(max–min)) ^2
sqrt(x) 求x的平方根,x必須大於0
step(a, x) 如果x<a, 返回0;否則返回1
tan(x) 計算x正切值
tanh(x) 計算x的雙曲線切線
transpose(M) 矩陣M的轉置矩陣
trunc 返回不大於標量或每個矢量分量的最大整數,即丟棄浮點數的小數部分

Cg Standard Library

紋理映射函數

函數 描述
tex1D(sampler1D tex, float s) 一維紋理查詢
tex1D(sampler1D tex, float s, float dsdx, float dsdy) 使用導數值(derivatives)查詢一維紋理
Tex1D(sampler1D tex, float2 sz) 一維紋理查詢,並進行深度值比較
Tex1D(sampler1D tex, float2 sz, float dsdx,float dsdy) 使用導數值(derivatives)查詢一維紋理, 並進行深度值比較
Tex1Dproj(sampler1D tex, float2 sq) 一維投影紋理查詢
Tex1Dproj(sampler1D tex, float3 szq) 一維投影紋理查詢,並比較深度值
Tex2D(sampler2D tex, float2 s) 二維紋理查詢
Tex2D(sampler2D tex, float2 s, float2 dsdx, float2 dsdy) 使用導數值(derivatives)查詢二維紋理
Tex2D(sampler2D tex, float3 sz) 二維紋理查詢,並進行深度值比較
Tex2D(sampler2D tex, float3 sz, float2 dsdx,float2 dsdy) 使用導數值(derivatives)查詢二維紋理,並進行深度值比較
Tex2Dproj(sampler2D tex, float3 sq) 二維投影紋理查詢
Tex2Dproj(sampler2D tex, float4 szq) 二維投影紋理查詢,並進行深度值比較
texRECT(samplerRECT tex, float2 s) 二維非投影矩形紋理查詢(OpenGL獨有)
texRECT (samplerRECT tex, float3 sz, float2 dsdx,float2 dsdy) 二維非投影使用導數的矩形紋理查詢(OpenGL獨有)
texRECT (samplerRECT tex, float3 sz) 二維非投影深度比較矩形紋理查詢(OpenGL獨有)
texRECT (samplerRECT tex, float3 sz, float2 dsdx,float2 dsdy) 二維非投影深度比較並使用導數的矩形紋理查詢(OpenGL獨有)
texRECT proj(samplerRECT tex, float3 sq) 二維投影矩形紋理查詢(OpenGL獨有)
texRECT proj(samplerRECT tex, float3 szq) 二維投影矩形紋理深度比較查詢(OpenGL獨有)
Tex3D(sampler3D tex, float s) 三維紋理查詢
Tex3D(sampler3D tex, float3 s, float3 dsdx, float3 dsdy) 結合導數值(derivatives)查詢三維紋理
Tex3Dproj(sampler3D tex, float4 szq) 查詢三維投影紋理,並進行深度值比較
texCUBE(samplerCUBE tex, float3 s) 查詢立方體紋理
texCUBE (samplerCUBE tex, float3 s, float3 dsdx, float3 dsdy) 結合導數值(derivatives)查詢立方體紋理
texCUBEproj (samplerCUBE tex, float4 sq) 查詢投影立方體紋理
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章