这个gem主要讲heat shimmer---火焰燃烧的时候发出的热气会把部分场景弄得扭曲的效果。
这个效果是我得最爱,非常酷。
做扭曲 是比较直白的,就是把原始场景作为贴图,然后干扰坐标,就可以看到贴图扭曲的效果。
问题在于heat shimmer有一个深度问题,就是热气后面的部分会扭曲,但是前面的不会。
那么就需要把depth buffer也要做一个贴图,然后进行比较,如果是扭曲区域的深度是大于阀值的,那么就做,否则就保留原样。
这个如果作一些变换,把扭曲改成blur那么就成了depth blur的效果了。
-----------------------------------------------
扭曲效果的加入会把场景渲染的pipeline很大程度上打乱,需要重新组织。
大致是这样:
1,通过particle来承载shimmer, 并记下shimmer的最小depth
2,通过一个accumulator来把场景中alpha blending的model,进行存储,根据shimmer的depth进行分类。
3,渲染所有的不透明物体
4,渲染深度大于shimmer depth的alpha物体
5,渲染shimmer效果
6,渲染深度小于shimmer depth的物体。