目录
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

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

被折叠的 条评论
为什么被折叠?



