floor、ceil与frac
- 常用于数据分段
- floor(x):返回小于或等于指定值x的最大整数值(向下取整)
- ceil(x):返回大于或等于指定值x的最小整数值(向上取整)
- frac(x):返回指定值的小数部分,返回大于0小于1值
- fmod(x,y):返回指定值x/y的浮点余数,这种方法对于非整数取模更灵活,但比使用floor/ceil + frac方式开销更大一些
- modf(x,out ip):将指定值x拆分为小数部分和整数部分,其中返回值为小数部分,参数输出为整数部分,每个部分的符号与x相同,与fmod相比它更适合处理整数和取模的方式。效率高的同时同样不如fmod用起来灵活
1 | half3 PixelColor(float2 uv) |
1 | half3 PixelColor(float2 uv) |
1 | half3 PixelColor(float2 uv) |
1 | half3 PixelColor(float2 uv) |
1 | half3 PixelColor(float2 uv) |
saturate、clamp、step、sign
- 常用于数据值处理(数据截断)
- saturate(x):将指定值固定在0-1的范围内
- clamp(x,min,max):将指定值固定到指定的最大最小值范围
- step(y,x):比较两个值,前者小于后者则返回0,否则返回1。可用于二元判断
- sign(x):返回指定值的符号,x小于0返回-1;x等于0返回0;x大于0返回1。可用于三元判断
lerp与smoothstep
- lerp(x,y,s):执行两个指定值的线性插值,s为插值系数
- smoothstep(min,max,x):如果x在[min,max]范围内,则返回介于0和1之间的平滑埃尔米特插值
1 | half3 PixelColor(float2 uv) |
1 | half3 PixelColor(float2 uv) |
- 过渡部分是由外到内由白到黑的过渡部分
- 如果用白色去减就可以变成由黑到白的过渡了
1 | half3 PixelColor(float2 uv) |
1 | half3 PixelColor(float2 uv) |