Post

UE5 描边效果

1. 自定义深度缓冲区

1.1 缓冲区

引擎将三维物体渲染到屏幕上的过程(渲染管线)中,所用到的一系列中间缓存

1.2 场景深度缓冲

储存物体上的像素到摄像机距离的缓冲区,像素距离摄像机越近,深度越浅,在编辑器对应视图中越黑

1.3 自定义深度缓冲

只有设置了 渲染自定义模板通道 选项的网格体才会在此缓冲区中拥有深度值,且深度值为手动指定值,其他未开启自定义模板并未指定深度值的物体,以及空白区域,深度值将会是一个非常大的值

使用前,需要将 项目设置-引擎-渲染-后期处理-自定义深度模板通道 设置为 启用模板

2. 理论

假设现在要对自定义深度缓冲中,一个像素周围的八个像素求和,如图(假定未设置模板深度值的像素深度值为1000,网格体设置的自定义模板值为1),当像素不在物体上时:

PixelOutMesh

当像素在物体边界上时:

PixelOnMeshBorder

当像素在网格体内部时:

PixelInsideMesh

显然,这三种情况的求和结果分别为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.