shader的常用数学函数
lerp
float4 color = lerp(a, b, x);
这行代码和以下代码的意思是等价的
float4 lerp(float4 a, float4 b, float x) {
return a + x *(b-a) ;
}
这个函数经常用来做两个颜色的过渡,或两个贴图之间混合
step
官方文档里给的描述是如果input >= edge 则返回1;否则返回0 ,相当于以下代码:
float4 color = x < edge ?0:1
float4 color = step(edge,x); 也等效于
if(x < edge){
return 0;
}
else{
return 1;
}
这个函数经常用来在剔除物体的效果,实际用的时候记得把阈值放左边
clamp
clamp(x,a,b) 如果 x 值小于 a,则返回 a;如果 x 值大于 b,返回 b;否则,返回 x
clamp(x,a,b)等价于
if(x<a){
return a;
}
else if(x>b){
return b;
}
else{
return x;
}
sin cos等
sin和cos这些函数可以用来制作动效,例如水面顶点移动等
在遇到更复杂的需求时,也可以使用其他函数来拟合
遇到需要随机离散分布的需求时,可以采样噪声
https://thebookofshaders.com/05/?lan=ch