那就试答一波吧!
说说用shader的方式吧。
一、确定一个分界线,也就是真实物体与相对应的镜面物体之间的分隔线,主要用来确定物体应该映射到镜面的什么位置上,比如真实物体距离分界线越高,它的倒影距离分界线就越低。
二、通过正常渲染,先把真实场景中的物体渲染出来。
三、然后写个shader;这个shader大概思路是,先将物体的贴图的UV坐标Y轴翻转(说人话的意思就是把贴图像素上下颠倒),然后根据上面提到的分界线,计算出物体的每个像素的坐标值应该向下偏移多少。以题主提到的Kingdoms来说,它在Y轴方向还做了压扁的效果,使得看上去有景深,也可以不做。所有物体都做了镜面映射之后,大概的效果就出来了。
然后还有水波和Y轴方向向下的模糊效果。
水波效果可以有很多方法实现,比如噪波贴图;扫描线偏移算法;径向波形等都可以。
最后再加上Y轴方向向下的透明度递增,就可以有越往下越模糊的感觉。
请问这些2d游戏里的水面倒影效果是如何实现的?
1 条评论