shadowgun的飘扬旗帜shader

MADFINGER-Lightmap-Unlit-Wind
用于模拟布料和树被风吹的弯曲摆动效果

 这个来自于《GPU GEMS 3》中的 “Chapter 16 Vegetation Procedural Animation and Shading in Crysis” 一章16.1。
但略微有点不同,在计算edge和branch的bend时,原文为:“Edge (xy) and branch bending (z)”,shadow gun里使用的是“Edge (xz) and branch bending (y)”,这里的edge指旗子的边缘和自身xz方向的震动,branch指的是旗子整体的y方向的上下移动。
还有就是在做风的方向的整体偏移时,原文的方法稍微复杂点,只使用风的xy两个分量乘以一个与顶点z有关的缩放系数,加上该旗帜顶点位置的xy,作为新的顶点位置(z保持不变),将其单位化并赋予原来顶点在模型坐标系中的长度,就是新的顶点最终位置。
shadowgun中,先做旗子自身的DetailBend,再在风的方向做MainBend,最后再把结果在风的方向上位移一定系数的距离。
就我个人来讲,虽然shader代码很短,真正搞懂还是比较费劲的。

 
posted @ 2013-07-08 13:53  yaukey  阅读(2416)  评论(0编辑  收藏  举报