请问这些2d游戏里的水面倒影效果是如何实现的?

1 条评论


  • 36

    XNan

    火猫Yoge请回收 等 36人赞同

    那就试答一波吧!

    说说用shader的方式吧。

    一、确定一个分界线,也就是真实物体与相对应的镜面物体之间的分隔线,主要用来确定物体应该映射到镜面的什么位置上,比如真实物体距离分界线越高,它的倒影距离分界线就越低。

    二、通过正常渲染,先把真实场景中的物体渲染出来。

    三、然后写个shader;这个shader大概思路是,先将物体的贴图的UV坐标Y轴翻转(说人话的意思就是把贴图像素上下颠倒),然后根据上面提到的分界线,计算出物体的每个像素的坐标值应该向下偏移多少。以题主提到的Kingdoms来说,它在Y轴方向还做了压扁的效果,使得看上去有景深,也可以不做。所有物体都做了镜面映射之后,大概的效果就出来了。

    然后还有水波和Y轴方向向下的模糊效果。

    水波效果可以有很多方法实现,比如噪波贴图;扫描线偏移算法;径向波形等都可以。

    最后再加上Y轴方向向下的透明度递增,就可以有越往下越模糊的感觉。

    更新于 2017-01-19 17:27:41 0 条评论


  • 0

    STMMfyd任天堂就是TM的世界的主宰

    平面反射,也就是加一个摄像机渲染到RenderTexture,然后翻转过来“贴”到底下的网格上。

    再加一些uv偏移,可以用噪声来做,这样就有水波的效果了。

    发布于 2020-08-05 14:57:20 0 条评论


  • 0


  • 0

    方可慢一介代码佬

    基本思路:RTT,然后对RTT做一个后期。

    发布于 2018-03-02 17:16:56 0 条评论


  • 0

    64乘64

    镜像=压缩+引擎自带效果,我脑补的方法,不代表适用

    更新于 2017-01-19 17:07:19 0 条评论

  • 登录奶牛关账号即可参与讨论