引力形变Shader实现(附上代码)

【题外话】这两天状态欠佳,忙着项目技能模块的枯燥工作,时常神游九州,突然就想到自己非常喜欢的天文学中的黑洞,然后就想到如何shader 来实现黑洞撕扯物质造成壮观景象,原本昏昏欲睡的状态慢慢就精神起来,果然兴趣是最好的老师,最终实现的效果还行吧,记录下来,以防未来需要使用。

首先原理就是:

1.构造顶点vertex 到引力源世界位置_GravitySourcePos 的向量Vm

2.求顶点法线normal到Vm 的点积,dotnv = dot(normal, Vm)

3.将顶点沿着Vm向量方向移动|dotnv| * _GravityStrength

实际上就是根据顶点法线方向在引力方向上受力大小来调整顶点的位置,效果还是可以接受的。当然步骤2 可能会产生负值,就会造成反向的撕扯,可以使用saturate 限制一下。


这个shader 只是简单的实现了形变,至于产生旋涡状的效果,有兴趣的话可以拓展下,么么哒,欢迎上传。

这个是代码,shader 名称是GravityDeformation.shader

你可能感兴趣的:(引力形变Shader实现(附上代码))