"Shader属性和函数查询工具"
属性规范:
函数规范:
- 声明函数: void func(out float4 c);
- #include
- 值Copy传参
- 数学函数:
lit(dot(n,l),dot(n,h),m) // m为高光系数, 计算环境光,散射光,镜面光的贡献,返回4元向量
// x 代表环境光的贡献, y 代表散射光的贡献, z 代表镜面光的贡献, w 始终为1.0
noise(x) //噪声函数
lerp(a,b,f) // a + (a-b)*f
isnan(x)
isinf(x) //向量
isfinite(x) //是否是有限数
frac(x)
frexp(x,out exp) // 将浮点数x 分解为尾数和指数, x=m* 2^exp, 返回m, 指数存入 exp
step(a,x) // if(x<a) return 0 else return 1
smoothstep(min,max,x) // [0,1]
saturate(x)= clamp(x,0,1) // [0,1]
clamp(x,a,b) // 返回 [a,b]
fmod(x,y) //y 不能为零, 取余
transpose(M) // 转职矩阵
cross(a,b) dot(a,b)
ceil(x) floor(x)
radians(x) //角度转弧度
degrees(x) //弧度转角度
determinant(m) //计算矩阵的行列式因子
max(a,b) min(a,b)
log(x) log2(x) log10(x)
sqrt(x) //开方
exp(x) // e 的 x 次方
exp2(x) //2 的 x 次方
sincos(x,out s, out c) //同时计算sin 和 cos ,效率比分别计算快
sin(x) cos(x) tan(x)
acos(x) //[-1,1] 返回[0,pi]之间的角度值
asin(x) //[-1,1], [-90,90]
atan(x)
all(x) // x==0 返回true, 否则返回 false
any(x) // 不为0 ,返回true
abs(x)
osh(x) //双曲余弦值
- 几何函数:
distance(v1,v2)
length(v) =sqrt(dot(v,v))
normalize(x)
reflect(l,n); //反射向量,l,n 必须归一化
refract(l,n,eta); //折射函数, n,l 必须归一化
faceforward(N,L,Ng) //
- 纹理函数:
tex1D(sampler1D tex,float f) //一维纹理采样
tex1D(sampler1D tex,float f,float dsdx, float dsdy) //使用导数查询一维纹理
tex1D(sampler1D tex,float2 sz) //一维纹理查询,并进行深度比较
tex1D(sampler1D tex,float2 sz,float dsdx, float dsdy)//使用导数查询一维纹理,并进行深度比较
tex1D(sampler1D tex,float2 sq) //一维投影纹理采样
tex1D(sampler1D tex,float2 szq) //一维投影纹理采样,并进行深度比较
tex2D tex3D texRECT texCUBE tex3Dproj texCUBEproj
z 代表深度值, q 代表透视值,透视投影后齐次坐标的后1位
- 导数函数:
ddx(x) //在x轴上的偏导数
ddy(x) //在y轴上的偏导数
其他
index=(++index)% x; // 取模
IN.uv.x+= 0.01 * sin(IN.uv.x * 10 + _Time.y); //控制UV波动的周期, 模拟水波
IN.uv+= 0.01 * sin(IN.uv.x * 10 + _Time.y); //控制UV波动的周期, 模拟水波