Unity HDRP Custom Pass (Post processing) 后处理特效学习(一)总结

深入探讨Unity HDRP自定义后处理Pass,讲解如何利用Shader或C#在渲染管线中实现特效,包括获取缓冲数据、创建着色器、调试技巧及线性深度数据的获取。

目录

B站视频

B站视频,录制不易,求关注、一键三连(点赞、投币、收藏)。置顶评论内有PPT(内有优秀参考资源链接)、工程、插件、群号。

官方社区

文字版总结,编写不易,求关注、点赞。手机版阅读困难的,记得是在电脑浏览器中查看 开发者社区

原因

突然开始做分享主要2个原因。
  • 有朋友和我说Unity是不是只是手游引擎呀,UE能做的Unity能不能做呀,恰巧看到虚幻官方月神的直播讲后处理,所以就试着也录一期Unity的,证明Unity并不只是手游引擎。
  • 最近被一个Unity官方合作的知名博主up主麦扣的群里的管理员傲娇修酒z侮辱了,发现如果没有粉丝,被人侮辱的时候甚至没有人帮我说话,所以希望吸引一些愿意帮我说话的粉丝。除非麦扣把侮辱人的管理员踢掉,否则这事情永远不会揭过。
另外这可能不是最好的分享,但是绝对是最详细的分享,不会不求甚解的去分享一些一眼就能看明白的东西。

感谢

首先要感谢一下叶月葵(Hazukiaoi),没有他,无法制作这系列视频和分享。

什么是HDRP Custom Pass呢?

HDRP Custom Pass允许你注入Shader或者C#在渲染管线循环的特定的点,赋予你绘制对象、做全屏pass、读取一些摄像机缓冲(如深度、颜色、法线)的能力。

延迟渲染

月神的后处理视频中,虚幻使用的是延迟渲染管线。因此,作为对比,这里也选择的是同样使用延迟渲染的HDRP高清渲染管线。因为延迟渲染的各种缓冲数据,给了我们更多的可能性,从而可以实现后处理的各种特效。

创建HDRP Custom Pass着色器

右键->Create->Shader->HDRP->Custom Full Screen Pass,由于这里我们针对后处理,所以创建是全屏Custom Pass。

获取缓冲数据

那么,我们要如何获取各种缓冲数据呢?

获取PositionInputs数据

获取的方式在我们创建的Shader里就有这个例子。获取方式如下:
    
    
    
float depth = LoadCameraDepth ( varyings . positionCS . xy ) ; PositionInputs posInput = GetPositionInput ( varyings . positionCS . xy , _ScreenSize . zw , depth , UNITY_MATRIX_I_VP , UNITY_MATRIX_V ) ;
另外,可以从Common.hlsl中的顺着这4个函数,可以看出posInput中的positionSS就是传递进去的varyings.positionCS.xy转换成uint2。最后一个当中做了如下转换:
    
    
    
posInput . positionSS = uint2 ( positionSS ) ;
  • PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize, float deviceDepth, float4x4 invViewProjMatrix, float4x4 viewMatrix, uint2 tileCoord)
  • PositionInputs GetPo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值