屏幕扭曲效果

项目中我使用的方法,自己记录下。

1》扭曲效果本身实现

方向使用渲染物体的法线来标记,渲染完其他物体后,最后渲染扭曲,将一张渲染完成后的rt传入shader中,根据渲染物体的屏幕坐标渲染根据法线偏移过后的像素,达到扭曲效果。

当然这个方法可以使用两个相机来实现,考虑到项目中经常要对相机做复制,双层相机复制的步骤繁琐且不好管理。而且双相机的性能也有一定的损耗。

最后采用CommandBuffer来实现。我们手动渲染扭曲物体。

 

2》实现流程

先管理一个list用来记录扭曲物体,同时这些扭曲物体不会被任何相机渲染,主要用来提供renderer和material。供给CommandBuffer.DrawRenderer使用。

项目使用前向渲染,我们需要在透明物体渲染结束之前渲染扭曲物体即可。

Camera.AddCommandBuffer(CameraEvent.AfterForwardAlpha, _distortionCommand);

在渲染物体之前,需要把当前绘制的rt拷贝出来,以供扭曲物体使用。

_distortionCommand.Blit(BuiltinRenderTextureType.CameraTarget, distortionRT);

接着传入Shader

_distortionCommand.SetGlobalTexture(PARAM_SCENE_COPY, distortionRT);

设置回来

_distortionCommand.SetRenderTarget(BuiltinRenderTextureType.CameraTarget);

接下来手动渲染之前就收集好的扭曲物体

_distortionCommand.DrawRenderer(GameGraphics.Instance.distortionObjList[i].rendererDis, GameGraphics.Instance.distortionObjList[i].materialDis);

搞定,记得rt复用减少gc节省内存。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值