unityshader 晶格化消散

unityshader 晶格化消散

前言

几何着色器,而且作为最近才可编程的着色器,在网上看到他的案例也少得可怜。几何着色器在我们平时的项目中使用的很少,毕竟我们开发过程对于光照的需求,以及他的性能的优化几乎占了shader使用的六七十。但是对于新型的着色器,他的很多功能潜力都有待开发。下面就是他的运用。

效果

话不多少 先看效果
平面的消散效果(UI特效)

平面的消散效果(UI特效)

3d物体及模型的消散效果

3d物体及模型的消散效果
不熟悉几何着色器的同学可以走下面链接进去

https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-geometry-shader#return-value

功能展示
晶片的颜色
晶片的颜色
晶片消融的方向
晶片消融的方向

晶片的大小
在这里插入图片描述

消融最大的距离
消融最大的距离

消融的角度
消融的角度

3D 近距离晶片展示
3D 近距离晶片展示

几个基本原理

1 RGB通道噪点图——处理随机效果。 看到上面的按理可以知道有很多的随机的行为,列如图片从左边随机的消散,每个消散的晶片随机的位置,和随机的旋转方向等都是使用一张噪点图。

2 构建平移旋转矩阵——处理晶片的移动和旋转。应为我们并没有使用贴图记录每一个晶片的位置,所以每一个晶片位置需要根据时间和噪点图,推断出其位置和旋转角度。

3 向量于面相交的数学原理——处理从哪个方向消融以及消融的方向。从上面可以看到,消融的方向以及晶块的消散方向都是可以根据materal自定义的。用途更广泛了。

注意事项

因为是几何着色器的原因,所以本身对Gpu硬件的需求也很高,应该是shader4.0以后的。所以可能很多手机并不能支持这种消耗的着色器。但是电脑使用几何着色器确是很好。

对于我写的这个shader,也并不支持逐像素光照。毕竟每一个顶点要获取法线。在我自己构建的两个矩阵下,每个定点要多两次矩阵转换。对性能来说是个不少的消耗。

结束
这个是面片的形式往外扩散,也可以做成几何体,但是感觉面片的形式可能更加符合审美,并没有发出去。

通过测试,对性能的消耗还是有的。毕竟这个着色器暂时提供的借口有限,能够优化的地方也相对比较少。

功能有不足之处或者有问题可以加我哦:2364823151

猜你喜欢

转载自blog.csdn.net/weixin_43368234/article/details/121107778