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

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

首先原理就是:

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

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

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

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


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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Surface Output (表面着色器的标准输出结构)Surface Shader的标准输出结构-第一要素...
    CarlDonitz阅读 4,520评论 0 1
  • 转载注明出处:点击打开链接 Shader(着色器)是一段能够针对3D对象进行操作、并被GPU所执行的程序。Shad...
    游戏开发小Y阅读 8,825评论 0 4
  • <转>我也忘了转自哪里,抱歉,感谢原作者 什么是Shader Shader(着色器)是一段能够针对3D对象进行操作...
    星易乾川阅读 10,950评论 1 16
  • 公交车上挤上来穿着银行制服的中年女人。偏粉红的条纹短信衬衫并不服帖,深色内衣的轮廓隐约可见,一边的带子半耷拉在肩膀...
    礽哥儿阅读 702评论 0 0
  • By小雨读书 前晚上早起群里,看到了大家的周总结分享,很多小伙帮完成了每天早起、读书、健身、写作,非常的正能量,个...
    小雨读书写作阅读 4,361评论 12 27