UE5 描边效果
1. 自定义深度缓冲区
1.1 缓冲区
引擎将三维物体渲染到屏幕上的过程(渲染管线)中,所用到的一系列中间缓存
1.2 场景深度缓冲
储存物体上的像素到摄像机距离的缓冲区,像素距离摄像机越近,深度越浅,在编辑器对应视图中越黑
1.3 自定义深度缓冲
只有设置了 渲染自定义模板通道 选项的网格体才会在此缓冲区中拥有深度值,且深度值为手动指定值,其他未开启自定义模板并未指定深度值的物体,以及空白区域,深度值将会是一个非常大的值
使用前,需要将 项目设置-引擎-渲染-后期处理-自定义深度模板通道 设置为 启用模板
2. 理论
假设现在要对自定义深度缓冲中,一个像素周围的八个像素求和,如图(假定未设置模板深度值的像素深度值为1000,网格体设置的自定义模板值为1),当像素不在物体上时:
当像素在物体边界上时:
当像素在网格体内部时:
显然,这三种情况的求和结果分别为8000,1007和8,将这三个数减去一个较小的常数,例如100,结果的正负性分别为正数,较小的正数和负数,由此,可以大致判断一个像素相对于物体的位置,从而,使用在物体边界和物体内部的像素,减去物体内部的像素,就可以得到物体边界上的像素
3. 实际执行
3.1 设置自定义缓冲
将 项目设置-引擎-渲染-后期处理-自定义深度模板通道 设置为 启用模板,并使需要应用描边效果的物体渲染自定义深度
3.2 Post Process Volume
在场景中添加 Post Process Volume/后期处理体积
,设置范围为无限大(可选)
3.3 后期处理材质
创建新材质,并将材质的 Material Domain
属性更改为 Post Process
,将此材质添加到 后期处理体积
属性中的 后期处理材料/PostProcess Materials
中
在此材质中,获取 Scene Textrue
并将其属性中的 Scene Texture Id
设置为 CustomDepth
以获得自定义深度信息
(待完善)
This post is licensed under CC BY 4.0 by the author.