URP案例分析(GlitchEffect)

大致原理是通过三个pass实现

第一个pass(DrawOpaqueObjects):渲染场景物体

第二个pass(CopyColor):将场景物体拷贝到RenderTarget

第三个pass(Render Glitch Objects):使用RenderObject重新绘制指定场景物体,传入RenderTarget,将RenderTarget映射到RenderObject物体的顶点UV,然后进行噪音扭曲

一、RenderFeature

GlitchEffect主要通过RenderObject实现效果

这里需要注意的是Event为BeforeRenderingTransparent。为什么Event要选BeforeRenderingTransparent?

可以通过FrameDebugger看到Render Glitch Objects这个pass往shader中传入了一张_CameraOpaqueTexture,而这张_CameraOpaqueTexture是通过上一个CopyColor Pass传过来的。CopyColor Pass的作用是在DrawOpaqueObject Pass之后把渲染出来的东西拷贝到_CameraOpaqueTexture。如果把RenderFeature的Event提前,那拿到的_CameraOpaqueTexture将会是错误的,因为CopyColor还没执行。

CopyColor Pass需要通过PipelineAsset的OpaqueTexture选项开启

二、Shader

1.SceneColor节点

_CameraOpaqueTextur是传给Glitch_Graph的SceneColor节点使用的。SceneColor节点的作用就是获取当前屏幕渲染的RenderTexture。可以通过创建一个简单的shader验证效果

用这个shader创建一个材质并付给一个球体,可以看到相机RenderTarget贴到了球面上

2.ScreenPosition节点

ScreenPosition的作用是获取当前顶点在屏幕空间的UV,可以通过创建一个简单的shader看到效果(需要设置Transparent)

用这个shader创建一个材质,赋给场景的一个球体,调整材质的参数offset,可以看到RenderTarget在球体上进行了偏移

3.Noise

SimpleNoise节点主要是对X轴进行噪音扰动

Remap节点主要是让扰动方向映射到-1到1之间,这样扰动方向向左向右就都有了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星星又凉了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值