unity shader 灰度图片的数学计算解析

189 阅读2分钟

image.png

1、加法

两张完全一样的灰度图相加,白区越白,黑区越黑,中间区域减少

2、减法

两张完全一样的灰度图相减,变成了完全黑色的图片,因为可把白区当为1,黑区当为0,1-1=0,0-0=0,最后整体的结果为零,所有图片最后会变成黑色

3、乘法

两张完全一样的灰度图相乘,如果我们把图片的灰度值限制在0-1的范围,则整体的颜色是在变黑,将一个数乘以小数,他本身会变小,而越小则颜色越黑

3、除法

两张完全一样的灰度图相除,因为两张图片完全相同,则他们任一点上的数值相同,相当于将一个数除以它本身结果等于1,1代表白色,最后结果为全白图片。

白值除以黑值的时候白值会变的更白,黑值除以白值的时候会变得更黑

4、距离

灰度图片与纯黑图片的距离计算,白色区域与黑色的数值差距最大,黑色区域数值距离较小,距离本身是个绝对值,所以越离开中心数值越大 image.png

image.png

5、乘幂

下图计算了世界空间和观察方向的点积,可以做出描边的效果,在给它做反向,这样就会有中黑边白的效果,在用触发计算让中心的黑圈扩大,但是我们不想要中间的渐变效果,这个时候我们就可以用power函数,把过渡颜色去掉。

image.png

6、step 和 smoothstep

过渡和平滑过渡,平滑过渡会保留图片的渐变色,而过渡则会更加生硬。过渡中小于0.5的全部变成0.5,大于0.5的全部变成1。平滑过渡中小于0.5的全部变成0.5,大于0.5的则保留原本的值

image.png

7、插值

可以看做两张图片的混合,当alpha为1时显示第二张图片,当alpha为0时显示第一张图片

image.png