shader內建函式

2021-07-07 06:17:24 字數 1857 閱讀 4197

一般預設都用弧度;

radians(degree) : 角度變弧度;

degrees(radian) : 弧度變角度;

sin(angle), cos(angle), tan(angle)

asin(x): arc sine, 返回弧度 [-pi/2, pi/2];

acos(x): arc cosine,返回弧度 [0, pi];

atan(y, x): arc tangent, 返回弧度 [-pi, pi];

atan(y/x): arc tangent, 返回弧度 [-pi/2, pi/2];

pow(x, y): x的y次方;

exp(x): 指數, log(x):

exp2(x): 2的x次方, log2(x):

sqrt(x): x的根號; inversesqrt(x): x根號的倒數

abs(x): 絕對值

sign(x): 符號, 1, 0 或 -1

floor(x): 底部取整

ceil(x): 頂部取整

fract(x): 取小數部分

mod(x, y): 取模, x - y*floor(x/y)

min(x, y): 取最小值

max(x, y): 取最大值

clamp(x, min, max): min(max(x, min), max);

mix(x, y, a): x, y的線性混疊, x(1-a) + y*a;

step(edge, x): 如 x

smoothstep(edge0, edge1, x): threshod smooth transition時使用。 edge0<=edge0時為0.0, x>=edge1時為1.0

length(x): 向量長度

distance(p0, p1): 兩點距離, length(p0-p1);

dot(x, y): 點積,各分量分別相乘 後 相加

cross(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]

normalize(x): 歸一化, length(x)=1;

faceforward(n, i, nref): 如 dot(nref, i)< 0則n, 否則 -n

reflect(i, n): i的反射方向, i -2*dot(n, i)*n, n必須先歸一化

refract(i, n, eta): 折射,k=1.0-eta*eta*(1.0 - dot(n, i) * dot(n, i)); 如k<0.0 則0.0,否則 eta*i - (eta*dot(n, i)+sqrt(k))*n

matrixcompmult(matx, maty): 矩陣相乘, 每個分量 自行相乘, 即 r[i][j] = x[i][j]*y[i][j];

矩陣線性相乘,直接用 *

lessthan(vecx, vecy): 向量 每個分量比較 x < y

lessthanequal(vecx, vecy): 向量 每個分量比較 x<=y

greaterthan(vecx, vecy): 向量 每個分量比較 x>y

greaterthanequal(vecx, vecy): 向量 每個分量比較 x>=y

equal(vecx, vecy): 向量 每個分量比較 x==y

notequal(vecx, vexy): 向量 每個分量比較 x!=y

any(bvecx): 只要有乙個分量是true, 則true

all(bvecx): 所有分量是true, 則true

not(bvecx): 所有分量取反

參考:

Shader內建函式和變數

radians degree 角度變弧度 degrees radian 弧度變角度 sin angle cos angle tan angle asin x arc sine,返回弧度 pi 2,pi 2 acos x arc cosine,返回弧度 0,pi atan y,x arc tangen...

基礎shader函式

得到這個值的小數部分 float fract float x vec2 fract vec2 x vec3 fract vec3 x vec4 fract vec4 x fract x png 1 y fract x 得到兩個值的模,其實就是餘數 y mod x,1.5 下取整 y floor x ...

Unity3D內建Shader翻譯一

unity3d內建了很多shader,文件很詳細,自己翻一下.便於加深印象.首先先解釋下unity3d的shader.unity裡面的shaders是使用一種叫shaderlab的語言編寫的,它同微軟 的.fx檔案或者nvidia的cgfx有些類似。傳統意義上的vertex shader和pixel...