UE5中后期描边的三种方法

UE5中后期描边的三种方法

Slience_Displace Lv1

ue常用的三种描边方法,各有优劣,一些小的要点值得记录一下

PostProcessOutLine_Theory

后期描边本质是通过UE渲染时产生的各种SceneTexture来获取模型的轮廓,在使用像素偏移产生描边效果

PostProcessOutLine_MaterialSetting

在进行描边之前,修改后期材质的渲染次序是必要的,否则会出现锯齿和颜色出错等问题

PostProcessOutLine_Normal

根据模型法线进行描边,这种方法对模型的要求很高,首先就是不能有明显接缝和法线错误,其次从效果来看他对模型尖锐部分的描边容易出现较强的锯齿和闪烁

法线显然更适合多个简单模型的统一描边,算法也相对简单,但开销不是很好

PostProcessOutLine_Depth

通过读取DepthTexture来得到模型之间的深度信息,通过if进行判断再描边,效果相比法线描边好很多,但由于算法的原因地面会出现我不想要的描边


通常可以通过减小计算时的深度差阈值来弥补和淡化,但貌似不能100%消除。对于效果来说无伤大雅

PostProcessOutLine_CustomDepth

通过自定义深度功能,赋予模型各自的深度数值,以此进行描边能避免使用DepthTexture时遇到的地面描边Bug

算法上和基于DepthTexture描边是一致的

值得注意的是UE资产默认的自定义深度均为0,需要开启RenderCustomDepyhPass并手动设置

Technical Detail

在描边过程中单次采样的像素偏移不能达到理想的效果,因此可以采用卷积采样(在算出的边缘结果上向多个方向进行偏移,以达到更好的效果),但多次采样势必会让开销变得非常庞大,通常进行四个方向的卷积采样即可

由于不同的显示窗口大小不一,使的算法在读取SceneTexture时会出现bug,导致效果出现拉伸,此时将ViewSize关联进来可以解决bug

Last

这是我学习后期描边的一个小笔记,其中依然有很多不明白的地方,欢迎大佬来指出其中的错误(虽然网站的评论功能我还没做好

上述是从月神的官方直播课学来的知识,详情参见B站视频:https://www.bilibili.com/video/BV1Pk4y1R7MN/?spm_id_from=333.337.search-card.all.click&vd_source=4e582438f10b3a0a6aea029597eb7253

  • Title: UE5中后期描边的三种方法
  • Author: Slience_Displace
  • Created at: 2023-07-01 00:00:00
  • Updated at: 2024-10-14 13:24:33
  • Link: https://mikumikudaifans.github.io/Displace.github.io/2023/07/01/UE5ppl/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments