unityshader 晶格化消散
前言
几何着色器,而且作为最近才可编程的着色器,在网上看到他的案例也少得可怜。几何着色器在我们平时的项目中使用的很少,毕竟我们开发过程对于光照的需求,以及他的性能的优化几乎占了shader使用的六七十。但是对于新型的着色器,他的很多功能潜力都有待开发。下面就是他的运用。
效果
话不多少 先看效果
平面的消散效果(UI特效)
3d物体及模型的消散效果
不熟悉几何着色器的同学可以走下面链接进去
功能展示
晶片的颜色
晶片消融的方向
晶片的大小
消融最大的距离
消融的角度
3D 近距离晶片展示
几个基本原理
1 RGB通道噪点图——处理随机效果。 看到上面的按理可以知道有很多的随机的行为,列如图片从左边随机的消散,每个消散的晶片随机的位置,和随机的旋转方向等都是使用一张噪点图。
2 构建平移旋转矩阵——处理晶片的移动和旋转。应为我们并没有使用贴图记录每一个晶片的位置,所以每一个晶片位置需要根据时间和噪点图,推断出其位置和旋转角度。
3 向量于面相交的数学原理——处理从哪个方向消融以及消融的方向。从上面可以看到,消融的方向以及晶块的消散方向都是可以根据materal自定义的。用途更广泛了。
注意事项
因为是几何着色器的原因,所以本身对Gpu硬件的需求也很高,应该是shader4.0以后的。所以可能很多手机并不能支持这种消耗的着色器。但是电脑使用几何着色器确是很好。
对于我写的这个shader,也并不支持逐像素光照。毕竟每一个顶点要获取法线。在我自己构建的两个矩阵下,每个定点要多两次矩阵转换。对性能来说是个不少的消耗。
结束
这个是面片的形式往外扩散,也可以做成几何体,但是感觉面片的形式可能更加符合审美,并没有发出去。
通过测试,对性能的消耗还是有的。毕竟这个着色器暂时提供的借口有限,能够优化的地方也相对比较少。
功能有不足之处或者有问题可以加我哦:2364823151