用unity实现tilt brush绘制面片功能(二)
发表于2017-04-29
上次我们实现了基本的动态网格生成,本次将通过shader forge实现shader的部分(不了解的朋友们可以百度一下,很方便的一款unity插件)
玩过tilt brush的朋友们应该都知道,在每次刷出的面片末尾都会有笔刷的效果,而且笔刷会随着笔画长度改变呈现出不同的图案,这个其实是通过shader实现的。
先上最终成品!
主体思路就是通过控制贴图的alpha值使图片alpha值低的部分不被显现出来
由于我手上没有合适的笔刷贴图,所以我通过一张渐变的alpha贴图和一张正常的贴图相乘来获得同样的效果
当然,我们还需要通过代码来控制alpha值,所以我通过slider值与alpha值相加获得最终的alpha值
然后将alpha值与color和贴图相乘,最后输出,就是我们所需要的shader
注意,贴图的输出通道是alpha通道喔,不然在使用彩色图片时,调色效果会失灵
如果真的实现了这个shader的朋友们会发现,最终图片是半透明的,这个我本次没有做,大家有兴趣的话可以自行实现,思路就是将不为零的alpha值修改到最大,大家先试试吧(真的很简单喔)
顺手贴上渲染效果图
在下一次文章(也是最后一次),我将修改代码实时绘制网格,并对代码进行一些优化。