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

posted @ 2022-01-05 11:10  melt00  阅读(208)  评论(0编辑  收藏  举报